From 835a7430fadbec67a27ca00f8bf488a097465fe6 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Sun, 26 Oct 2025 10:42:55 +0000 Subject: [PATCH] ## Csharp SDK Changes Detected: * `PlexApi.Butler.StartTask()`: * `request` **Changed** **Breaking** :warning: * `error` **Changed** **Breaking** :warning: * `PlexApi.Butler.StopTask()`: * `request` **Changed** **Breaking** :warning: * `error` **Changed** **Breaking** :warning: * `PlexApi.Updater.ApplyUpdates()`: * `request` **Changed** **Breaking** :warning: * `error` **Changed** **Breaking** :warning: * `PlexApi.General.GetServerInfo()`: **Added** * `PlexApi.General.GetIdentity()`: **Added** * `PlexApi.General.GetSourceConnectionInformation()`: **Added** * `PlexApi.General.GetTransientToken()`: **Added** * `PlexApi.Events.GetNotifications()`: **Added** * `PlexApi.Events.ConnectWebSocket()`: **Added** * `PlexApi.Preferences.GetAllPreferences()`: **Added** * `PlexApi.Preferences.SetPreferences()`: **Added** * `PlexApi.Preferences.GetPreference()`: **Added** * `PlexApi.Rate.SetRating()`: **Added** * `PlexApi.Timeline.MarkPlayed()`: **Added** * `PlexApi.Timeline.Report()`: **Added** * `PlexApi.Timeline.Unscrobble()`: **Added** * `PlexApi.Activities.ListActivities()`: **Added** * `PlexApi.Activities.CancelActivity()`: **Added** * `PlexApi.Butler.StopTasks()`: **Added** * `PlexApi.Butler.GetTasks()`: **Added** * `PlexApi.Butler.StartTasks()`: **Added** * `PlexApi.DownloadQueue.CreateDownloadQueue()`: **Added** * `PlexApi.DownloadQueue.GetDownloadQueue()`: **Added** * `PlexApi.DownloadQueue.AddDownloadQueueItems()`: **Added** * `PlexApi.DownloadQueue.ListDownloadQueueItems()`: **Added** * `PlexApi.DownloadQueue.GetItemDecision()`: **Added** * `PlexApi.DownloadQueue.GetDownloadQueueMedia()`: **Added** * `PlexApi.DownloadQueue.RemoveDownloadQueueItems()`: **Added** * `PlexApi.DownloadQueue.GetDownloadQueueItems()`: **Added** * `PlexApi.DownloadQueue.RestartProcessingDownloadQueueItems()`: **Added** * `PlexApi.Hubs.GetAllHubs()`: **Added** * `PlexApi.Hubs.GetContinueWatching()`: **Added** * `PlexApi.Hubs.GetHubItems()`: **Added** * `PlexApi.Hubs.GetPromotedHubs()`: **Added** * `PlexApi.Hubs.GetMetadataHubs()`: **Added** * `PlexApi.Hubs.GetPostplayHubs()`: **Added** * `PlexApi.Hubs.GetRelatedHubs()`: **Added** * `PlexApi.Hubs.GetSectionHubs()`: **Added** * `PlexApi.Hubs.ResetSectionDefaults()`: **Added** * `PlexApi.Hubs.ListHubs()`: **Added** * `PlexApi.Hubs.CreateCustomHub()`: **Added** * `PlexApi.Hubs.MoveHub()`: **Added** * `PlexApi.Hubs.DeleteCustomHub()`: **Added** * `PlexApi.Hubs.UpdateHubVisibility()`: **Added** * `PlexApi.Search.SearchHubs()`: **Added** * `PlexApi.Search.VoiceSearchHubs()`: **Added** * `PlexApi.Library.GetLibraryItems()`: **Added** * `PlexApi.Library.DeleteCaches()`: **Added** * `PlexApi.Library.CleanBundles()`: **Added** * `PlexApi.Library.IngestTransientItem()`: **Added** * `PlexApi.Library.GetLibraryMatches()`: **Added** * `PlexApi.Library.OptimizeDatabase()`: **Added** * `PlexApi.Library.GetRandomArtwork()`: **Added** * `PlexApi.Library.GetSections()`: **Added** * `PlexApi.Library.AddSection()`: **Added** * `PlexApi.Library.StopAllRefreshes()`: **Added** * `PlexApi.Library.GetSectionsPrefs()`: **Added** * `PlexApi.Library.RefreshSectionsMetadata()`: **Added** * `PlexApi.Library.GetTags()`: **Added** * `PlexApi.Library.DeleteMetadataItem()`: **Added** * `PlexApi.Library.EditMetadataItem()`: **Added** * `PlexApi.Library.DetectAds()`: **Added** * `PlexApi.Library.GetAllItemLeaves()`: **Added** * `PlexApi.Library.AnalyzeMetadata()`: **Added** * `PlexApi.Library.GenerateThumbs()`: **Added** * `PlexApi.Library.DetectCredits()`: **Added** * `PlexApi.Library.GetExtras()`: **Added** * `PlexApi.Library.AddExtras()`: **Added** * `PlexApi.Library.GetFile()`: **Added** * `PlexApi.Library.StartBifGeneration()`: **Added** * `PlexApi.Library.DetectIntros()`: **Added** * `PlexApi.Library.CreateMarker()`: **Added** * `PlexApi.Library.MatchItem()`: **Added** * `PlexApi.Library.ListMatches()`: **Added** * `PlexApi.Library.MergeItems()`: **Added** * `PlexApi.Library.ListSonicallySimilar()`: **Added** * `PlexApi.Library.SetItemPreferences()`: **Added** * `PlexApi.Library.RefreshItemsMetadata()`: **Added** * `PlexApi.Library.GetRelatedItems()`: **Added** * `PlexApi.Library.ListSimilar()`: **Added** * `PlexApi.Library.SplitItem()`: **Added** * `PlexApi.Library.AddSubtitles()`: **Added** * `PlexApi.Library.GetItemTree()`: **Added** * `PlexApi.Library.Unmatch()`: **Added** * `PlexApi.Library.ListTopUsers()`: **Added** * `PlexApi.Library.DetectVoiceActivity()`: **Added** * `PlexApi.Library.GetAugmentationStatus()`: **Added** * `PlexApi.Library.SetStreamSelection()`: **Added** * `PlexApi.Library.GetPerson()`: **Added** * `PlexApi.Library.ListPersonMedia()`: **Added** * `PlexApi.Library.DeleteLibrarySection()`: **Added** * `PlexApi.Library.GetLibraryDetails()`: **Added** * `PlexApi.Library.EditSection()`: **Added** * `PlexApi.Library.UpdateItems()`: **Added** * `PlexApi.Library.StartAnalysis()`: **Added** * `PlexApi.Library.Autocomplete()`: **Added** * `PlexApi.Library.GetCollections()`: **Added** * `PlexApi.Library.GetCommon()`: **Added** * `PlexApi.Library.EmptyTrash()`: **Added** * `PlexApi.Library.GetSectionFilters()`: **Added** * `PlexApi.Library.GetFirstCharacters()`: **Added** * `PlexApi.Library.DeleteIndexes()`: **Added** * `PlexApi.Library.DeleteIntros()`: **Added** * `PlexApi.Library.GetSectionPreferences()`: **Added** * `PlexApi.Library.SetSectionPreferences()`: **Added** * `PlexApi.Library.CancelRefresh()`: **Added** * `PlexApi.Library.RefreshSection()`: **Added** * `PlexApi.Library.GetAvailableSorts()`: **Added** * `PlexApi.Library.GetStreamLevels()`: **Added** * `PlexApi.Library.GetStreamLoudness()`: **Added** * `PlexApi.Library.GetChapterImage()`: **Added** * `PlexApi.Library.SetItemArtwork()`: **Added** * `PlexApi.Library.UpdateItemArtwork()`: **Added** * `PlexApi.Library.DeleteMarker()`: **Added** * `PlexApi.Library.EditMarker()`: **Added** * `PlexApi.Library.DeleteMediaItem()`: **Added** * `PlexApi.Library.GetPartIndex()`: **Added** * `PlexApi.Library.DeleteCollection()`: **Added** * `PlexApi.Library.GetSectionImage()`: **Added** * `PlexApi.Library.DeleteStream()`: **Added** * `PlexApi.Library.GetStream()`: **Added** * `PlexApi.Library.SetStreamOffset()`: **Added** * `PlexApi.Library.GetItemArtwork()`: **Added** * `PlexApi.Library.GetMediaPart()`: **Added** * `PlexApi.Library.GetImageFromBif()`: **Added** * `PlexApi.Collections.CreateCollection()`: **Added** * `PlexApi.DvRs.ListDvRs()`: **Added** * `PlexApi.DvRs.CreateDvr()`: **Added** * `PlexApi.DvRs.DeleteDvr()`: **Added** * `PlexApi.DvRs.GetDvr()`: **Added** * `PlexApi.DvRs.DeleteLineup()`: **Added** * `PlexApi.DvRs.AddLineup()`: **Added** * `PlexApi.DvRs.SetDvrPreferences()`: **Added** * `PlexApi.DvRs.StopDvrReload()`: **Added** * `PlexApi.DvRs.ReloadGuide()`: **Added** * `PlexApi.DvRs.TuneChannel()`: **Added** * `PlexApi.DvRs.RemoveDeviceFromDvr()`: **Added** * `PlexApi.DvRs.AddDeviceToDvr()`: **Added** * `PlexApi.Epg.ComputeChannelMap()`: **Added** * `PlexApi.Epg.GetChannels()`: **Added** * `PlexApi.Epg.GetCountries()`: **Added** * `PlexApi.Epg.GetAllLanguages()`: **Added** * `PlexApi.Epg.GetLineup()`: **Added** * `PlexApi.Epg.GetLineupChannels()`: **Added** * `PlexApi.Epg.GetCountriesLineups()`: **Added** * `PlexApi.Epg.GetCountryRegions()`: **Added** * `PlexApi.Epg.ListLineups()`: **Added** * `PlexApi.LiveTv.GetSessions()`: **Added** * `PlexApi.LiveTv.GetLiveTvSession()`: **Added** * `PlexApi.LiveTv.GetSessionPlaylistIndex()`: **Added** * `PlexApi.LiveTv.GetSessionSegment()`: **Added** * `PlexApi.Log.WriteLog()`: **Added** * `PlexApi.Log.WriteMessage()`: **Added** * `PlexApi.Log.EnablePapertrail()`: **Added** * `PlexApi.Devices.GetAvailableGrabbers()`: **Added** * `PlexApi.Devices.ListDevices()`: **Added** * `PlexApi.Devices.AddDevice()`: **Added** * `PlexApi.Devices.DiscoverDevices()`: **Added** * `PlexApi.Devices.RemoveDevice()`: **Added** * `PlexApi.Devices.GetDeviceDetails()`: **Added** * `PlexApi.Devices.ModifyDevice()`: **Added** * `PlexApi.Devices.SetChannelmap()`: **Added** * `PlexApi.Devices.GetDevicesChannels()`: **Added** * `PlexApi.Devices.SetDevicePreferences()`: **Added** * `PlexApi.Devices.StopScan()`: **Added** * `PlexApi.Devices.Scan()`: **Added** * `PlexApi.Devices.GetThumb()`: **Added** * `PlexApi.Provider.ListProviders()`: **Added** * `PlexApi.Provider.AddProvider()`: **Added** * `PlexApi.Provider.RefreshProviders()`: **Added** * `PlexApi.Provider.DeleteMediaProvider()`: **Added** * `PlexApi.Subscriptions.GetAllSubscriptions()`: **Added** * `PlexApi.Subscriptions.CreateSubscription()`: **Added** * `PlexApi.Subscriptions.ProcessSubscriptions()`: **Added** * `PlexApi.Subscriptions.GetScheduledRecordings()`: **Added** * `PlexApi.Subscriptions.GetTemplate()`: **Added** * `PlexApi.Subscriptions.CancelGrab()`: **Added** * `PlexApi.Subscriptions.DeleteSubscription()`: **Added** * `PlexApi.Subscriptions.GetSubscription()`: **Added** * `PlexApi.Subscriptions.EditSubscriptionPreferences()`: **Added** * `PlexApi.Subscriptions.ReorderSubscription()`: **Added** * `PlexApi.Transcoder.TranscodeImage()`: **Added** * `PlexApi.Transcoder.MakeDecision()`: **Added** * `PlexApi.Transcoder.TriggerFallback()`: **Added** * `PlexApi.Transcoder.TranscodeSubtitles()`: **Added** * `PlexApi.Transcoder.StartTranscodeSession()`: **Added** * `PlexApi.Playlist.ListPlaylists()`: **Added** * `PlexApi.Playlist.GetPlaylist()`: **Added** * `PlexApi.Playlist.GetPlaylistItems()`: **Added** * `PlexApi.LibraryPlaylists.CreatePlaylist()`: **Added** * `PlexApi.LibraryPlaylists.UploadPlaylist()`: **Added** * `PlexApi.LibraryPlaylists.DeletePlaylist()`: **Added** * `PlexApi.LibraryPlaylists.UpdatePlaylist()`: **Added** * `PlexApi.LibraryPlaylists.GetPlaylistGenerators()`: **Added** * `PlexApi.LibraryPlaylists.ClearPlaylistItems()`: **Added** * `PlexApi.LibraryPlaylists.AddPlaylistItems()`: **Added** * `PlexApi.LibraryPlaylists.DeletePlaylistItem()`: **Added** * `PlexApi.LibraryPlaylists.GetPlaylistGenerator()`: **Added** * `PlexApi.LibraryPlaylists.GetPlaylistGeneratorItems()`: **Added** * `PlexApi.LibraryPlaylists.MovePlaylistItem()`: **Added** * `PlexApi.LibraryPlaylists.RefreshPlaylist()`: **Added** * `PlexApi.PlayQueue.CreatePlayQueue()`: **Added** * `PlexApi.PlayQueue.GetPlayQueue()`: **Added** * `PlexApi.PlayQueue.AddToPlayQueue()`: **Added** * `PlexApi.PlayQueue.ClearPlayQueue()`: **Added** * `PlexApi.PlayQueue.ResetPlayQueue()`: **Added** * `PlexApi.PlayQueue.Shuffle()`: **Added** * `PlexApi.PlayQueue.Unshuffle()`: **Added** * `PlexApi.PlayQueue.DeletePlayQueueItem()`: **Added** * `PlexApi.PlayQueue.MovePlayQueueItem()`: **Added** * `PlexApi.UltraBlur.GetColors()`: **Added** * `PlexApi.UltraBlur.GetImage()`: **Added** * `PlexApi.Status.ListSessions()`: **Added** * `PlexApi.Status.GetBackgroundTasks()`: **Added** * `PlexApi.Status.ListPlaybackHistory()`: **Added** * `PlexApi.Status.TerminateSession()`: **Added** * `PlexApi.Status.DeleteHistory()`: **Added** * `PlexApi.Status.GetHistoryItem()`: **Added** * `PlexApi.Updater.CheckUpdates()`: **Added** * `PlexApi.Updater.GetUpdatesStatus()`: **Added** * `PlexApi.Content.GetCollectionItems()`: **Added** * `PlexApi.Content.GetMetadataItem()`: **Added** * `PlexApi.Content.GetAlbums()`: **Added** * `PlexApi.Content.ListContent()`: **Added** * `PlexApi.Content.GetAllLeaves()`: **Added** * `PlexApi.Content.GetArts()`: **Added** * `PlexApi.Content.GetCategories()`: **Added** * `PlexApi.Content.GetCluster()`: **Added** * `PlexApi.Content.GetSonicPath()`: **Added** * `PlexApi.Content.GetFolders()`: **Added** * `PlexApi.Content.ListMoments()`: **Added** * `PlexApi.Content.GetSonicallySimilar()`: **Added** * `PlexApi.Content.GetCollectionImage()`: **Added** * `PlexApi.LibraryCollections.AddCollectionItems()`: **Added** * `PlexApi.LibraryCollections.DeleteCollectionItem()`: **Added** * `PlexApi.LibraryCollections.MoveCollectionItem()`: **Added** * `PlexApi.Server.GetServerCapabilities()`: **Deleted** **Breaking** :warning: * `PlexApi.Server.GetServerPreferences()`: **Deleted** **Breaking** :warning: * `PlexApi.Server.GetAvailableClients()`: **Deleted** **Breaking** :warning: * `PlexApi.Server.GetDevices()`: **Deleted** **Breaking** :warning: * `PlexApi.Server.Get-Server-Identity()`: **Deleted** **Breaking** :warning: * `PlexApi.Server.GetMyPlexAccount()`: **Deleted** **Breaking** :warning: * `PlexApi.Server.GetResizedPhoto()`: **Deleted** **Breaking** :warning: * `PlexApi.Server.Get-Media-Providers()`: **Deleted** **Breaking** :warning: * `PlexApi.Server.GetServerList()`: **Deleted** **Breaking** :warning: * `PlexApi.Media.MarkPlayed()`: **Deleted** **Breaking** :warning: * `PlexApi.Media.MarkUnplayed()`: **Deleted** **Breaking** :warning: * `PlexApi.Media.UpdatePlayProgress()`: **Deleted** **Breaking** :warning: * `PlexApi.Media.Get-Banner-Image()`: **Deleted** **Breaking** :warning: * `PlexApi.Media.Get-Thumb-Image()`: **Deleted** **Breaking** :warning: * `PlexApi.Video.GetTimeline()`: **Deleted** **Breaking** :warning: * `PlexApi.Video.StartUniversalTranscode()`: **Deleted** **Breaking** :warning: * `PlexApi.Activities.GetServerActivities()`: **Deleted** **Breaking** :warning: * `PlexApi.Activities.CancelServerActivities()`: **Deleted** **Breaking** :warning: * `PlexApi.Butler.GetButlerTasks()`: **Deleted** **Breaking** :warning: * `PlexApi.Butler.StartAllTasks()`: **Deleted** **Breaking** :warning: * `PlexApi.Butler.StopAllTasks()`: **Deleted** **Breaking** :warning: * `PlexApi.Plex.GetCompanionsData()`: **Deleted** **Breaking** :warning: * `PlexApi.Plex.GetUserFriends()`: **Deleted** **Breaking** :warning: * `PlexApi.Plex.GetGeoData()`: **Deleted** **Breaking** :warning: * `PlexApi.Plex.GetHomeData()`: **Deleted** **Breaking** :warning: * `PlexApi.Plex.Get-Server-Resources()`: **Deleted** **Breaking** :warning: * `PlexApi.Plex.GetPin()`: **Deleted** **Breaking** :warning: * `PlexApi.Plex.GetTokenByPinId()`: **Deleted** **Breaking** :warning: * `PlexApi.Hubs.GetGlobalHubs()`: **Deleted** **Breaking** :warning: * `PlexApi.Hubs.Get-Recently-Added()`: **Deleted** **Breaking** :warning: * `PlexApi.Hubs.GetLibraryHubs()`: **Deleted** **Breaking** :warning: * `PlexApi.Search.PerformSearch()`: **Deleted** **Breaking** :warning: * `PlexApi.Search.PerformVoiceSearch()`: **Deleted** **Breaking** :warning: * `PlexApi.Search.GetSearchResults()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.GetFileHash()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Recently-Added-Library()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-All-Libraries()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Library-Details()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.DeleteLibrary()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Library-Items()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Library-Sections-All()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Refresh-Library-Metadata()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Search-Library()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Genres-Library()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Countries-Library()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Actors-Library()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Search-All-Libraries()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Media-Meta-Data()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Media-Arts()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Post-Media-Arts()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Get-Media-Posters()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.Post-Media-Poster()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.GetMetadataChildren()`: **Deleted** **Breaking** :warning: * `PlexApi.Library.GetTopWatchedContent()`: **Deleted** **Breaking** :warning: * `PlexApi.Watchlist.Get-Watch-List()`: **Deleted** **Breaking** :warning: * `PlexApi.Log.LogLine()`: **Deleted** **Breaking** :warning: * `PlexApi.Log.LogMultiLine()`: **Deleted** **Breaking** :warning: * `PlexApi.Log.EnablePaperTrail()`: **Deleted** **Breaking** :warning: * `PlexApi.Playlists.CreatePlaylist()`: **Deleted** **Breaking** :warning: * `PlexApi.Playlists.GetPlaylists()`: **Deleted** **Breaking** :warning: * `PlexApi.Playlists.GetPlaylist()`: **Deleted** **Breaking** :warning: * `PlexApi.Playlists.DeletePlaylist()`: **Deleted** **Breaking** :warning: * `PlexApi.Playlists.UpdatePlaylist()`: **Deleted** **Breaking** :warning: * `PlexApi.Playlists.GetPlaylistContents()`: **Deleted** **Breaking** :warning: * `PlexApi.Playlists.ClearPlaylistContents()`: **Deleted** **Breaking** :warning: * `PlexApi.Playlists.AddPlaylistContents()`: **Deleted** **Breaking** :warning: * `PlexApi.Playlists.UploadPlaylist()`: **Deleted** **Breaking** :warning: * `PlexApi.Authentication.GetTransientToken()`: **Deleted** **Breaking** :warning: * `PlexApi.Authentication.GetSourceConnectionInformation()`: **Deleted** **Breaking** :warning: * `PlexApi.Authentication.GetTokenDetails()`: **Deleted** **Breaking** :warning: * `PlexApi.Authentication.Post-Users-Sign-In-Data()`: **Deleted** **Breaking** :warning: * `PlexApi.Statistics.GetStatistics()`: **Deleted** **Breaking** :warning: * `PlexApi.Statistics.GetResourcesStatistics()`: **Deleted** **Breaking** :warning: * `PlexApi.Statistics.GetBandwidthStatistics()`: **Deleted** **Breaking** :warning: * `PlexApi.Sessions.GetSessions()`: **Deleted** **Breaking** :warning: * `PlexApi.Sessions.GetSessionHistory()`: **Deleted** **Breaking** :warning: * `PlexApi.Sessions.GetTranscodeSessions()`: **Deleted** **Breaking** :warning: * `PlexApi.Sessions.StopTranscodeSession()`: **Deleted** **Breaking** :warning: * `PlexApi.Updater.GetUpdateStatus()`: **Deleted** **Breaking** :warning: * `PlexApi.Updater.CheckForUpdates()`: **Deleted** **Breaking** :warning: * `PlexApi.Users.Get-Users()`: **Deleted** **Breaking** :warning: --- .speakeasy/gen.lock | 7623 ++++++++++---- .speakeasy/gen.yaml | 6 +- .speakeasy/workflow.lock | 19 +- LukeHagar/PlexAPI/SDK/Activities.cs | 167 +- LukeHagar/PlexAPI/SDK/Authentication.cs | 614 -- LukeHagar/PlexAPI/SDK/Butler.cs | 631 +- LukeHagar/PlexAPI/SDK/Collections.cs | 162 + LukeHagar/PlexAPI/SDK/Content.cs | 1519 +++ LukeHagar/PlexAPI/SDK/DVRs.cs | 1350 +++ LukeHagar/PlexAPI/SDK/Devices.cs | 1537 +++ LukeHagar/PlexAPI/SDK/DownloadQueue.cs | 1032 ++ LukeHagar/PlexAPI/SDK/Epg.cs | 1032 ++ LukeHagar/PlexAPI/SDK/Events.cs | 257 + LukeHagar/PlexAPI/SDK/General.cs | 481 + LukeHagar/PlexAPI/SDK/Hooks/SDKHooks.cs | 10 +- LukeHagar/PlexAPI/SDK/Hubs.cs | 1340 ++- LukeHagar/PlexAPI/SDK/Library.cs | 8950 +++++++++++++---- LukeHagar/PlexAPI/SDK/LibraryCollections.cs | 390 + LukeHagar/PlexAPI/SDK/LibraryPlaylists.cs | 1336 +++ LukeHagar/PlexAPI/SDK/LiveTV.cs | 460 + LukeHagar/PlexAPI/SDK/Log.cs | 376 +- .../PlexAPI/SDK/LukeHagar.PlexAPI.SDK.csproj | 27 +- LukeHagar/PlexAPI/SDK/Media.cs | 692 -- .../PlexAPI/SDK/Models/Components/Accepts.cs | 57 + .../Models/Components/AdvancedSubtitles.cs | 59 + .../SDK/Models/Components/AiringsType.cs | 57 + .../PlexAPI/SDK/Models/Components/BoolInt.cs | 20 + .../PlexAPI/SDK/Models/Components/Channel.cs | 42 + .../SDK/Models/Components/ChannelMapping.cs | 30 + .../SDK/Models/Components/Composite.cs | 84 + .../SDK/Models/Components/CompositeMedia.cs | 62 + .../PlexAPI/SDK/Models/Components/Crop.cs | 60 + .../PlexAPI/SDK/Models/Components/Decision.cs | 59 + .../PlexAPI/SDK/Models/Components/Default.cs | 207 + .../DefaultDirection.cs | 12 +- .../PlexAPI/SDK/Models/Components/Device.cs | 59 + .../SDK/Models/Components/Directory.cs | 68 + .../PlexAPI/SDK/Models/Components/Dvr.cs | 35 + .../DvrRequestHandlerSlashGetResponses200.cs | 25 + ...ndlerSlashGetResponses200MediaContainer.cs | 26 + ...esponses200MediaContainerMediaContainer.cs | 59 + .../PlexAPI/SDK/Models/Components/Filter.cs | 90 + .../SDK/Models/Components/FilterPivot.cs | 36 + .../PlexAPI/SDK/Models/Components/Format.cs | 60 + .../SDK/Models/Components/GetResponses200.cs | 25 + .../Models/Components/GetResponses200Hub.cs | 77 + .../GetResponses200MediaContainer.cs | 58 + .../Components/HistoryAllGetResponses200.cs | 25 + ...HistoryAllGetResponses200MediaContainer.cs | 58 + .../HistoryAllGetResponses200Metadata.cs | 84 + .../SDK/Models/Components/HomeVisibility.cs | 72 + .../PlexAPI/SDK/Models/Components/Hub.cs | 103 + .../PlexAPI/SDK/Models/Components/Image.cs | 44 + .../SDK/Models/Components/ImageType.cs | 66 + .../PlexAPI/SDK/Models/Components/Items.cs | 409 + .../SDK/Models/Components/LibrarySection.cs | 86 + .../Components/LibrarySectionLocation.cs | 30 + .../PlexAPI/SDK/Models/Components/Lineup.cs | 52 + .../SDK/Models/Components/LineupType.cs | 36 + .../PlexAPI/SDK/Models/Components/Location.cs | 59 + .../PlexAPI/SDK/Models/Components/Media.cs | 84 + .../SDK/Models/Components/MediaContainer.cs | 53 + .../Components/MediaContainerWithArtwork.cs | 22 + ...MediaContainerWithArtworkMediaContainer.cs | 58 + .../MediaContainerWithArtworkMetadata.cs | 38 + .../MediaContainerWithArtworkType.cs | 55 + .../Components/MediaContainerWithDecision.cs | 31 + .../MediaContainerWithDecisionDecision.cs | 65 + .../MediaContainerWithDecisionLocation.cs | 69 + .../MediaContainerWithDecisionMedia.cs | 93 + ...ediaContainerWithDecisionMediaContainer.cs | 97 + .../MediaContainerWithDecisionMetadata.cs | 406 + .../MediaContainerWithDecisionPart.cs | 84 + .../MediaContainerWithDecisionStream.cs | 144 + .../Components/MediaContainerWithDevice.cs | 22 + .../MediaContainerWithDeviceDevice.cs | 59 + .../MediaContainerWithDeviceMediaContainer.cs | 58 + .../Components/MediaContainerWithDirectory.cs | 22 + ...diaContainerWithDirectoryMediaContainer.cs | 58 + .../Components/MediaContainerWithHubs.cs | 25 + .../MediaContainerWithHubsMediaContainer.cs | 58 + .../Components/MediaContainerWithLineup.cs | 22 + .../MediaContainerWithLineupMediaContainer.cs | 64 + .../Components/MediaContainerWithMetadata.cs | 22 + ...ediaContainerWithMetadataMediaContainer.cs | 58 + .../MediaContainerWithNestedMetadata.cs | 22 + ...ntainerWithNestedMetadataMediaContainer.cs | 58 + .../MediaContainerWithPlaylistMetadata.cs | 22 + ...ainerWithPlaylistMetadataMediaContainer.cs | 58 + ...iaContainerWithPlaylistMetadataMetadata.cs | 430 + .../Components/MediaContainerWithSettings.cs | 22 + ...ediaContainerWithSettingsMediaContainer.cs | 58 + .../MediaContainerWithSubscription.cs | 22 + ...ContainerWithSubscriptionMediaContainer.cs | 58 + .../Models/Components/MediaGrabOperation.cs | 70 + .../SDK/Models/Components/MediaQuery.cs | 17 + .../Models/Components/MediaSubscription.cs | 99 + .../PlexAPI/SDK/Models/Components/Metadata.cs | 406 + .../SDK/Models/Components/MetadataItem.cs | 409 + .../PlexAPI/SDK/Models/Components/Part.cs | 78 + .../Models/{Requests => Components}/Pivot.cs | 20 +- .../PlexAPI/SDK/Models/Components/Player.cs | 111 + .../SDK/Models/Components/PlaylistType.cs | 62 + .../SDK/Models/Components/PostResponses200.cs | 25 + .../PostResponses200MediaContainer.cs | 76 + .../Models/Components/PostResponses200Type.cs | 63 + .../PlexAPI/SDK/Models/Components/Protocol.cs | 59 + .../Components/RecommendationsVisibility.cs | 72 + .../RequestHandlerSlashGetResponses200.cs | 25 + ...estHandlerSlashGetResponses200Directory.cs | 30 + ...ndlerSlashGetResponses200MediaContainer.cs | 211 + .../PlexAPI/SDK/Models/Components/Security.cs | 2 +- .../PlexAPI/SDK/Models/Components/Session.cs | 40 + .../SDK/Models/Components/SessionLocation.cs | 60 + .../PlexAPI/SDK/Models/Components/Setting.cs | 82 + .../Models/Components/SlashGetResponses200.cs | 25 + .../SlashGetResponses200MediaContainer.cs | 71 + .../PlexAPI/SDK/Models/Components/Sort.cs | 105 + .../SDK/Models/Components/SortDefault.cs | 60 + .../SDK/Models/Components/SortPivot.cs | 36 + .../PlexAPI/SDK/Models/Components/Status.cs | 69 + .../PlexAPI/SDK/Models/Components/Stream.cs | 137 + .../SDK/Models/Components/Subtitles.cs | 67 + .../PlexAPI/SDK/Models/Components/Tag.cs | 70 + .../SDK/Models/Components/TranscodeSession.cs | 63 + .../SDK/Models/Components/TranscodeType.cs | 61 + .../PlexAPI/SDK/Models/Components/Type.cs | 64 + .../PlexAPI/SDK/Models/Components/User.cs | 39 + .../PlexAPI/SDK/Models/Components/Value.cs | 207 + .../Errors/AddPlaylistContentsBadRequest.cs | 58 - .../Errors/AddPlaylistContentsErrors.cs | 27 - .../AddPlaylistContentsPlaylistsErrors.cs | 27 - .../Errors/AddPlaylistContentsUnauthorized.cs | 58 - .../Models/Errors/ApplyUpdatesBadRequest.cs | 58 - .../SDK/Models/Errors/ApplyUpdatesErrors.cs | 27 - .../Models/Errors/ApplyUpdatesUnauthorized.cs | 58 - .../Errors/ApplyUpdatesUpdaterErrors.cs | 27 - .../CancelServerActivitiesActivitiesErrors.cs | 27 - .../CancelServerActivitiesBadRequest.cs | 58 - .../Errors/CancelServerActivitiesErrors.cs | 27 - .../CancelServerActivitiesUnauthorized.cs | 58 - .../Errors/CheckForUpdatesBadRequest.cs | 58 - .../Models/Errors/CheckForUpdatesErrors.cs | 27 - .../Errors/CheckForUpdatesUnauthorized.cs | 58 - .../Errors/CheckForUpdatesUpdaterErrors.cs | 27 - .../Errors/ClearPlaylistContentsBadRequest.cs | 58 - .../Errors/ClearPlaylistContentsErrors.cs | 27 - .../ClearPlaylistContentsPlaylistsErrors.cs | 27 - .../ClearPlaylistContentsUnauthorized.cs | 58 - .../Models/Errors/CreatePlaylistBadRequest.cs | 58 - .../SDK/Models/Errors/CreatePlaylistErrors.cs | 27 - .../Errors/CreatePlaylistPlaylistsErrors.cs | 27 - .../Errors/CreatePlaylistUnauthorized.cs | 58 - .../Models/Errors/DeleteLibraryBadRequest.cs | 58 - .../SDK/Models/Errors/DeleteLibraryErrors.cs | 27 - .../Errors/DeleteLibraryLibraryErrors.cs | 27 - .../Errors/DeleteLibraryUnauthorized.cs | 58 - .../Models/Errors/DeletePlaylistBadRequest.cs | 58 - .../SDK/Models/Errors/DeletePlaylistErrors.cs | 27 - .../Errors/DeletePlaylistPlaylistsErrors.cs | 27 - .../Errors/DeletePlaylistUnauthorized.cs | 58 - .../Errors/EnablePaperTrailBadRequest.cs | 58 - .../Models/Errors/EnablePaperTrailErrors.cs | 27 - .../Errors/EnablePaperTrailLogErrors.cs | 27 - .../Errors/EnablePaperTrailUnauthorized.cs | 58 - LukeHagar/PlexAPI/SDK/Models/Errors/Errors.cs | 27 - .../Errors/GetActorsLibraryBadRequest.cs | 58 - .../Models/Errors/GetActorsLibraryErrors.cs | 27 - .../Errors/GetActorsLibraryLibraryErrors.cs | 27 - .../Errors/GetActorsLibraryUnauthorized.cs | 58 - .../Errors/GetAllLibrariesBadRequest.cs | 58 - .../Models/Errors/GetAllLibrariesErrors.cs | 27 - .../Errors/GetAllLibrariesLibraryErrors.cs | 27 - .../Errors/GetAllLibrariesUnauthorized.cs | 58 - .../Errors/GetAvailableClientsBadRequest.cs | 58 - .../Errors/GetAvailableClientsErrors.cs | 27 - .../Errors/GetAvailableClientsServerErrors.cs | 27 - .../Errors/GetAvailableClientsUnauthorized.cs | 58 - .../GetBandwidthStatisticsBadRequest.cs | 58 - .../Errors/GetBandwidthStatisticsErrors.cs | 27 - .../GetBandwidthStatisticsStatisticsErrors.cs | 27 - .../GetBandwidthStatisticsUnauthorized.cs | 58 - .../Models/Errors/GetBannerImageBadRequest.cs | 58 - .../SDK/Models/Errors/GetBannerImageErrors.cs | 27 - .../Errors/GetBannerImageMediaErrors.cs | 27 - .../Errors/GetBannerImageUnauthorized.cs | 58 - .../Models/Errors/GetButlerTasksBadRequest.cs | 58 - .../Errors/GetButlerTasksButlerErrors.cs | 27 - .../SDK/Models/Errors/GetButlerTasksErrors.cs | 27 - .../Errors/GetButlerTasksUnauthorized.cs | 58 - .../Errors/GetCompanionsDataBadRequest.cs | 58 - .../Models/Errors/GetCompanionsDataErrors.cs | 27 - .../Errors/GetCompanionsDataPlexErrors.cs | 27 - .../Errors/GetCompanionsDataUnauthorized.cs | 58 - .../Errors/GetCountriesLibraryBadRequest.cs | 58 - .../Errors/GetCountriesLibraryErrors.cs | 27 - .../GetCountriesLibraryLibraryErrors.cs | 27 - .../Errors/GetCountriesLibraryUnauthorized.cs | 58 - .../SDK/Models/Errors/GetDevicesBadRequest.cs | 58 - .../SDK/Models/Errors/GetDevicesErrors.cs | 27 - .../Models/Errors/GetDevicesServerErrors.cs | 27 - .../Models/Errors/GetDevicesUnauthorized.cs | 58 - .../Models/Errors/GetFileHashBadRequest.cs | 58 - .../SDK/Models/Errors/GetFileHashErrors.cs | 27 - .../Models/Errors/GetFileHashLibraryErrors.cs | 27 - .../Models/Errors/GetFileHashUnauthorized.cs | 58 - .../Errors/GetGenresLibraryBadRequest.cs | 58 - .../Models/Errors/GetGenresLibraryErrors.cs | 27 - .../Errors/GetGenresLibraryLibraryErrors.cs | 27 - .../Errors/GetGenresLibraryUnauthorized.cs | 58 - .../SDK/Models/Errors/GetGeoDataBadRequest.cs | 58 - .../SDK/Models/Errors/GetGeoDataErrors.cs | 27 - .../SDK/Models/Errors/GetGeoDataPlexErrors.cs | 27 - .../Models/Errors/GetGeoDataUnauthorized.cs | 58 - .../Models/Errors/GetGlobalHubsBadRequest.cs | 58 - .../SDK/Models/Errors/GetGlobalHubsErrors.cs | 27 - .../Models/Errors/GetGlobalHubsHubsErrors.cs | 27 - .../Errors/GetGlobalHubsUnauthorized.cs | 58 - .../Models/Errors/GetHomeDataBadRequest.cs | 58 - .../SDK/Models/Errors/GetHomeDataErrors.cs | 27 - .../Models/Errors/GetHomeDataPlexErrors.cs | 27 - .../Models/Errors/GetHomeDataUnauthorized.cs | 58 - .../Errors/GetLibraryDetailsBadRequest.cs | 58 - .../Models/Errors/GetLibraryDetailsErrors.cs | 27 - .../Errors/GetLibraryDetailsLibraryErrors.cs | 27 - .../Errors/GetLibraryDetailsUnauthorized.cs | 58 - .../Models/Errors/GetLibraryHubsBadRequest.cs | 58 - .../SDK/Models/Errors/GetLibraryHubsErrors.cs | 27 - .../Models/Errors/GetLibraryHubsHubsErrors.cs | 27 - .../Errors/GetLibraryHubsUnauthorized.cs | 58 - .../Errors/GetLibraryItemsBadRequest.cs | 58 - .../Models/Errors/GetLibraryItemsErrors.cs | 27 - .../Errors/GetLibraryItemsLibraryErrors.cs | 27 - .../Errors/GetLibraryItemsUnauthorized.cs | 58 - .../Errors/GetLibrarySectionsAllBadRequest.cs | 58 - .../Errors/GetLibrarySectionsAllErrors.cs | 27 - .../GetLibrarySectionsAllLibraryErrors.cs | 27 - .../GetLibrarySectionsAllUnauthorized.cs | 58 - .../Errors/GetMediaMetaDataBadRequest.cs | 58 - .../Models/Errors/GetMediaMetaDataErrors.cs | 27 - .../Errors/GetMediaMetaDataLibraryErrors.cs | 27 - .../Errors/GetMediaMetaDataUnauthorized.cs | 58 - .../Errors/GetMediaProvidersBadRequest.cs | 58 - .../Models/Errors/GetMediaProvidersErrors.cs | 27 - .../Errors/GetMediaProvidersServerErrors.cs | 27 - .../Errors/GetMediaProvidersUnauthorized.cs | 58 - .../Errors/GetMetadataChildrenBadRequest.cs | 58 - .../Errors/GetMetadataChildrenErrors.cs | 27 - .../GetMetadataChildrenLibraryErrors.cs | 27 - .../Errors/GetMetadataChildrenUnauthorized.cs | 58 - .../Errors/GetMyPlexAccountBadRequest.cs | 58 - .../Models/Errors/GetMyPlexAccountErrors.cs | 27 - .../Errors/GetMyPlexAccountServerErrors.cs | 27 - .../Errors/GetMyPlexAccountUnauthorized.cs | 58 - .../SDK/Models/Errors/GetPinBadRequest.cs | 58 - .../PlexAPI/SDK/Models/Errors/GetPinErrors.cs | 27 - .../Models/Errors/GetPlaylistBadRequest.cs | 58 - .../Errors/GetPlaylistContentsBadRequest.cs | 58 - .../Errors/GetPlaylistContentsErrors.cs | 27 - .../GetPlaylistContentsPlaylistsErrors.cs | 27 - .../Errors/GetPlaylistContentsUnauthorized.cs | 58 - .../SDK/Models/Errors/GetPlaylistErrors.cs | 27 - .../Errors/GetPlaylistPlaylistsErrors.cs | 27 - .../Models/Errors/GetPlaylistUnauthorized.cs | 58 - .../Models/Errors/GetPlaylistsBadRequest.cs | 58 - .../SDK/Models/Errors/GetPlaylistsErrors.cs | 27 - .../Errors/GetPlaylistsPlaylistsErrors.cs | 27 - .../Models/Errors/GetPlaylistsUnauthorized.cs | 58 - .../GetRecentlyAddedLibraryBadRequest.cs | 58 - .../Errors/GetRecentlyAddedLibraryErrors.cs | 27 - .../GetRecentlyAddedLibraryLibraryErrors.cs | 27 - .../GetRecentlyAddedLibraryUnauthorized.cs | 58 - .../GetRefreshLibraryMetadataBadRequest.cs | 58 - .../Errors/GetRefreshLibraryMetadataErrors.cs | 27 - .../GetRefreshLibraryMetadataLibraryErrors.cs | 27 - .../GetRefreshLibraryMetadataUnauthorized.cs | 58 - .../Errors/GetResizedPhotoBadRequest.cs | 58 - .../Models/Errors/GetResizedPhotoErrors.cs | 27 - .../Errors/GetResizedPhotoServerErrors.cs | 27 - .../Errors/GetResizedPhotoUnauthorized.cs | 58 - .../GetResourcesStatisticsBadRequest.cs | 58 - .../Errors/GetResourcesStatisticsErrors.cs | 27 - .../GetResourcesStatisticsStatisticsErrors.cs | 27 - .../GetResourcesStatisticsUnauthorized.cs | 58 - .../Errors/GetSearchAllLibrariesBadRequest.cs | 58 - .../Errors/GetSearchAllLibrariesErrors.cs | 27 - .../GetSearchAllLibrariesLibraryErrors.cs | 27 - .../GetSearchAllLibrariesUnauthorized.cs | 58 - .../Errors/GetSearchLibraryBadRequest.cs | 58 - .../Models/Errors/GetSearchLibraryErrors.cs | 27 - .../Errors/GetSearchLibraryLibraryErrors.cs | 27 - .../Errors/GetSearchLibraryUnauthorized.cs | 58 - .../Errors/GetSearchResultsBadRequest.cs | 58 - .../Models/Errors/GetSearchResultsErrors.cs | 27 - .../Errors/GetSearchResultsSearchErrors.cs | 27 - .../Errors/GetSearchResultsUnauthorized.cs | 58 - .../GetServerActivitiesActivitiesErrors.cs | 27 - .../Errors/GetServerActivitiesBadRequest.cs | 58 - .../Errors/GetServerActivitiesErrors.cs | 27 - .../Errors/GetServerActivitiesUnauthorized.cs | 58 - .../Errors/GetServerCapabilitiesBadRequest.cs | 58 - .../Errors/GetServerCapabilitiesErrors.cs | 27 - .../GetServerCapabilitiesUnauthorized.cs | 58 - .../Errors/GetServerIdentityRequestTimeout.cs | 74 - .../Models/Errors/GetServerListBadRequest.cs | 58 - .../SDK/Models/Errors/GetServerListErrors.cs | 27 - .../Errors/GetServerListServerErrors.cs | 27 - .../Errors/GetServerListUnauthorized.cs | 58 - .../Errors/GetServerPreferencesBadRequest.cs | 58 - .../Errors/GetServerPreferencesErrors.cs | 27 - .../GetServerPreferencesServerErrors.cs | 27 - .../GetServerPreferencesUnauthorized.cs | 58 - .../Errors/GetServerResourcesBadRequest.cs | 58 - .../Models/Errors/GetServerResourcesErrors.cs | 27 - .../Errors/GetServerResourcesPlexErrors.cs | 27 - .../Errors/GetServerResourcesUnauthorized.cs | 58 - .../Errors/GetSessionHistoryBadRequest.cs | 58 - .../Models/Errors/GetSessionHistoryErrors.cs | 27 - .../Errors/GetSessionHistorySessionsErrors.cs | 27 - .../Errors/GetSessionHistoryUnauthorized.cs | 58 - .../Models/Errors/GetSessionsBadRequest.cs | 58 - .../SDK/Models/Errors/GetSessionsErrors.cs | 27 - .../Errors/GetSessionsSessionsErrors.cs | 27 - .../Models/Errors/GetSessionsUnauthorized.cs | 58 - ...nnectionInformationAuthenticationErrors.cs | 27 - ...etSourceConnectionInformationBadRequest.cs | 58 - .../GetSourceConnectionInformationErrors.cs | 27 - ...SourceConnectionInformationUnauthorized.cs | 58 - .../Models/Errors/GetStatisticsBadRequest.cs | 58 - .../SDK/Models/Errors/GetStatisticsErrors.cs | 27 - .../Errors/GetStatisticsStatisticsErrors.cs | 27 - .../Errors/GetStatisticsUnauthorized.cs | 58 - .../Models/Errors/GetThumbImageBadRequest.cs | 58 - .../SDK/Models/Errors/GetThumbImageErrors.cs | 27 - .../Models/Errors/GetThumbImageMediaErrors.cs | 27 - .../Errors/GetThumbImageUnauthorized.cs | 58 - .../Models/Errors/GetTimelineBadRequest.cs | 58 - .../SDK/Models/Errors/GetTimelineErrors.cs | 27 - .../Models/Errors/GetTimelineUnauthorized.cs | 58 - .../Models/Errors/GetTimelineVideoErrors.cs | 27 - .../Errors/GetTokenByPinIdBadRequest.cs | 58 - .../Models/Errors/GetTokenByPinIdErrors.cs | 27 - .../Errors/GetTokenByPinIdPlexErrors.cs | 24 - .../Errors/GetTokenByPinIdResponseBody.cs | 58 - .../GetTokenDetailsAuthenticationErrors.cs | 27 - .../Errors/GetTokenDetailsBadRequest.cs | 58 - .../Models/Errors/GetTokenDetailsErrors.cs | 27 - .../Errors/GetTokenDetailsUnauthorized.cs | 58 - .../Errors/GetTopWatchedContentBadRequest.cs | 58 - .../Errors/GetTopWatchedContentErrors.cs | 27 - .../GetTopWatchedContentLibraryErrors.cs | 27 - .../GetTopWatchedContentUnauthorized.cs | 58 - .../Errors/GetTranscodeSessionsBadRequest.cs | 58 - .../Errors/GetTranscodeSessionsErrors.cs | 27 - .../GetTranscodeSessionsSessionsErrors.cs | 27 - .../GetTranscodeSessionsUnauthorized.cs | 58 - .../GetTransientTokenAuthenticationErrors.cs | 27 - .../Errors/GetTransientTokenBadRequest.cs | 58 - .../Models/Errors/GetTransientTokenErrors.cs | 27 - .../Errors/GetTransientTokenUnauthorized.cs | 58 - .../Errors/GetUpdateStatusBadRequest.cs | 58 - .../Models/Errors/GetUpdateStatusErrors.cs | 27 - .../Errors/GetUpdateStatusUnauthorized.cs | 58 - .../Errors/GetUpdateStatusUpdaterErrors.cs | 27 - .../Models/Errors/GetUserFriendsBadRequest.cs | 58 - .../SDK/Models/Errors/GetUserFriendsErrors.cs | 27 - .../Models/Errors/GetUserFriendsPlexErrors.cs | 27 - .../Errors/GetUserFriendsUnauthorized.cs | 58 - .../SDK/Models/Errors/GetUsersBadRequest.cs | 58 - .../SDK/Models/Errors/GetUsersErrors.cs | 27 - .../SDK/Models/Errors/GetUsersUnauthorized.cs | 58 - .../SDK/Models/Errors/GetUsersUsersErrors.cs | 27 - .../Models/Errors/GetWatchListBadRequest.cs | 58 - .../SDK/Models/Errors/GetWatchListErrors.cs | 27 - .../Models/Errors/GetWatchListUnauthorized.cs | 58 - .../Errors/GetWatchListWatchlistErrors.cs | 27 - .../SDK/Models/Errors/LogLineBadRequest.cs | 58 - .../SDK/Models/Errors/LogLineErrors.cs | 27 - .../SDK/Models/Errors/LogLineLogErrors.cs | 27 - .../SDK/Models/Errors/LogLineUnauthorized.cs | 58 - .../Models/Errors/LogMultiLineBadRequest.cs | 58 - .../SDK/Models/Errors/LogMultiLineErrors.cs | 27 - .../Models/Errors/LogMultiLineLogErrors.cs | 27 - .../Models/Errors/LogMultiLineUnauthorized.cs | 58 - .../SDK/Models/Errors/MarkPlayedBadRequest.cs | 58 - .../SDK/Models/Errors/MarkPlayedErrors.cs | 27 - .../Models/Errors/MarkPlayedMediaErrors.cs | 27 - .../Models/Errors/MarkPlayedUnauthorized.cs | 58 - .../Models/Errors/MarkUnplayedBadRequest.cs | 58 - .../SDK/Models/Errors/MarkUnplayedErrors.cs | 27 - .../Models/Errors/MarkUnplayedMediaErrors.cs | 27 - .../Models/Errors/MarkUnplayedUnauthorized.cs | 58 - .../Models/Errors/PerformSearchBadRequest.cs | 58 - .../SDK/Models/Errors/PerformSearchErrors.cs | 27 - .../Errors/PerformSearchSearchErrors.cs | 27 - .../Errors/PerformSearchUnauthorized.cs | 58 - .../Errors/PerformVoiceSearchBadRequest.cs | 58 - .../Models/Errors/PerformVoiceSearchErrors.cs | 27 - .../Errors/PerformVoiceSearchSearchErrors.cs | 27 - .../Errors/PerformVoiceSearchUnauthorized.cs | 58 - ...PostUsersSignInDataAuthenticationErrors.cs | 27 - .../Errors/PostUsersSignInDataBadRequest.cs | 58 - .../Errors/PostUsersSignInDataErrors.cs | 27 - .../Errors/PostUsersSignInDataUnauthorized.cs | 58 - .../Models/Errors/StartAllTasksBadRequest.cs | 58 - .../Errors/StartAllTasksButlerErrors.cs | 27 - .../SDK/Models/Errors/StartAllTasksErrors.cs | 27 - .../Errors/StartAllTasksUnauthorized.cs | 58 - .../SDK/Models/Errors/StartTaskBadRequest.cs | 58 - .../Models/Errors/StartTaskButlerErrors.cs | 27 - .../SDK/Models/Errors/StartTaskErrors.cs | 27 - .../Models/Errors/StartTaskUnauthorized.cs | 58 - .../StartUniversalTranscodeBadRequest.cs | 58 - .../Errors/StartUniversalTranscodeErrors.cs | 27 - .../StartUniversalTranscodeUnauthorized.cs | 58 - .../StartUniversalTranscodeVideoErrors.cs | 27 - .../Models/Errors/StopAllTasksBadRequest.cs | 58 - .../Models/Errors/StopAllTasksButlerErrors.cs | 27 - .../SDK/Models/Errors/StopAllTasksErrors.cs | 27 - .../Models/Errors/StopAllTasksUnauthorized.cs | 58 - .../SDK/Models/Errors/StopTaskBadRequest.cs | 58 - .../SDK/Models/Errors/StopTaskButlerErrors.cs | 27 - .../SDK/Models/Errors/StopTaskErrors.cs | 27 - .../SDK/Models/Errors/StopTaskUnauthorized.cs | 58 - .../Errors/StopTranscodeSessionBadRequest.cs | 58 - .../Errors/StopTranscodeSessionErrors.cs | 27 - .../StopTranscodeSessionSessionsErrors.cs | 27 - .../StopTranscodeSessionUnauthorized.cs | 58 - .../Errors/UpdatePlayProgressBadRequest.cs | 58 - .../Models/Errors/UpdatePlayProgressErrors.cs | 27 - .../Errors/UpdatePlayProgressMediaErrors.cs | 27 - .../Errors/UpdatePlayProgressUnauthorized.cs | 58 - .../Models/Errors/UpdatePlaylistBadRequest.cs | 58 - .../SDK/Models/Errors/UpdatePlaylistErrors.cs | 27 - .../Errors/UpdatePlaylistPlaylistsErrors.cs | 27 - .../Errors/UpdatePlaylistUnauthorized.cs | 58 - .../Models/Errors/UploadPlaylistBadRequest.cs | 58 - .../SDK/Models/Errors/UploadPlaylistErrors.cs | 27 - .../Errors/UploadPlaylistPlaylistsErrors.cs | 27 - .../Errors/UploadPlaylistUnauthorized.cs | 58 - .../PlexAPI/SDK/Models/Requests/Account.cs | 26 +- .../PlexAPI/SDK/Models/Requests/Action.cs | 52 +- .../SDK/Models/Requests/ActiveDirection.cs | 64 - .../PlexAPI/SDK/Models/Requests/Activity.cs | 64 +- .../Requests/AddCollectionItemsRequest.cs | 96 + .../Requests/AddCollectionItemsResponse.cs | 40 + .../SDK/Models/Requests/AddDeviceRequest.cs | 90 + .../SDK/Models/Requests/AddDeviceResponse.cs | 40 + .../SDK/Models/Requests/AddDeviceToDVRDVR.cs | 35 + .../AddDeviceToDVRDVRsMediaContainer.cs | 59 + .../Requests/AddDeviceToDVRMediaContainer.cs | 26 + .../Models/Requests/AddDeviceToDVRRequest.cs | 96 + .../Models/Requests/AddDeviceToDVRResponse.cs | 43 + .../Requests/AddDeviceToDVRResponseBody.cs | 25 + .../AddDownloadQueueItemsMediaContainer.cs | 58 + .../Requests/AddDownloadQueueItemsRequest.cs | 265 + .../Requests/AddDownloadQueueItemsResponse.cs | 40 + .../AddDownloadQueueItemsResponseBody.cs | 25 + .../SDK/Models/Requests/AddExtrasRequest.cs | 105 + .../SDK/Models/Requests/AddExtrasResponse.cs | 34 + .../SDK/Models/Requests/AddLineupDVR.cs | 35 + .../Requests/AddLineupDVRsMediaContainer.cs | 59 + .../Requests/AddLineupMediaContainer.cs | 26 + .../SDK/Models/Requests/AddLineupRequest.cs | 96 + .../SDK/Models/Requests/AddLineupResponse.cs | 43 + .../Models/Requests/AddLineupResponseBody.cs | 25 + .../AddPlaylistContentsMediaContainer.cs | 32 - .../Requests/AddPlaylistContentsMetadata.cs | 57 - .../Requests/AddPlaylistContentsRequest.cs | 35 - .../Requests/AddPlaylistContentsResponse.cs | 40 - .../AddPlaylistContentsResponseBody.cs | 25 - .../Requests/AddPlaylistItemsRequest.cs | 102 + .../Requests/AddPlaylistItemsResponse.cs | 40 + .../SDK/Models/Requests/AddProviderRequest.cs | 90 + .../Models/Requests/AddProviderResponse.cs | 34 + .../SDK/Models/Requests/AddSectionRequest.cs | 146 + .../SDK/Models/Requests/AddSectionResponse.cs | 40 + .../Models/Requests/AddSubtitlesRequest.cs | 111 + .../Models/Requests/AddSubtitlesResponse.cs | 34 + .../Models/Requests/AddToPlayQueueRequest.cs | 108 + .../Models/Requests/AddToPlayQueueResponse.cs | 40 + .../SDK/Models/Requests/AddedQueueItems.cs | 30 + .../SDK/Models/Requests/AdvancedSubtitles.cs | 65 + .../SDK/Models/Requests/AllLibraries.cs | 23 - .../SDK/Models/Requests/AllowCameraUpload.cs | 23 - .../SDK/Models/Requests/AllowChannels.cs | 23 - .../SDK/Models/Requests/AllowSubtitleAdmin.cs | 23 - .../PlexAPI/SDK/Models/Requests/AllowSync.cs | 23 - .../SDK/Models/Requests/AllowTuners.cs | 23 - .../Models/Requests/AnalyzeMetadataRequest.cs | 99 + .../Requests/AnalyzeMetadataResponse.cs | 34 + .../Models/Requests/ApplyUpdatesRequest.cs | 78 +- LukeHagar/PlexAPI/SDK/Models/Requests/Args.cs | 20 + .../PlexAPI/SDK/Models/Requests/Attributes.cs | 15 +- .../SDK/Models/Requests/AutoSelectSubtitle.cs | 23 - .../Models/Requests/AutocompleteRequest.cs | 108 + .../Models/Requests/AutocompleteResponse.cs | 43 + .../PlexAPI/SDK/Models/Requests/Bandwidth.cs | 36 + .../PlexAPI/SDK/Models/Requests/Bandwidths.cs | 26 + .../PlexAPI/SDK/Models/Requests/Billing.cs | 25 - .../PlexAPI/SDK/Models/Requests/ButlerTask.cs | 40 +- .../Models/Requests/CancelActivityRequest.cs | 90 + .../Models/Requests/CancelActivityResponse.cs | 34 + .../SDK/Models/Requests/CancelGrabRequest.cs | 90 + .../SDK/Models/Requests/CancelGrabResponse.cs | 34 + .../Models/Requests/CancelRefreshRequest.cs | 90 + .../Models/Requests/CancelRefreshResponse.cs | 34 + .../Requests/CancelServerActivitiesRequest.cs | 23 - .../CancelServerActivitiesResponse.cs | 34 - .../SDK/Models/Requests/ChannelMapping.cs | 20 + .../Models/Requests/ChannelMappingByKey.cs | 20 + .../PlexAPI/SDK/Models/Requests/Chapter.cs | 39 - .../Models/Requests/CheckForUpdatesRequest.cs | 24 - .../Requests/CheckForUpdatesResponse.cs | 34 - .../Models/Requests/CheckUpdatesRequest.cs | 90 + .../Models/Requests/CheckUpdatesResponse.cs | 34 + .../SDK/Models/Requests/ChromaSubsampling.cs | 33 + .../Models/Requests/CleanBundlesResponse.cs | 34 + .../Models/Requests/ClearPlayQueueRequest.cs | 90 + .../Models/Requests/ClearPlayQueueResponse.cs | 40 + .../Requests/ClearPlaylistContentsRequest.cs | 23 - .../Requests/ClearPlaylistContentsResponse.cs | 34 - .../Requests/ClearPlaylistItemsRequest.cs | 90 + .../Requests/ClearPlaylistItemsResponse.cs | 40 + .../PlexAPI/SDK/Models/Requests/Collection.cs | 24 - .../ComputeChannelMapChannelMapping.cs | 36 + .../ComputeChannelMapMediaContainer.cs | 58 + .../Requests/ComputeChannelMapRequest.cs | 96 + .../Requests/ComputeChannelMapResponse.cs | 43 + .../Requests/ComputeChannelMapResponseBody.cs | 25 + .../Requests/ConnectWebSocketRequest.cs | 100 + .../Requests/ConnectWebSocketResponse.cs | 39 + .../PlexAPI/SDK/Models/Requests/Connection.cs | 42 + .../SDK/Models/Requests/Connections.cs | 61 - .../PlexAPI/SDK/Models/Requests/Context.cs | 21 - .../PlexAPI/SDK/Models/Requests/Country.cs | 44 +- .../Requests/CreateCollectionRequest.cs | 114 + .../Requests/CreateCollectionResponse.cs | 40 + .../Models/Requests/CreateCustomHubRequest.cs | 114 + .../Requests/CreateCustomHubResponse.cs | 34 + .../SDK/Models/Requests/CreateDVRRequest.cs | 103 + .../SDK/Models/Requests/CreateDVRResponse.cs | 43 + .../CreateDownloadQueueMediaContainer.cs | 58 + .../Requests/CreateDownloadQueueResponse.cs | 40 + .../CreateDownloadQueueResponseBody.cs | 25 + .../Requests/CreateMarkerMediaContainer.cs | 76 + .../Models/Requests/CreateMarkerRequest.cs | 112 + .../Models/Requests/CreateMarkerResponse.cs | 40 + .../Requests/CreateMarkerResponseBody.cs | 25 + .../SDK/Models/Requests/CreateMarkerType.cs | 63 + .../Requests/CreatePlayQueueMediaContainer.cs | 107 + .../Models/Requests/CreatePlayQueueRequest.cs | 145 + .../Requests/CreatePlayQueueResponse.cs | 43 + .../Requests/CreatePlayQueueResponseBody.cs | 25 + .../Requests/CreatePlaylistMediaContainer.cs | 26 - .../Models/Requests/CreatePlaylistMetadata.cs | 66 - .../Requests/CreatePlaylistQueryParamType.cs | 80 - .../Models/Requests/CreatePlaylistRequest.cs | 81 +- .../Models/Requests/CreatePlaylistResponse.cs | 6 +- .../Requests/CreatePlaylistResponseBody.cs | 25 - .../CreateSubscriptionMediaContainer.cs | 58 + .../CreateSubscriptionQueryParamPrefs.cs | 20 + .../Requests/CreateSubscriptionRequest.cs | 127 + .../Requests/CreateSubscriptionResponse.cs | 43 + .../CreateSubscriptionResponseBody.cs | 25 + .../SDK/Models/Requests/DecisionResult.cs | 54 + .../Requests/DefaultSubtitleAccessibility.cs | 23 - .../Models/Requests/DefaultSubtitleForced.cs | 23 - .../Models/Requests/DeleteCachesResponse.cs | 34 + .../Requests/DeleteCollectionItemRequest.cs | 96 + .../Requests/DeleteCollectionItemResponse.cs | 40 + .../Requests/DeleteCollectionRequest.cs | 96 + .../Requests/DeleteCollectionResponse.cs | 34 + .../Models/Requests/DeleteCustomHubRequest.cs | 96 + .../Requests/DeleteCustomHubResponse.cs | 34 + .../SDK/Models/Requests/DeleteDVRRequest.cs | 90 + .../SDK/Models/Requests/DeleteDVRResponse.cs | 34 + .../Models/Requests/DeleteHistoryRequest.cs | 90 + .../Models/Requests/DeleteHistoryResponse.cs | 43 + .../Models/Requests/DeleteIndexesRequest.cs | 90 + .../Models/Requests/DeleteIndexesResponse.cs | 34 + .../Models/Requests/DeleteIntrosRequest.cs | 90 + .../Models/Requests/DeleteIntrosResponse.cs | 34 + .../Models/Requests/DeleteLibraryRequest.cs | 28 - .../Models/Requests/DeleteLibraryResponse.cs | 34 - .../Requests/DeleteLibrarySectionRequest.cs | 96 + .../Requests/DeleteLibrarySectionResponse.cs | 34 + .../SDK/Models/Requests/DeleteLineupDVR.cs | 35 + .../DeleteLineupDVRsMediaContainer.cs | 59 + .../Requests/DeleteLineupMediaContainer.cs | 26 + .../Models/Requests/DeleteLineupRequest.cs | 96 + .../Models/Requests/DeleteLineupResponse.cs | 43 + .../Requests/DeleteLineupResponseBody.cs | 25 + .../Models/Requests/DeleteMarkerRequest.cs | 90 + .../Models/Requests/DeleteMarkerResponse.cs | 34 + .../Models/Requests/DeleteMediaItemRequest.cs | 96 + .../Requests/DeleteMediaItemResponse.cs | 34 + .../Requests/DeleteMediaProviderRequest.cs | 90 + .../Requests/DeleteMediaProviderResponse.cs | 34 + .../Requests/DeleteMetadataItemRequest.cs | 93 + .../Requests/DeleteMetadataItemResponse.cs | 34 + .../Requests/DeletePlayQueueItemRequest.cs | 96 + .../Requests/DeletePlayQueueItemResponse.cs | 40 + .../Requests/DeletePlaylistItemRequest.cs | 96 + .../Requests/DeletePlaylistItemResponse.cs | 40 + .../Models/Requests/DeletePlaylistRequest.cs | 73 +- .../Models/Requests/DeleteStreamRequest.cs | 96 + .../Models/Requests/DeleteStreamResponse.cs | 34 + .../Requests/DeleteSubscriptionRequest.cs | 87 + .../Requests/DeleteSubscriptionResponse.cs | 34 + .../SDK/Models/Requests/DetectAdsRequest.cs | 87 + .../SDK/Models/Requests/DetectAdsResponse.cs | 34 + .../Models/Requests/DetectCreditsRequest.cs | 93 + .../Models/Requests/DetectCreditsResponse.cs | 34 + .../Models/Requests/DetectIntrosRequest.cs | 99 + .../Models/Requests/DetectIntrosResponse.cs | 34 + .../Requests/DetectVoiceActivityRequest.cs | 99 + .../Requests/DetectVoiceActivityResponse.cs | 34 + .../PlexAPI/SDK/Models/Requests/Device.cs | 19 +- .../SDK/Models/Requests/DeviceChannel.cs | 45 + .../PlexAPI/SDK/Models/Requests/Director.cs | 48 - .../PlexAPI/SDK/Models/Requests/Directory.cs | 36 +- .../Requests/DiscoverDevicesResponse.cs | 40 + .../PlexAPI/SDK/Models/Requests/Download.cs | 23 - .../SDK/Models/Requests/DownloadQueue.cs | 40 + .../SDK/Models/Requests/DownloadQueueItem.cs | 66 + LukeHagar/PlexAPI/SDK/Models/Requests/Dvr.cs | 35 + .../SDK/Models/Requests/EditMarkerRequest.cs | 118 + .../SDK/Models/Requests/EditMarkerResponse.cs | 40 + .../Requests/EditMetadataItemRequest.cs | 95 + .../Requests/EditMetadataItemResponse.cs | 34 + .../Requests/EditSectionQueryParamPrefs.cs | 20 + .../SDK/Models/Requests/EditSectionRequest.cs | 134 + .../Models/Requests/EditSectionResponse.cs | 34 + ...tSubscriptionPreferencesQueryParamPrefs.cs | 17 + .../EditSubscriptionPreferencesRequest.cs | 91 + .../EditSubscriptionPreferencesResponse.cs | 40 + .../PlexAPI/SDK/Models/Requests/Element.cs | 65 + .../SDK/Models/Requests/EmptyTrashRequest.cs | 90 + .../SDK/Models/Requests/EmptyTrashResponse.cs | 34 + .../Requests/EnablePaperTrailResponse.cs | 34 - .../Requests/EnablePapertrailRequest.cs | 90 + .../Requests/EnablePapertrailResponse.cs | 34 + .../PlexAPI/SDK/Models/Requests/Extension.cs | 64 + .../PlexAPI/SDK/Models/Requests/Extras.cs | 24 - .../PlexAPI/SDK/Models/Requests/Feature.cs | 22 +- .../PlexAPI/SDK/Models/Requests/Field.cs | 30 - .../PlexAPI/SDK/Models/Requests/FieldType.cs | 26 - .../PlexAPI/SDK/Models/Requests/Filter.cs | 80 - .../SDK/Models/Requests/FlattenSeasons.cs | 84 - .../PlexAPI/SDK/Models/Requests/Flavor.cs | 30 + .../PlexAPI/SDK/Models/Requests/Force.cs | 23 - .../PlexAPI/SDK/Models/Requests/Format.cs | 64 + .../PlexAPI/SDK/Models/Requests/Friend.cs | 89 - .../Models/Requests/GenerateThumbsRequest.cs | 90 + .../Models/Requests/GenerateThumbsResponse.cs | 34 + .../PlexAPI/SDK/Models/Requests/Genre.cs | 45 - .../PlexAPI/SDK/Models/Requests/GeoData.cs | 87 - .../Requests/GetActorsLibraryDirectory.cs | 42 - .../GetActorsLibraryMediaContainer.cs | 98 - .../GetActorsLibraryQueryParamType.cs | 100 - .../Requests/GetActorsLibraryRequest.cs | 49 - .../Requests/GetActorsLibraryResponse.cs | 40 - .../Requests/GetActorsLibraryResponseBody.cs | 25 - .../SDK/Models/Requests/GetAlbumsRequest.cs | 90 + .../SDK/Models/Requests/GetAlbumsResponse.cs | 40 + .../Requests/GetAllHubsMediaContainer.cs | 58 + .../SDK/Models/Requests/GetAllHubsRequest.cs | 103 + .../SDK/Models/Requests/GetAllHubsResponse.cs | 43 + .../Models/Requests/GetAllHubsResponseBody.cs | 25 + .../Requests/GetAllItemLeavesRequest.cs | 87 + .../Requests/GetAllItemLeavesResponse.cs | 43 + .../Requests/GetAllLanguagesMediaContainer.cs | 58 + .../Requests/GetAllLanguagesResponse.cs | 43 + .../Requests/GetAllLanguagesResponseBody.cs | 25 + .../Models/Requests/GetAllLeavesRequest.cs | 90 + .../Models/Requests/GetAllLeavesResponse.cs | 40 + .../Requests/GetAllLibrariesDirectory.cs | 145 - .../Requests/GetAllLibrariesLocation.cs | 30 - .../Requests/GetAllLibrariesMediaContainer.cs | 41 - .../Requests/GetAllLibrariesResponse.cs | 40 - .../Requests/GetAllLibrariesResponseBody.cs | 25 - .../Models/Requests/GetAllLibrariesType.cs | 94 - .../Requests/GetAllPreferencesResponse.cs | 40 + .../Requests/GetAllSubscriptionsRequest.cs | 96 + .../Requests/GetAllSubscriptionsResponse.cs | 43 + .../SDK/Models/Requests/GetArtsRequest.cs | 90 + .../SDK/Models/Requests/GetArtsResponse.cs | 40 + .../Requests/GetAugmentationStatusRequest.cs | 96 + .../Requests/GetAugmentationStatusResponse.cs | 34 + .../GetAvailableClientsMediaContainer.cs | 26 - .../Requests/GetAvailableClientsResponse.cs | 40 - .../GetAvailableClientsResponseBody.cs | 25 - .../GetAvailableGrabbersMediaContainer.cs | 58 + .../Requests/GetAvailableGrabbersRequest.cs | 90 + .../Requests/GetAvailableGrabbersResponse.cs | 43 + .../GetAvailableGrabbersResponseBody.cs | 25 + .../GetAvailableSortsMediaContainer.cs | 58 + .../Requests/GetAvailableSortsRequest.cs | 90 + .../Requests/GetAvailableSortsResponse.cs | 40 + .../Requests/GetAvailableSortsResponseBody.cs | 25 + .../GetBackgroundTasksMediaContainer.cs | 58 + .../Requests/GetBackgroundTasksResponse.cs | 40 + .../GetBackgroundTasksResponseBody.cs | 25 + .../Models/Requests/GetBackgroundTasksType.cs | 55 + .../Requests/GetBandwidthStatisticsAccount.cs | 42 - .../Requests/GetBandwidthStatisticsDevice.cs | 33 - .../GetBandwidthStatisticsMediaContainer.cs | 32 - .../Requests/GetBandwidthStatisticsRequest.cs | 28 - .../GetBandwidthStatisticsResponse.cs | 40 - .../GetBandwidthStatisticsResponseBody.cs | 25 - .../Models/Requests/GetBannerImageRequest.cs | 41 - .../Models/Requests/GetBannerImageResponse.cs | 42 - .../Models/Requests/GetButlerTasksResponse.cs | 40 - .../Requests/GetButlerTasksResponseBody.cs | 25 - .../Models/Requests/GetCategoriesRequest.cs | 90 + .../Models/Requests/GetCategoriesResponse.cs | 40 + .../Requests/GetChannelsMediaContainer.cs | 58 + .../SDK/Models/Requests/GetChannelsRequest.cs | 90 + .../Models/Requests/GetChannelsResponse.cs | 43 + .../Requests/GetChannelsResponseBody.cs | 25 + .../Models/Requests/GetChapterImageRequest.cs | 96 + .../Requests/GetChapterImageResponse.cs | 39 + .../SDK/Models/Requests/GetClusterRequest.cs | 90 + .../SDK/Models/Requests/GetClusterResponse.cs | 40 + .../Requests/GetCollectionImageRequest.cs | 99 + .../Requests/GetCollectionImageResponse.cs | 39 + .../Requests/GetCollectionItemsRequest.cs | 90 + .../Requests/GetCollectionItemsResponse.cs | 40 + .../Models/Requests/GetCollectionsRequest.cs | 96 + .../Models/Requests/GetCollectionsResponse.cs | 43 + .../Requests/GetColorsMediaContainer.cs | 58 + .../SDK/Models/Requests/GetColorsRequest.cs | 90 + .../SDK/Models/Requests/GetColorsResponse.cs | 40 + .../Models/Requests/GetColorsResponseBody.cs | 25 + .../SDK/Models/Requests/GetCommonRequest.cs | 102 + .../SDK/Models/Requests/GetCommonResponse.cs | 43 + .../Requests/GetCompanionsDataResponse.cs | 41 - .../GetContinueWatchingMediaContainer.cs | 58 + .../Requests/GetContinueWatchingRequest.cs | 90 + .../Requests/GetContinueWatchingResponse.cs | 43 + .../GetContinueWatchingResponseBody.cs | 25 + .../Requests/GetCountriesLibraryDirectory.cs | 27 - .../GetCountriesLibraryMediaContainer.cs | 95 - .../GetCountriesLibraryQueryParamType.cs | 100 - .../Requests/GetCountriesLibraryRequest.cs | 49 - .../Requests/GetCountriesLibraryResponse.cs | 40 - .../GetCountriesLibraryResponseBody.cs | 25 - .../Requests/GetCountriesLineupsRequest.cs | 102 + .../Requests/GetCountriesLineupsResponse.cs | 40 + .../Requests/GetCountriesMediaContainer.cs | 58 + .../Models/Requests/GetCountriesResponse.cs | 43 + .../Requests/GetCountriesResponseBody.cs | 25 + .../Requests/GetCountryRegionsCountry.cs | 30 + .../GetCountryRegionsMediaContainer.cs | 58 + .../Requests/GetCountryRegionsRequest.cs | 96 + .../Requests/GetCountryRegionsResponse.cs | 43 + .../Requests/GetCountryRegionsResponseBody.cs | 25 + .../PlexAPI/SDK/Models/Requests/GetDVRDVR.cs | 35 + .../Requests/GetDVRDVRsMediaContainer.cs | 59 + .../Models/Requests/GetDVRMediaContainer.cs | 26 + .../SDK/Models/Requests/GetDVRRequest.cs | 90 + .../SDK/Models/Requests/GetDVRResponse.cs | 43 + .../SDK/Models/Requests/GetDVRResponseBody.cs | 25 + .../Requests/GetDeviceDetailsRequest.cs | 90 + .../Requests/GetDeviceDetailsResponse.cs | 40 + .../GetDevicesChannelsMediaContainer.cs | 58 + .../Requests/GetDevicesChannelsRequest.cs | 90 + .../Requests/GetDevicesChannelsResponse.cs | 43 + .../GetDevicesChannelsResponseBody.cs | 25 + .../Requests/GetDevicesMediaContainer.cs | 29 - .../SDK/Models/Requests/GetDevicesResponse.cs | 40 - .../Models/Requests/GetDevicesResponseBody.cs | 25 - .../Requests/GetDownloadQueueDownloadQueue.cs | 40 + .../GetDownloadQueueItemsDecisionResult.cs | 54 + .../GetDownloadQueueItemsDownloadQueueItem.cs | 66 + .../GetDownloadQueueItemsMediaContainer.cs | 58 + .../Requests/GetDownloadQueueItemsRequest.cs | 97 + .../Requests/GetDownloadQueueItemsResponse.cs | 40 + .../GetDownloadQueueItemsResponseBody.cs | 25 + .../Requests/GetDownloadQueueItemsStatus.cs | 78 + .../GetDownloadQueueItemsTranscode.cs | 20 + .../GetDownloadQueueMediaContainer.cs | 58 + .../Requests/GetDownloadQueueMediaRequest.cs | 96 + .../Requests/GetDownloadQueueMediaResponse.cs | 37 + .../Requests/GetDownloadQueueRequest.cs | 90 + .../Requests/GetDownloadQueueResponse.cs | 40 + .../Requests/GetDownloadQueueResponseBody.cs | 25 + .../Models/Requests/GetDownloadQueueStatus.cs | 75 + .../SDK/Models/Requests/GetExtrasRequest.cs | 87 + .../SDK/Models/Requests/GetExtrasResponse.cs | 43 + .../SDK/Models/Requests/GetFileHashRequest.cs | 29 - .../Models/Requests/GetFileHashResponse.cs | 34 - .../SDK/Models/Requests/GetFileRequest.cs | 93 + .../SDK/Models/Requests/GetFileResponse.cs | 44 + .../Requests/GetFirstCharactersDirectory.cs | 30 + .../GetFirstCharactersMediaContainer.cs | 58 + .../Requests/GetFirstCharactersRequest.cs | 108 + .../Requests/GetFirstCharactersResponse.cs | 40 + .../GetFirstCharactersResponseBody.cs | 25 + .../Models/Requests/GetFoldersDirectory.cs | 27 + .../Requests/GetFoldersMediaContainer.cs | 58 + .../SDK/Models/Requests/GetFoldersRequest.cs | 90 + .../SDK/Models/Requests/GetFoldersResponse.cs | 40 + .../Models/Requests/GetFoldersResponseBody.cs | 25 + .../Requests/GetGenresLibraryDirectory.cs | 30 - .../GetGenresLibraryMediaContainer.cs | 95 - .../GetGenresLibraryQueryParamType.cs | 100 - .../Requests/GetGenresLibraryRequest.cs | 49 - .../Requests/GetGenresLibraryResponse.cs | 40 - .../Requests/GetGenresLibraryResponseBody.cs | 25 - .../SDK/Models/Requests/GetGeoDataGeoData.cs | 87 - .../SDK/Models/Requests/GetGeoDataResponse.cs | 40 - .../Requests/GetGlobalHubsMediaContainer.cs | 32 - .../Models/Requests/GetGlobalHubsMetadata.cs | 69 - .../Models/Requests/GetGlobalHubsRequest.cs | 30 - .../Models/Requests/GetGlobalHubsResponse.cs | 40 - .../Requests/GetGlobalHubsResponseBody.cs | 25 - .../Models/Requests/GetHistoryItemRequest.cs | 90 + .../Models/Requests/GetHistoryItemResponse.cs | 43 + .../Models/Requests/GetHomeDataResponse.cs | 40 - .../Requests/GetHomeDataResponseBody.cs | 39 - .../SDK/Models/Requests/GetHubItemsRequest.cs | 97 + .../Models/Requests/GetHubItemsResponse.cs | 43 + .../Requests/GetHubItemsResponseBody.cs | 34 + .../Requests/GetIdentityMediaContainer.cs | 39 + .../Models/Requests/GetIdentityResponse.cs | 40 + .../Requests/GetIdentityResponseBody.cs | 25 + .../Models/Requests/GetImageFromBifRequest.cs | 103 + .../Requests/GetImageFromBifResponse.cs | 39 + .../SDK/Models/Requests/GetImageRequest.cs | 126 + .../SDK/Models/Requests/GetImageResponse.cs | 39 + .../GetItemArtworkPathParamElement.cs | 65 + .../Models/Requests/GetItemArtworkRequest.cs | 97 + .../Models/Requests/GetItemArtworkResponse.cs | 44 + .../Models/Requests/GetItemDecisionRequest.cs | 96 + .../Requests/GetItemDecisionResponse.cs | 40 + .../SDK/Models/Requests/GetItemTreeRequest.cs | 87 + .../Models/Requests/GetItemTreeResponse.cs | 40 + .../Requests/GetLibraryDetailsDirectory.cs | 33 - .../Models/Requests/GetLibraryDetailsField.cs | 30 - .../Requests/GetLibraryDetailsFieldType.cs | 26 - .../Requests/GetLibraryDetailsFilter.cs | 33 - .../GetLibraryDetailsMediaContainer.cs | 40 +- .../Requests/GetLibraryDetailsOperator.cs | 24 - .../Requests/GetLibraryDetailsRequest.cs | 90 +- .../Requests/GetLibraryDetailsResponse.cs | 2 +- .../Requests/GetLibraryDetailsResponseBody.cs | 2 +- .../Models/Requests/GetLibraryDetailsSort.cs | 36 - .../Models/Requests/GetLibraryDetailsType.cs | 41 - .../Models/Requests/GetLibraryHubsCountry.cs | 21 - .../Models/Requests/GetLibraryHubsDirector.cs | 21 - .../Models/Requests/GetLibraryHubsGenre.cs | 21 - .../SDK/Models/Requests/GetLibraryHubsHub.cs | 56 - .../Models/Requests/GetLibraryHubsMedia.cs | 71 - .../Requests/GetLibraryHubsMediaContainer.cs | 41 - .../Models/Requests/GetLibraryHubsMetadata.cs | 123 - .../SDK/Models/Requests/GetLibraryHubsPart.cs | 48 - .../Models/Requests/GetLibraryHubsRequest.cs | 36 - .../Models/Requests/GetLibraryHubsResponse.cs | 40 - .../Requests/GetLibraryHubsResponseBody.cs | 25 - .../SDK/Models/Requests/GetLibraryHubsRole.cs | 21 - .../Models/Requests/GetLibraryHubsWriter.cs | 21 - .../GetLibraryItemsActiveDirection.cs | 64 - .../Requests/GetLibraryItemsCollection.cs | 24 - .../Models/Requests/GetLibraryItemsCountry.cs | 35 - .../GetLibraryItemsDefaultDirection.cs | 64 - .../Requests/GetLibraryItemsDirector.cs | 36 - .../Models/Requests/GetLibraryItemsField.cs | 30 - .../Requests/GetLibraryItemsFieldType.cs | 26 - .../Models/Requests/GetLibraryItemsFilter.cs | 33 - .../Models/Requests/GetLibraryItemsGenre.cs | 39 - .../Models/Requests/GetLibraryItemsGuids.cs | 28 - .../Requests/GetLibraryItemsHasThumbnail.cs | 64 - .../Models/Requests/GetLibraryItemsImage.cs | 32 - ...ibraryItemsLibraryOptimizedForStreaming.cs | 207 - .../GetLibraryItemsLibraryResponseType.cs | 79 - .../Requests/GetLibraryItemsLibraryType.cs | 41 - .../Requests/GetLibraryItemsLocation.cs | 24 - .../Models/Requests/GetLibraryItemsMedia.cs | 138 - .../Requests/GetLibraryItemsMediaContainer.cs | 150 - .../Models/Requests/GetLibraryItemsMeta.cs | 33 - .../Requests/GetLibraryItemsMetadata.cs | 456 - .../Requests/GetLibraryItemsOperator.cs | 24 - .../GetLibraryItemsOptimizedForStreaming.cs | 203 - .../GetLibraryItemsOptimizedForStreaming1.cs | 20 - .../Models/Requests/GetLibraryItemsPart.cs | 102 - .../Requests/GetLibraryItemsProducer.cs | 54 - .../GetLibraryItemsQueryParamIncludeMeta.cs | 27 - .../Requests/GetLibraryItemsQueryParamType.cs | 100 - .../Models/Requests/GetLibraryItemsRequest.cs | 113 +- .../Requests/GetLibraryItemsResponse.cs | 9 +- .../Requests/GetLibraryItemsResponseBody.cs | 25 - .../Models/Requests/GetLibraryItemsRole.cs | 47 - .../Models/Requests/GetLibraryItemsSimilar.cs | 36 - .../Models/Requests/GetLibraryItemsSort.cs | 57 - .../Models/Requests/GetLibraryItemsType.cs | 98 - .../GetLibraryItemsUltraBlurColors.cs | 30 - .../Models/Requests/GetLibraryItemsWriter.cs | 36 - .../Requests/GetLibraryMatchesRequest.cs | 159 + .../Requests/GetLibraryMatchesResponse.cs | 43 + .../GetLibrarySectionsAllActiveDirection.cs | 64 - .../GetLibrarySectionsAllCollection.cs | 24 - .../Requests/GetLibrarySectionsAllCountry.cs | 24 - .../GetLibrarySectionsAllDefaultDirection.cs | 64 - .../Requests/GetLibrarySectionsAllDirector.cs | 24 - .../Requests/GetLibrarySectionsAllField.cs | 30 - .../GetLibrarySectionsAllFieldType.cs | 26 - .../Requests/GetLibrarySectionsAllFilter.cs | 36 - .../Requests/GetLibrarySectionsAllGenre.cs | 28 - .../Requests/GetLibrarySectionsAllGuids.cs | 28 - .../GetLibrarySectionsAllHasThumbnail.cs | 60 - .../Requests/GetLibrarySectionsAllImage.cs | 32 - ...SectionsAllLibraryOptimizedForStreaming.cs | 203 - ...etLibrarySectionsAllLibraryResponseType.cs | 79 - .../GetLibrarySectionsAllLibraryType.cs | 98 - .../Requests/GetLibrarySectionsAllMedia.cs | 133 - .../GetLibrarySectionsAllMediaContainer.cs | 138 - .../Requests/GetLibrarySectionsAllMeta.cs | 33 - .../Requests/GetLibrarySectionsAllMetadata.cs | 379 - .../Requests/GetLibrarySectionsAllOperator.cs | 24 - ...LibrarySectionsAllOptimizedForStreaming.cs | 203 - ...ibrarySectionsAllOptimizedForStreaming1.cs | 20 - ...ectionsAllOptimizedForStreamingLibrary1.cs | 20 - .../Requests/GetLibrarySectionsAllPart.cs | 105 - ...LibrarySectionsAllQueryParamIncludeMeta.cs | 27 - .../GetLibrarySectionsAllQueryParamType.cs | 100 - .../Requests/GetLibrarySectionsAllRequest.cs | 102 - .../Requests/GetLibrarySectionsAllResponse.cs | 40 - .../GetLibrarySectionsAllResponseBody.cs | 25 - .../Requests/GetLibrarySectionsAllRole.cs | 24 - .../Requests/GetLibrarySectionsAllSort.cs | 57 - .../Requests/GetLibrarySectionsAllStream.cs | 316 - .../Requests/GetLibrarySectionsAllType.cs | 44 - .../GetLibrarySectionsAllUltraBlurColors.cs | 30 - .../Requests/GetLibrarySectionsAllWriter.cs | 24 - .../GetLineupChannelsMediaContainer.cs | 58 + .../Requests/GetLineupChannelsRequest.cs | 91 + .../Requests/GetLineupChannelsResponse.cs | 40 + .../Requests/GetLineupChannelsResponseBody.cs | 25 + .../SDK/Models/Requests/GetLineupRequest.cs | 96 + .../SDK/Models/Requests/GetLineupResponse.cs | 37 + .../Requests/GetLiveTVSessionRequest.cs | 90 + .../Requests/GetLiveTVSessionResponse.cs | 43 + .../Requests/GetMediaArtsMediaContainer.cs | 47 - .../Models/Requests/GetMediaArtsMetadata.cs | 48 - .../Models/Requests/GetMediaArtsRequest.cs | 23 - .../Models/Requests/GetMediaArtsResponse.cs | 40 - .../Requests/GetMediaArtsResponseBody.cs | 25 - .../Requests/GetMediaMetaDataAttributes.cs | 33 - .../Requests/GetMediaMetaDataChapter.cs | 39 - .../Requests/GetMediaMetaDataCountry.cs | 41 - .../Requests/GetMediaMetaDataDirector.cs | 48 - .../Models/Requests/GetMediaMetaDataExtras.cs | 24 - .../Models/Requests/GetMediaMetaDataGenre.cs | 45 - .../Models/Requests/GetMediaMetaDataGuids.cs | 28 - .../Requests/GetMediaMetaDataHasThumbnail.cs | 64 - .../Models/Requests/GetMediaMetaDataImage.cs | 32 - ...diaMetaDataLibraryOptimizedForStreaming.cs | 207 - .../Requests/GetMediaMetaDataLibraryType.cs | 79 - .../Requests/GetMediaMetaDataLocation.cs | 24 - .../Models/Requests/GetMediaMetaDataMarker.cs | 43 - .../Models/Requests/GetMediaMetaDataMedia.cs | 138 - .../GetMediaMetaDataMediaContainer.cs | 74 - .../Requests/GetMediaMetaDataMetadata.cs | 415 - .../GetMediaMetaDataOptimizedForStreaming.cs | 203 - .../GetMediaMetaDataOptimizedForStreaming1.cs | 20 - ...iaMetaDataOptimizedForStreamingLibrary1.cs | 20 - .../Models/Requests/GetMediaMetaDataPart.cs | 106 - .../Requests/GetMediaMetaDataProducer.cs | 54 - .../Requests/GetMediaMetaDataRatings.cs | 36 - .../Requests/GetMediaMetaDataRequest.cs | 101 - .../Requests/GetMediaMetaDataResponse.cs | 40 - .../Requests/GetMediaMetaDataResponseBody.cs | 25 - .../Models/Requests/GetMediaMetaDataRole.cs | 64 - .../Requests/GetMediaMetaDataSimilar.cs | 36 - .../Models/Requests/GetMediaMetaDataStream.cs | 316 - .../Models/Requests/GetMediaMetaDataType.cs | 98 - .../GetMediaMetaDataUltraBlurColors.cs | 30 - .../Models/Requests/GetMediaMetaDataWriter.cs | 48 - .../Models/Requests/GetMediaPartRequest.cs | 108 + .../Models/Requests/GetMediaPartResponse.cs | 37 + .../Requests/GetMediaPostersMediaContainer.cs | 47 - .../Requests/GetMediaPostersMetadata.cs | 48 - .../Models/Requests/GetMediaPostersRequest.cs | 23 - .../Requests/GetMediaPostersResponse.cs | 40 - .../Requests/GetMediaPostersResponseBody.cs | 25 - .../Requests/GetMediaProvidersDirectory.cs | 62 - .../GetMediaProvidersMediaContainer.cs | 152 - .../Requests/GetMediaProvidersRequest.cs | 23 - .../Requests/GetMediaProvidersResponse.cs | 40 - .../Requests/GetMediaProvidersResponseBody.cs | 25 - .../Requests/GetMetadataChildrenDirectory.cs | 33 - .../GetMetadataChildrenMediaContainer.cs | 89 - .../Requests/GetMetadataChildrenMetadata.cs | 99 - .../Requests/GetMetadataChildrenRequest.cs | 33 - .../Requests/GetMetadataChildrenResponse.cs | 40 - .../GetMetadataChildrenResponseBody.cs | 25 - .../Models/Requests/GetMetadataHubsRequest.cs | 102 + .../Requests/GetMetadataHubsResponse.cs | 43 + .../Models/Requests/GetMetadataItemRequest.cs | 136 + .../Requests/GetMetadataItemResponse.cs | 43 + .../Requests/GetMyPlexAccountResponse.cs | 40 - .../Requests/GetMyPlexAccountResponseBody.cs | 25 - .../Requests/GetNotificationsRequest.cs | 100 + .../Requests/GetNotificationsResponse.cs | 39 + .../Models/Requests/GetPartIndexRequest.cs | 103 + .../Models/Requests/GetPartIndexResponse.cs | 39 + .../Requests/GetPersonMediaContainer.cs | 58 + .../SDK/Models/Requests/GetPersonRequest.cs | 90 + .../SDK/Models/Requests/GetPersonResponse.cs | 40 + .../Models/Requests/GetPersonResponseBody.cs | 25 + .../Models/Requests/GetPinAuthPinContainer.cs | 68 - .../SDK/Models/Requests/GetPinRequest.cs | 59 - .../SDK/Models/Requests/GetPinResponse.cs | 40 - .../Models/Requests/GetPlayQueueRequest.cs | 120 + .../Models/Requests/GetPlayQueueResponse.cs | 40 + .../Requests/GetPlaylistContentsCountry.cs | 21 - .../Requests/GetPlaylistContentsDirector.cs | 21 - .../Requests/GetPlaylistContentsGenre.cs | 21 - .../Requests/GetPlaylistContentsMedia.cs | 71 - .../GetPlaylistContentsMediaContainer.cs | 47 - .../Requests/GetPlaylistContentsMetadata.cs | 117 - .../Requests/GetPlaylistContentsPart.cs | 48 - .../GetPlaylistContentsQueryParamType.cs | 100 - .../Requests/GetPlaylistContentsRequest.cs | 44 - .../Requests/GetPlaylistContentsResponse.cs | 40 - .../GetPlaylistContentsResponseBody.cs | 25 - .../Requests/GetPlaylistContentsRole.cs | 21 - .../Requests/GetPlaylistContentsWriter.cs | 21 - .../Requests/GetPlaylistGeneratorDevice.cs | 21 + ...GetPlaylistGeneratorItemsMediaContainer.cs | 57 + .../GetPlaylistGeneratorItemsMetadata.cs | 419 + .../GetPlaylistGeneratorItemsRequest.cs | 96 + .../GetPlaylistGeneratorItemsResponse.cs | 40 + .../GetPlaylistGeneratorItemsResponseBody.cs | 25 + .../Requests/GetPlaylistGeneratorLocation.cs | 24 + .../GetPlaylistGeneratorMediaContainer.cs | 58 + .../Requests/GetPlaylistGeneratorRequest.cs | 96 + .../Requests/GetPlaylistGeneratorResponse.cs | 40 + .../GetPlaylistGeneratorResponseBody.cs | 25 + .../Requests/GetPlaylistGeneratorScope.cs | 57 + .../Requests/GetPlaylistGeneratorState.cs | 59 + .../Requests/GetPlaylistGeneratorStatus.cs | 34 + .../Requests/GetPlaylistGeneratorSubtitles.cs | 65 + .../Requests/GetPlaylistGeneratorType.cs | 23 + .../GetPlaylistGeneratorsMediaContainer.cs | 58 + .../Requests/GetPlaylistGeneratorsRequest.cs | 90 + .../Requests/GetPlaylistGeneratorsResponse.cs | 40 + .../GetPlaylistGeneratorsResponseBody.cs | 25 + .../Requests/GetPlaylistGeneratorsType.cs | 30 + .../Requests/GetPlaylistItemsRequest.cs | 97 + .../Requests/GetPlaylistItemsResponse.cs | 43 + .../Requests/GetPlaylistMediaContainer.cs | 26 - .../Models/Requests/GetPlaylistMetadata.cs | 63 - .../SDK/Models/Requests/GetPlaylistRequest.cs | 73 +- .../Models/Requests/GetPlaylistResponse.cs | 6 +- .../Requests/GetPlaylistResponseBody.cs | 25 - .../Requests/GetPlaylistsMediaContainer.cs | 26 - .../Models/Requests/GetPlaylistsMetadata.cs | 66 - .../Models/Requests/GetPlaylistsRequest.cs | 35 - .../Models/Requests/GetPlaylistsResponse.cs | 40 - .../Requests/GetPlaylistsResponseBody.cs | 25 - .../Models/Requests/GetPostplayHubsRequest.cs | 102 + .../Requests/GetPostplayHubsResponse.cs | 43 + .../Models/Requests/GetPreferenceRequest.cs | 90 + .../Models/Requests/GetPreferenceResponse.cs | 40 + .../Requests/GetPromotedHubsMediaContainer.cs | 58 + .../Models/Requests/GetPromotedHubsRequest.cs | 90 + .../Requests/GetPromotedHubsResponse.cs | 43 + .../Requests/GetPromotedHubsResponseBody.cs | 25 + .../Requests/GetRandomArtworkRequest.cs | 91 + .../Requests/GetRandomArtworkResponse.cs | 40 + .../GetRecentlyAddedActiveDirection.cs | 64 - .../GetRecentlyAddedDefaultDirection.cs | 64 - .../Models/Requests/GetRecentlyAddedField.cs | 30 - .../Requests/GetRecentlyAddedFieldType.cs | 26 - .../Models/Requests/GetRecentlyAddedFilter.cs | 36 - .../GetRecentlyAddedHubsResponseType.cs | 79 - .../Requests/GetRecentlyAddedHubsType.cs | 98 - .../Models/Requests/GetRecentlyAddedImage.cs | 32 - .../GetRecentlyAddedLibraryCountry.cs | 21 - .../GetRecentlyAddedLibraryDirector.cs | 21 - .../Requests/GetRecentlyAddedLibraryFilter.cs | 36 - .../Requests/GetRecentlyAddedLibraryGenre.cs | 21 - .../Requests/GetRecentlyAddedLibraryMedia.cs | 68 - .../GetRecentlyAddedLibraryMediaContainer.cs | 54 - .../GetRecentlyAddedLibraryMetadata.cs | 117 - .../Requests/GetRecentlyAddedLibraryPart.cs | 48 - .../GetRecentlyAddedLibraryRequest.cs | 84 - .../GetRecentlyAddedLibraryResponse.cs | 40 - .../GetRecentlyAddedLibraryResponseBody.cs | 25 - .../Requests/GetRecentlyAddedLibraryRole.cs | 21 - .../Requests/GetRecentlyAddedLibraryType.cs | 44 - .../Requests/GetRecentlyAddedLibraryWriter.cs | 21 - .../GetRecentlyAddedMediaContainer.cs | 66 - .../Requests/GetRecentlyAddedMetadata.cs | 433 - .../Requests/GetRecentlyAddedOperator.cs | 24 - .../GetRecentlyAddedOptimizedForStreaming.cs | 203 - .../GetRecentlyAddedOptimizedForStreaming1.cs | 20 - .../Requests/GetRecentlyAddedRequest.cs | 90 - .../Requests/GetRecentlyAddedResponse.cs | 40 - .../Requests/GetRecentlyAddedResponseBody.cs | 25 - .../Models/Requests/GetRecentlyAddedSort.cs | 57 - .../Models/Requests/GetRecentlyAddedType.cs | 44 - .../GetRefreshLibraryMetadataRequest.cs | 35 - .../GetRefreshLibraryMetadataResponse.cs | 34 - .../Models/Requests/GetRelatedHubsRequest.cs | 102 + .../Models/Requests/GetRelatedHubsResponse.cs | 43 + .../Requests/GetRelatedItemsMediaContainer.cs | 58 + .../Models/Requests/GetRelatedItemsRequest.cs | 87 + .../Requests/GetRelatedItemsResponse.cs | 40 + .../Requests/GetRelatedItemsResponseBody.cs | 25 + .../Models/Requests/GetResizedPhotoRequest.cs | 60 - .../Requests/GetResizedPhotoResponse.cs | 34 - .../GetResourcesStatisticsMediaContainer.cs | 26 - .../Requests/GetResourcesStatisticsRequest.cs | 28 - .../GetResourcesStatisticsResponse.cs | 40 - .../GetResourcesStatisticsResponseBody.cs | 25 - .../GetScheduledRecordingsMediaContainer.cs | 58 + .../GetScheduledRecordingsResponse.cs | 43 + .../GetScheduledRecordingsResponseBody.cs | 25 + .../Requests/GetSearchAllLibrariesCountry.cs | 35 - .../Requests/GetSearchAllLibrariesDirector.cs | 36 - .../GetSearchAllLibrariesDirectory.cs | 87 - .../GetSearchAllLibrariesFlattenSeasons.cs | 84 - .../Requests/GetSearchAllLibrariesGenre.cs | 39 - .../Requests/GetSearchAllLibrariesGuids.cs | 28 - .../GetSearchAllLibrariesHasThumbnail.cs | 64 - .../Requests/GetSearchAllLibrariesImage.cs | 32 - ...llLibrariesLibraryOptimizedForStreaming.cs | 207 - .../GetSearchAllLibrariesLibraryType.cs | 79 - .../Requests/GetSearchAllLibrariesLocation.cs | 24 - .../Requests/GetSearchAllLibrariesMedia.cs | 138 - .../GetSearchAllLibrariesMediaContainer.cs | 71 - .../Requests/GetSearchAllLibrariesMetadata.cs | 441 - ...SearchAllLibrariesOptimizedForStreaming.cs | 203 - ...earchAllLibrariesOptimizedForStreaming1.cs | 20 - ...lLibrariesOptimizedForStreamingLibrary1.cs | 20 - .../Requests/GetSearchAllLibrariesPart.cs | 102 - ...llLibrariesQueryParamIncludeCollections.cs | 23 - ...LibrariesQueryParamIncludeExternalMedia.cs | 23 - .../Requests/GetSearchAllLibrariesRequest.cs | 63 - .../Requests/GetSearchAllLibrariesResponse.cs | 40 - .../GetSearchAllLibrariesResponseBody.cs | 25 - .../Requests/GetSearchAllLibrariesRole.cs | 47 - .../GetSearchAllLibrariesShowOrdering.cs | 94 - .../Requests/GetSearchAllLibrariesType.cs | 98 - .../GetSearchAllLibrariesUltraBlurColors.cs | 30 - .../Requests/GetSearchAllLibrariesWriter.cs | 36 - .../GetSearchLibraryMediaContainer.cs | 59 - .../Requests/GetSearchLibraryMetadata.cs | 78 - .../GetSearchLibraryQueryParamType.cs | 100 - .../Requests/GetSearchLibraryRequest.cs | 49 - .../Requests/GetSearchLibraryResponse.cs | 40 - .../Requests/GetSearchLibraryResponseBody.cs | 25 - .../Requests/GetSearchResultsCountry.cs | 21 - .../Requests/GetSearchResultsDirector.cs | 21 - .../Models/Requests/GetSearchResultsGenre.cs | 21 - .../Models/Requests/GetSearchResultsMedia.cs | 65 - .../GetSearchResultsMediaContainer.cs | 38 - .../Requests/GetSearchResultsMetadata.cs | 123 - .../Models/Requests/GetSearchResultsPart.cs | 42 - .../Requests/GetSearchResultsRequest.cs | 23 - .../Requests/GetSearchResultsResponse.cs | 40 - .../Requests/GetSearchResultsResponseBody.cs | 25 - .../Models/Requests/GetSearchResultsRole.cs | 21 - .../Models/Requests/GetSearchResultsWriter.cs | 21 - .../GetSectionFiltersMediaContainer.cs | 58 + .../Requests/GetSectionFiltersRequest.cs | 90 + .../Requests/GetSectionFiltersResponse.cs | 40 + .../Requests/GetSectionFiltersResponseBody.cs | 25 + .../Requests/GetSectionHubsMediaContainer.cs | 58 + .../Models/Requests/GetSectionHubsRequest.cs | 102 + .../Models/Requests/GetSectionHubsResponse.cs | 43 + .../Requests/GetSectionHubsResponseBody.cs | 25 + .../Models/Requests/GetSectionImageRequest.cs | 105 + .../Requests/GetSectionImageResponse.cs | 34 + .../Requests/GetSectionPreferencesRequest.cs | 93 + .../Requests/GetSectionPreferencesResponse.cs | 40 + .../Requests/GetSectionsMediaContainer.cs | 67 + .../Requests/GetSectionsPrefsRequest.cs | 96 + .../Requests/GetSectionsPrefsResponse.cs | 40 + .../Models/Requests/GetSectionsResponse.cs | 43 + .../Requests/GetSectionsResponseBody.cs | 25 + .../GetServerActivitiesMediaContainer.cs | 26 - .../Requests/GetServerActivitiesResponse.cs | 40 - .../GetServerActivitiesResponseBody.cs | 25 - .../Requests/GetServerCapabilitiesResponse.cs | 40 - .../GetServerCapabilitiesResponseBody.cs | 25 - .../GetServerIdentityMediaContainer.cs | 30 - .../Requests/GetServerIdentityResponse.cs | 40 - .../Requests/GetServerIdentityResponseBody.cs | 25 - .../Models/Requests/GetServerInfoRequest.cs | 84 + .../Models/Requests/GetServerInfoResponse.cs | 40 + .../Requests/GetServerListMediaContainer.cs | 26 - .../Models/Requests/GetServerListResponse.cs | 40 - .../Requests/GetServerListResponseBody.cs | 25 - .../Models/Requests/GetServerListServer.cs | 36 - .../GetServerPreferencesMediaContainer.cs | 26 - .../Requests/GetServerPreferencesResponse.cs | 40 - .../GetServerPreferencesResponseBody.cs | 25 - .../Requests/GetServerResourcesRequest.cs | 47 - .../Requests/GetServerResourcesResponse.cs | 41 - .../GetSessionHistoryMediaContainer.cs | 26 - .../Requests/GetSessionHistoryMetadata.cs | 76 - .../Requests/GetSessionHistoryRequest.cs | 59 - .../Requests/GetSessionHistoryResponse.cs | 40 - .../Requests/GetSessionHistoryResponseBody.cs | 25 - .../GetSessionPlaylistIndexRequest.cs | 96 + .../GetSessionPlaylistIndexResponse.cs | 34 + .../Requests/GetSessionSegmentRequest.cs | 102 + .../Requests/GetSessionSegmentResponse.cs | 34 + .../SDK/Models/Requests/GetSessionsMedia.cs | 44 - .../Requests/GetSessionsMediaContainer.cs | 26 - .../Models/Requests/GetSessionsMetadata.cs | 137 - .../SDK/Models/Requests/GetSessionsPart.cs | 50 - .../Models/Requests/GetSessionsResponse.cs | 9 +- .../Requests/GetSessionsResponseBody.cs | 25 - .../SDK/Models/Requests/GetSessionsStream.cs | 78 - .../SDK/Models/Requests/GetSessionsUser.cs | 27 - .../Models/Requests/GetSonicPathRequest.cs | 114 + .../Models/Requests/GetSonicPathResponse.cs | 40 + .../Requests/GetSonicallySimilarRequest.cs | 115 + .../Requests/GetSonicallySimilarResponse.cs | 40 + ...urceConnectionInformationMediaContainer.cs | 57 + .../GetSourceConnectionInformationRequest.cs | 73 + .../GetSourceConnectionInformationResponse.cs | 6 + ...SourceConnectionInformationResponseBody.cs | 25 + .../Models/Requests/GetStatisticsDevice.cs | 33 - .../Requests/GetStatisticsMediaContainer.cs | 32 - .../Models/Requests/GetStatisticsRequest.cs | 28 - .../Models/Requests/GetStatisticsResponse.cs | 40 - .../Requests/GetStatisticsResponseBody.cs | 25 - .../Models/Requests/GetStreamLevelsLevel.cs | 24 + .../Requests/GetStreamLevelsMediaContainer.cs | 64 + .../Models/Requests/GetStreamLevelsRequest.cs | 96 + .../Requests/GetStreamLevelsResponse.cs | 40 + .../Requests/GetStreamLevelsResponseBody.cs | 25 + .../Requests/GetStreamLoudnessRequest.cs | 96 + .../Requests/GetStreamLoudnessResponse.cs | 39 + .../SDK/Models/Requests/GetStreamRequest.cs | 114 + .../SDK/Models/Requests/GetStreamResponse.cs | 34 + .../Models/Requests/GetSubscriptionRequest.cs | 99 + .../Requests/GetSubscriptionResponse.cs | 40 + .../Models/Requests/GetTagsMediaContainer.cs | 58 + .../SDK/Models/Requests/GetTagsRequest.cs | 90 + .../SDK/Models/Requests/GetTagsResponse.cs | 40 + .../Models/Requests/GetTagsResponseBody.cs | 25 + .../SDK/Models/Requests/GetTasksResponse.cs | 40 + .../Models/Requests/GetTasksResponseBody.cs | 25 + .../Requests/GetTemplateMediaContainer.cs | 58 + .../SDK/Models/Requests/GetTemplateRequest.cs | 90 + .../Models/Requests/GetTemplateResponse.cs | 43 + .../Requests/GetTemplateResponseBody.cs | 25 + .../Models/Requests/GetThumbImageRequest.cs | 41 - .../Models/Requests/GetThumbImageResponse.cs | 42 - .../SDK/Models/Requests/GetThumbRequest.cs | 96 + .../SDK/Models/Requests/GetThumbResponse.cs | 34 + .../SDK/Models/Requests/GetTimelineRequest.cs | 83 - .../Models/Requests/GetTimelineResponse.cs | 34 - .../GetTokenByPinIdAuthPinContainer.cs | 68 - .../Models/Requests/GetTokenByPinIdGeoData.cs | 87 - .../Models/Requests/GetTokenByPinIdRequest.cs | 53 - .../Requests/GetTokenByPinIdResponse.cs | 40 - ...okenDetailsAuthenticationResponseStatus.cs | 78 - .../GetTokenDetailsAuthenticationStatus.cs | 78 - .../Requests/GetTokenDetailsResponse.cs | 40 - .../Models/Requests/GetTokenDetailsStatus.cs | 75 - .../Requests/GetTokenDetailsSubscription.cs | 59 - .../GetTokenDetailsUserPlexAccount.cs | 255 - .../Requests/GetTopWatchedContentCountry.cs | 27 - .../Requests/GetTopWatchedContentGenre.cs | 27 - .../Requests/GetTopWatchedContentGuids.cs | 21 - .../GetTopWatchedContentMediaContainer.cs | 53 - .../Requests/GetTopWatchedContentMetadata.cs | 117 - ...TopWatchedContentQueryParamIncludeGuids.cs | 27 - .../GetTopWatchedContentQueryParamType.cs | 100 - .../Requests/GetTopWatchedContentRequest.cs | 48 - .../Requests/GetTopWatchedContentResponse.cs | 40 - .../GetTopWatchedContentResponseBody.cs | 25 - .../Requests/GetTopWatchedContentRole.cs | 36 - .../Requests/GetTopWatchedContentUser.cs | 21 - .../GetTranscodeSessionsMediaContainer.cs | 26 - .../Requests/GetTranscodeSessionsResponse.cs | 40 - .../GetTranscodeSessionsResponseBody.cs | 25 - .../GetTransientTokenMediaContainer.cs | 59 + .../GetTransientTokenQueryParamType.cs | 58 - .../Requests/GetTransientTokenRequest.cs | 75 +- .../Requests/GetTransientTokenResponse.cs | 6 + .../Requests/GetTransientTokenResponseBody.cs | 25 + .../Requests/GetUpdateStatusMediaContainer.cs | 38 - .../Requests/GetUpdateStatusResponse.cs | 40 - .../Requests/GetUpdateStatusResponseBody.cs | 25 - .../GetUpdatesStatusMediaContainer.cs | 53 + .../Requests/GetUpdatesStatusResponse.cs | 40 + .../Requests/GetUpdatesStatusResponseBody.cs | 25 + .../Models/Requests/GetUpdatesStatusState.cs | 88 + .../Models/Requests/GetUserFriendsResponse.cs | 41 - .../Models/Requests/GetUsersMediaContainer.cs | 49 - .../SDK/Models/Requests/GetUsersRequest.cs | 95 - .../SDK/Models/Requests/GetUsersResponse.cs | 36 - .../Models/Requests/GetUsersResponseBody.cs | 26 - .../SDK/Models/Requests/GetUsersServer.cs | 51 - .../Models/Requests/GetWatchListRequest.cs | 112 - .../Models/Requests/GetWatchListResponse.cs | 40 - .../Requests/GetWatchListResponseBody.cs | 44 - .../PlexAPI/SDK/Models/Requests/Guids.cs | 28 - .../SDK/Models/Requests/HasThumbnail.cs | 60 - .../PlexAPI/SDK/Models/Requests/Hidden.cs | 24 - .../PlexAPI/SDK/Models/Requests/Hints.cs | 20 + LukeHagar/PlexAPI/SDK/Models/Requests/Home.cs | 23 - .../SDK/Models/Requests/HomeVisibility.cs | 72 + LukeHagar/PlexAPI/SDK/Models/Requests/Hub.cs | 82 +- .../PlexAPI/SDK/Models/Requests/Image.cs | 27 - .../SDK/Models/Requests/IncludeAdvanced.cs | 20 - .../SDK/Models/Requests/IncludeCollections.cs | 27 - .../SDK/Models/Requests/IncludeDetails.cs | 28 - .../Models/Requests/IncludeExternalMedia.cs | 27 - .../SDK/Models/Requests/IncludeGuids.cs | 27 - .../SDK/Models/Requests/IncludeHttps.cs | 23 - .../SDK/Models/Requests/IncludeIPv6.cs | 23 - .../SDK/Models/Requests/IncludeMeta.cs | 27 - .../SDK/Models/Requests/IncludeRelay.cs | 28 - .../PlexAPI/SDK/Models/Requests/Index.cs | 58 + .../Requests/IngestTransientItemRequest.cs | 108 + .../Requests/IngestTransientItemResponse.cs | 43 + .../Models/Requests/InternalPaymentMethod.cs | 17 - LukeHagar/PlexAPI/SDK/Models/Requests/Item.cs | 61 + .../PlexAPI/SDK/Models/Requests/Language.cs | 27 + .../PlexAPI/SDK/Models/Requests/Level.cs | 79 +- .../PlexAPI/SDK/Models/Requests/Libtype.cs | 82 - .../PlexAPI/SDK/Models/Requests/Lineup.cs | 57 + .../PlexAPI/SDK/Models/Requests/LineupType.cs | 36 + .../Requests/ListActivitiesMediaContainer.cs | 23 + .../Models/Requests/ListActivitiesResponse.cs | 40 + .../Requests/ListActivitiesResponseBody.cs | 25 + .../SDK/Models/Requests/ListContentRequest.cs | 96 + .../Models/Requests/ListContentResponse.cs | 43 + .../Requests/ListDVRsDVRsMediaContainer.cs | 59 + .../Models/Requests/ListDVRsMediaContainer.cs | 26 + .../SDK/Models/Requests/ListDVRsResponse.cs | 43 + .../Models/Requests/ListDVRsResponseBody.cs | 25 + .../Models/Requests/ListDevicesResponse.cs | 43 + .../ListDownloadQueueItemsMediaContainer.cs | 58 + .../Requests/ListDownloadQueueItemsRequest.cs | 90 + .../ListDownloadQueueItemsResponse.cs | 40 + .../ListDownloadQueueItemsResponseBody.cs | 25 + .../Requests/ListDownloadQueueItemsStatus.cs | 78 + .../Models/Requests/ListHubsMediaContainer.cs | 58 + .../SDK/Models/Requests/ListHubsRequest.cs | 96 + .../SDK/Models/Requests/ListHubsResponse.cs | 43 + .../Models/Requests/ListHubsResponseBody.cs | 25 + .../SDK/Models/Requests/ListLineupsRequest.cs | 102 + .../Models/Requests/ListLineupsResponse.cs | 43 + .../SDK/Models/Requests/ListMatchesRequest.cs | 105 + .../Models/Requests/ListMatchesResponse.cs | 40 + .../SDK/Models/Requests/ListMomentsRequest.cs | 90 + .../Models/Requests/ListMomentsResponse.cs | 40 + .../Models/Requests/ListPersonMediaRequest.cs | 90 + .../Requests/ListPersonMediaResponse.cs | 40 + .../ListPlaybackHistoryMediaContainer.cs | 58 + .../Requests/ListPlaybackHistoryMetadata.cs | 84 + .../Requests/ListPlaybackHistoryRequest.cs | 115 + .../Requests/ListPlaybackHistoryResponse.cs | 43 + .../ListPlaybackHistoryResponseBody.cs | 25 + .../Models/Requests/ListPlaylistsRequest.cs | 97 + .../Models/Requests/ListPlaylistsResponse.cs | 43 + .../Requests/ListProvidersMediaContainer.cs | 236 + .../Models/Requests/ListProvidersResponse.cs | 40 + .../Requests/ListProvidersResponseBody.cs | 25 + .../Requests/ListSessionsMediaContainer.cs | 58 + .../Models/Requests/ListSessionsResponse.cs | 43 + .../Requests/ListSessionsResponseBody.cs | 25 + .../SDK/Models/Requests/ListSimilarRequest.cs | 93 + .../Models/Requests/ListSimilarResponse.cs | 40 + .../Requests/ListSonicallySimilarRequest.cs | 99 + .../Requests/ListSonicallySimilarResponse.cs | 40 + .../Requests/ListTopUsersMediaContainer.cs | 58 + .../Models/Requests/ListTopUsersRequest.cs | 87 + .../Models/Requests/ListTopUsersResponse.cs | 40 + .../Requests/ListTopUsersResponseBody.cs | 25 + .../PlexAPI/SDK/Models/Requests/Location.cs | 48 +- .../SDK/Models/Requests/LogLineRequest.cs | 50 - .../SDK/Models/Requests/LogLineResponse.cs | 34 - .../Models/Requests/LogMultiLineResponse.cs | 34 - .../SDK/Models/Requests/MailingListStatus.cs | 78 - .../Models/Requests/MakeDecisionRequest.cs | 283 + .../Models/Requests/MakeDecisionResponse.cs | 40 + .../SDK/Models/Requests/MarkPlayedRequest.cs | 83 +- .../Models/Requests/MarkUnplayedRequest.cs | 23 - .../Models/Requests/MarkUnplayedResponse.cs | 34 - .../PlexAPI/SDK/Models/Requests/Marker.cs | 43 - .../SDK/Models/Requests/MatchItemRequest.cs | 96 + .../SDK/Models/Requests/MatchItemResponse.cs | 34 + .../PlexAPI/SDK/Models/Requests/Media.cs | 133 - .../SDK/Models/Requests/MediaContainer.cs | 90 +- .../SDK/Models/Requests/MediaGrabber.cs | 27 + .../SDK/Models/Requests/MediaProvider.cs | 35 - .../Models/Requests/MediaReviewsVisibility.cs | 23 - .../SDK/Models/Requests/MediaSettings.cs | 79 + .../SDK/Models/Requests/MediaSubscription.cs | 111 + .../SDK/Models/Requests/MergeItemsRequest.cs | 91 + .../SDK/Models/Requests/MergeItemsResponse.cs | 34 + LukeHagar/PlexAPI/SDK/Models/Requests/Meta.cs | 33 - .../PlexAPI/SDK/Models/Requests/Metadata.cs | 452 +- .../PlexAPI/SDK/Models/Requests/MinSize.cs | 23 - .../Requests/ModifyDeviceMediaContainer.cs | 59 + .../Models/Requests/ModifyDeviceRequest.cs | 96 + .../Models/Requests/ModifyDeviceResponse.cs | 43 + .../Requests/ModifyDeviceResponseBody.cs | 25 + .../Requests/MoveCollectionItemRequest.cs | 102 + .../Requests/MoveCollectionItemResponse.cs | 40 + .../SDK/Models/Requests/MoveHubRequest.cs | 102 + .../SDK/Models/Requests/MoveHubResponse.cs | 43 + .../Requests/MovePlayQueueItemRequest.cs | 102 + .../Requests/MovePlayQueueItemResponse.cs | 40 + .../Requests/MovePlaylistItemRequest.cs | 102 + .../Requests/MovePlaylistItemResponse.cs | 40 + .../PlexAPI/SDK/Models/Requests/MyPlex.cs | 54 - LukeHagar/PlexAPI/SDK/Models/Requests/One.cs | 20 - .../SDK/Models/Requests/OnlyTransient.cs | 23 - .../PlexAPI/SDK/Models/Requests/Operator.cs | 24 - .../Requests/OptimizeDatabaseRequest.cs | 90 + .../Requests/OptimizeDatabaseResponse.cs | 34 + .../Models/Requests/OptimizedForStreaming.cs | 203 - .../Models/Requests/OptimizedForStreaming1.cs | 20 - .../PlexAPI/SDK/Models/Requests/Owned.cs | 23 - .../PlexAPI/SDK/Models/Requests/Params.cs | 26 + LukeHagar/PlexAPI/SDK/Models/Requests/Part.cs | 105 - .../SDK/Models/Requests/PastSubscription.cs | 68 - .../SDK/Models/Requests/PathParamElement.cs | 65 + .../SDK/Models/Requests/PathParamIndex.cs | 58 + .../SDK/Models/Requests/PathParamTask.cs | 100 + .../SDK/Models/Requests/PathParamTaskName.cs | 102 - .../PlexAPI/SDK/Models/Requests/Pending.cs | 23 - .../Models/Requests/PerformSearchRequest.cs | 35 - .../Models/Requests/PerformSearchResponse.cs | 34 - .../Requests/PerformVoiceSearchRequest.cs | 35 - .../Requests/PerformVoiceSearchResponse.cs | 34 - .../SDK/Models/Requests/PlayQueueGenerator.cs | 53 + .../PlexAPI/SDK/Models/Requests/Player.cs | 63 - .../SDK/Models/Requests/PlaylistType.cs | 90 +- .../PlexAPI/SDK/Models/Requests/PlexDevice.cs | 96 - .../PlexAPI/SDK/Models/Requests/Policy.cs | 34 + .../Models/Requests/PostMediaArtsRequest.cs | 35 - .../Models/Requests/PostMediaArtsResponse.cs | 34 - .../Models/Requests/PostMediaPosterRequest.cs | 35 - .../Requests/PostMediaPosterResponse.cs | 34 - ...sSignInDataAuthenticationResponseStatus.cs | 78 - ...PostUsersSignInDataAuthenticationStatus.cs | 78 - ...ersSignInDataAuthenticationSubscription.cs | 59 - .../PostUsersSignInDataAutoSelectSubtitle.cs | 23 - ...sSignInDataDefaultSubtitleAccessibility.cs | 23 - ...ostUsersSignInDataDefaultSubtitleForced.cs | 23 - .../PostUsersSignInDataMailingListStatus.cs | 78 - ...stUsersSignInDataMediaReviewsVisibility.cs | 23 - .../Requests/PostUsersSignInDataRequest.cs | 54 - .../PostUsersSignInDataRequestBody.cs | 32 - .../Requests/PostUsersSignInDataResponse.cs | 40 - .../Requests/PostUsersSignInDataServices.cs | 38 - .../Requests/PostUsersSignInDataState.cs | 73 - .../Requests/PostUsersSignInDataStatus.cs | 75 - .../PostUsersSignInDataSubscription.cs | 62 - .../PostUsersSignInDataUserPlexAccount.cs | 261 - .../PostUsersSignInDataUserProfile.cs | 52 - .../PostUsersSignInDataWatchedIndicator.cs | 23 - .../PlexAPI/SDK/Models/Requests/Prefs.cs | 17 + .../Requests/ProcessSubscriptionsResponse.cs | 37 + .../SDK/Models/Requests/ProcessingState.cs | 68 + .../Models/Requests/ProcessingStateContext.cs | 80 + .../PlexAPI/SDK/Models/Requests/Producer.cs | 52 - .../PlexAPI/SDK/Models/Requests/Protected.cs | 23 - .../PlexAPI/SDK/Models/Requests/Protocol.cs | 12 +- .../PlexAPI/SDK/Models/Requests/Provider.cs | 27 - .../SDK/Models/Requests/QueryParamArgs.cs | 17 + .../Models/Requests/QueryParamAttributes.cs | 20 + .../SDK/Models/Requests/QueryParamFilter.cs | 25 - .../SDK/Models/Requests/QueryParamForce.cs | 30 - .../Requests/QueryParamIncludeCollections.cs | 20 - .../QueryParamIncludeExternalMedia.cs | 20 - .../Models/Requests/QueryParamIncludeGuids.cs | 27 - .../Models/Requests/QueryParamIncludeMeta.cs | 27 - .../SDK/Models/Requests/QueryParamLocation.cs | 62 + .../Requests/QueryParamOnlyTransient.cs | 23 - .../SDK/Models/Requests/QueryParamPrefs.cs | 20 + .../SDK/Models/Requests/QueryParamProtocol.cs | 66 + .../SDK/Models/Requests/QueryParamSmart.cs | 77 - .../Models/Requests/QueryParamSubtitles.cs | 74 + .../SDK/Models/Requests/QueryParamType.cs | 106 +- .../PlexAPI/SDK/Models/Requests/Rating.cs | 33 - .../PlexAPI/SDK/Models/Requests/Ratings.cs | 36 - .../Requests/RecommendationsVisibility.cs | 72 + .../Requests/RefreshItemsMetadataRequest.cs | 93 + .../Requests/RefreshItemsMetadataResponse.cs | 34 + .../Models/Requests/RefreshPlaylistRequest.cs | 109 + .../Requests/RefreshPlaylistResponse.cs | 34 + .../Requests/RefreshProvidersResponse.cs | 34 + .../Models/Requests/RefreshSectionRequest.cs | 102 + .../Models/Requests/RefreshSectionResponse.cs | 34 + .../RefreshSectionsMetadataRequest.cs | 90 + .../RefreshSectionsMetadataResponse.cs | 34 + .../PlexAPI/SDK/Models/Requests/Release.cs | 53 +- .../SDK/Models/Requests/ReloadGuideRequest.cs | 90 + .../Models/Requests/ReloadGuideResponse.cs | 37 + .../Models/Requests/RemoveDeviceFromDVRDVR.cs | 35 + .../RemoveDeviceFromDVRDVRsMediaContainer.cs | 59 + .../RemoveDeviceFromDVRMediaContainer.cs | 26 + .../Requests/RemoveDeviceFromDVRRequest.cs | 96 + .../Requests/RemoveDeviceFromDVRResponse.cs | 43 + .../RemoveDeviceFromDVRResponseBody.cs | 25 + .../Requests/RemoveDeviceMediaContainer.cs | 59 + .../Models/Requests/RemoveDeviceRequest.cs | 90 + .../Models/Requests/RemoveDeviceResponse.cs | 43 + .../Requests/RemoveDeviceResponseBody.cs | 25 + .../RemoveDownloadQueueItemsRequest.cs | 97 + .../RemoveDownloadQueueItemsResponse.cs | 34 + .../Requests/ReorderSubscriptionRequest.cs | 93 + .../Requests/ReorderSubscriptionResponse.cs | 40 + .../SDK/Models/Requests/ReportRequest.cs | 175 + .../SDK/Models/Requests/ReportResponse.cs | 40 + .../SDK/Models/Requests/ReportResponseBody.cs | 25 + .../Models/Requests/ResetPlayQueueRequest.cs | 90 + .../Models/Requests/ResetPlayQueueResponse.cs | 40 + .../Requests/ResetSectionDefaultsRequest.cs | 90 + .../Requests/ResetSectionDefaultsResponse.cs | 34 + .../SDK/Models/Requests/ResponseBody.cs | 39 - ...tartProcessingDownloadQueueItemsRequest.cs | 97 + ...artProcessingDownloadQueueItemsResponse.cs | 34 + .../PlexAPI/SDK/Models/Requests/Restricted.cs | 23 - LukeHagar/PlexAPI/SDK/Models/Requests/Role.cs | 64 - .../SDK/Models/Requests/ScanRequest.cs | 96 + .../SDK/Models/Requests/ScanResponse.cs | 43 + .../PlexAPI/SDK/Models/Requests/Scope.cs | 2 +- .../Requests/SearchHubsMediaContainer.cs | 58 + .../SDK/Models/Requests/SearchHubsRequest.cs | 102 + .../SDK/Models/Requests/SearchHubsResponse.cs | 43 + .../Models/Requests/SearchHubsResponseBody.cs | 25 + .../SDK/Models/Requests/SearchResult.cs | 31 - .../SDK/Models/Requests/SearchTypes.cs | 81 - .../PlexAPI/SDK/Models/Requests/Server.cs | 51 - .../PlexAPI/SDK/Models/Requests/Services.cs | 38 - .../PlexAPI/SDK/Models/Requests/Session.cs | 27 - .../Models/Requests/SetChannelmapRequest.cs | 110 + .../Models/Requests/SetChannelmapResponse.cs | 40 + .../Models/Requests/SetDVRPreferencesDVR.cs | 35 + .../SetDVRPreferencesDVRsMediaContainer.cs | 59 + .../SetDVRPreferencesMediaContainer.cs | 26 + .../Requests/SetDVRPreferencesRequest.cs | 96 + .../Requests/SetDVRPreferencesResponse.cs | 43 + .../Requests/SetDVRPreferencesResponseBody.cs | 25 + .../Requests/SetDevicePreferencesRequest.cs | 96 + .../Requests/SetDevicePreferencesResponse.cs | 34 + .../Models/Requests/SetItemArtworkRequest.cs | 97 + .../Models/Requests/SetItemArtworkResponse.cs | 34 + .../Requests/SetItemPreferencesRequest.cs | 91 + .../Requests/SetItemPreferencesResponse.cs | 34 + .../Models/Requests/SetPreferencesRequest.cs | 88 + .../Models/Requests/SetPreferencesResponse.cs | 34 + .../SDK/Models/Requests/SetRatingRequest.cs | 108 + .../SDK/Models/Requests/SetRatingResponse.cs | 34 + .../SetSectionPreferencesQueryParamPrefs.cs | 17 + .../Requests/SetSectionPreferencesRequest.cs | 94 + .../Requests/SetSectionPreferencesResponse.cs | 34 + .../Models/Requests/SetStreamOffsetRequest.cs | 102 + .../Requests/SetStreamOffsetResponse.cs | 34 + .../Requests/SetStreamSelectionRequest.cs | 108 + .../Requests/SetStreamSelectionResponse.cs | 34 + .../PlexAPI/SDK/Models/Requests/Setting.cs | 48 - .../SDK/Models/Requests/SharedServers.cs | 17 - .../SDK/Models/Requests/SharedSources.cs | 17 - .../SDK/Models/Requests/ShowOrdering.cs | 94 - .../SDK/Models/Requests/ShuffleRequest.cs | 90 + .../SDK/Models/Requests/ShuffleResponse.cs | 40 + .../PlexAPI/SDK/Models/Requests/Similar.cs | 30 - LukeHagar/PlexAPI/SDK/Models/Requests/Skip.cs | 23 - .../PlexAPI/SDK/Models/Requests/Smart.cs | 23 - LukeHagar/PlexAPI/SDK/Models/Requests/Sort.cs | 57 - .../SDK/Models/Requests/SplitItemRequest.cs | 87 + .../SDK/Models/Requests/SplitItemResponse.cs | 34 + .../Models/Requests/StartAllTasksResponse.cs | 34 - .../Models/Requests/StartAnalysisRequest.cs | 90 + .../Models/Requests/StartAnalysisResponse.cs | 34 + .../Requests/StartBifGenerationRequest.cs | 90 + .../Requests/StartBifGenerationResponse.cs | 34 + .../SDK/Models/Requests/StartTaskRequest.cs | 78 +- .../SDK/Models/Requests/StartTasksResponse.cs | 34 + ...StartTranscodeSessionQueryParamLocation.cs | 62 + ...StartTranscodeSessionQueryParamProtocol.cs | 66 + ...tartTranscodeSessionQueryParamSubtitles.cs | 74 + .../Requests/StartTranscodeSessionRequest.cs | 293 + .../Requests/StartTranscodeSessionResponse.cs | 39 + .../StartUniversalTranscodeRequest.cs | 113 - .../StartUniversalTranscodeResponse.cs | 34 - .../PlexAPI/SDK/Models/Requests/State.cs | 92 +- .../Models/Requests/StatisticsBandwidth.cs | 36 - .../SDK/Models/Requests/StatisticsMedia.cs | 39 - .../Models/Requests/StatisticsResources.cs | 36 - .../PlexAPI/SDK/Models/Requests/Status.cs | 99 +- .../Requests/StopAllRefreshesResponse.cs | 40 + .../Models/Requests/StopAllTasksResponse.cs | 34 - .../Models/Requests/StopDVRReloadRequest.cs | 90 + .../Models/Requests/StopDVRReloadResponse.cs | 34 + .../SDK/Models/Requests/StopScanRequest.cs | 90 + .../SDK/Models/Requests/StopScanResponse.cs | 40 + .../SDK/Models/Requests/StopTaskRequest.cs | 78 +- .../SDK/Models/Requests/StopTasksResponse.cs | 34 + .../Requests/StopTranscodeSessionRequest.cs | 23 - .../Requests/StopTranscodeSessionResponse.cs | 34 - .../PlexAPI/SDK/Models/Requests/Stream.cs | 316 - .../SDK/Models/Requests/Subscription.cs | 62 - .../Models/Requests/SubscriptionTemplate.cs | 23 + .../PlexAPI/SDK/Models/Requests/Subtitles.cs | 74 + LukeHagar/PlexAPI/SDK/Models/Requests/Tag.cs | 106 - LukeHagar/PlexAPI/SDK/Models/Requests/Task.cs | 100 + .../PlexAPI/SDK/Models/Requests/TaskName.cs | 102 - .../Requests/TerminateSessionRequest.cs | 96 + .../Requests/TerminateSessionResponse.cs | 34 + .../PlexAPI/SDK/Models/Requests/Tonight.cs | 23 - .../PlexAPI/SDK/Models/Requests/Transcode.cs | 20 + .../Models/Requests/TranscodeImageRequest.cs | 177 + .../Models/Requests/TranscodeImageResponse.cs | 49 + .../SDK/Models/Requests/TranscodeJob.cs | 64 + .../SDK/Models/Requests/TranscodeSession.cs | 90 - .../Requests/TranscodeSubtitlesRequest.cs | 283 + .../Requests/TranscodeSubtitlesResponse.cs | 34 + .../PlexAPI/SDK/Models/Requests/Trials.cs | 17 - .../Models/Requests/TriggerFallbackRequest.cs | 96 + .../Requests/TriggerFallbackResponse.cs | 34 + .../SDK/Models/Requests/TuneChannelRequest.cs | 96 + .../Models/Requests/TuneChannelResponse.cs | 43 + LukeHagar/PlexAPI/SDK/Models/Requests/Type.cs | 110 +- .../SDK/Models/Requests/UltraBlurColors.cs | 32 +- .../SDK/Models/Requests/UnmatchRequest.cs | 87 + .../SDK/Models/Requests/UnmatchResponse.cs | 34 + .../SDK/Models/Requests/UnscrobbleRequest.cs | 102 + .../SDK/Models/Requests/UnscrobbleResponse.cs | 34 + .../SDK/Models/Requests/UnshuffleRequest.cs | 90 + .../SDK/Models/Requests/UnshuffleResponse.cs | 40 + .../Requests/UpdateHubVisibilityRequest.cs | 114 + .../Requests/UpdateHubVisibilityResponse.cs | 34 + .../Requests/UpdateItemArtworkRequest.cs | 97 + .../Requests/UpdateItemArtworkResponse.cs | 34 + .../SDK/Models/Requests/UpdateItemsRequest.cs | 165 + .../Models/Requests/UpdateItemsResponse.cs | 34 + .../Requests/UpdatePlayProgressRequest.cs | 35 - .../Requests/UpdatePlayProgressResponse.cs | 34 - .../Models/Requests/UpdatePlaylistRequest.cs | 73 +- .../Models/Requests/UploadPlaylistRequest.cs | 98 +- .../PlexAPI/SDK/Models/Requests/Upscale.cs | 23 - LukeHagar/PlexAPI/SDK/Models/Requests/User.cs | 95 - .../SDK/Models/Requests/UserProfile.cs | 52 - .../Requests/VoiceSearchHubsMediaContainer.cs | 58 + .../Models/Requests/VoiceSearchHubsRequest.cs | 102 + .../Requests/VoiceSearchHubsResponse.cs | 43 + .../Requests/VoiceSearchHubsResponseBody.cs | 25 + .../SDK/Models/Requests/WatchedIndicator.cs | 23 - .../SDK/Models/Requests/WriteLogResponse.cs | 34 + .../Models/Requests/WriteMessageRequest.cs | 112 + .../Models/Requests/WriteMessageResponse.cs | 34 + .../PlexAPI/SDK/Models/Requests/Writer.cs | 48 - LukeHagar/PlexAPI/SDK/PlayQueue.cs | 1091 ++ LukeHagar/PlexAPI/SDK/Playlist.cs | 387 + LukeHagar/PlexAPI/SDK/Playlists.cs | 1298 --- LukeHagar/PlexAPI/SDK/Plex.cs | 1073 -- LukeHagar/PlexAPI/SDK/PlexAPI.cs | 596 +- LukeHagar/PlexAPI/SDK/Preferences.cs | 352 + LukeHagar/PlexAPI/SDK/Provider.cs | 418 + LukeHagar/PlexAPI/SDK/Rate.cs | 144 + LukeHagar/PlexAPI/SDK/SDKConfig.cs | 42 +- LukeHagar/PlexAPI/SDK/Search.cs | 432 +- LukeHagar/PlexAPI/SDK/Server.cs | 1277 --- LukeHagar/PlexAPI/SDK/Sessions.cs | 607 -- LukeHagar/PlexAPI/SDK/Statistics.cs | 485 - LukeHagar/PlexAPI/SDK/Status.cs | 679 ++ LukeHagar/PlexAPI/SDK/Subscriptions.cs | 1099 ++ LukeHagar/PlexAPI/SDK/Timeline.cs | 353 + LukeHagar/PlexAPI/SDK/Transcoder.cs | 578 ++ LukeHagar/PlexAPI/SDK/UltraBlur.cs | 257 + LukeHagar/PlexAPI/SDK/Updater.cs | 510 +- LukeHagar/PlexAPI/SDK/Users.cs | 178 - LukeHagar/PlexAPI/SDK/Video.cs | 298 - LukeHagar/PlexAPI/SDK/Watchlist.cs | 207 - NUGET.md | 505 +- README.md | 920 +- RELEASES.md | 12 +- USAGE.md | 50 +- codeSamples.yaml | 7776 ++++++++++++-- docs/Models/Components/Accepts.md | 9 + docs/Models/Components/AdvancedSubtitles.md | 10 + docs/Models/Components/AiringsType.md | 9 + docs/Models/Components/BoolInt.md | 9 + docs/Models/Components/Channel.md | 15 + docs/Models/Components/ChannelMapping.md | 11 + docs/Models/Components/Composite.md | 18 + docs/Models/Components/CompositeMedia.md | 12 + docs/Models/Components/Crop.md | 11 + docs/Models/Components/Decision.md | 10 + docs/Models/Components/Default.md | 24 + docs/Models/Components/DefaultDirection.md | 11 + docs/Models/Components/Device.md | 20 + docs/Models/Components/Directory.md | 23 + docs/Models/Components/Dvr.md | 12 + .../DvrRequestHandlerSlashGetResponses200.md | 10 + ...ndlerSlashGetResponses200MediaContainer.md | 9 + ...esponses200MediaContainerMediaContainer.md | 17 + docs/Models/Components/Filter.md | 27 + docs/Models/Components/FilterPivot.md | 13 + docs/Models/Components/Format.md | 11 + docs/Models/Components/GetResponses200.md | 10 + docs/Models/Components/GetResponses200Hub.md | 14 + .../GetResponses200MediaContainer.md | 17 + .../Components/HistoryAllGetResponses200.md | 10 + ...HistoryAllGetResponses200MediaContainer.md | 17 + .../HistoryAllGetResponses200Metadata.md | 18 + docs/Models/Components/HomeVisibility.md | 18 + docs/Models/Components/Hub.md | 22 + docs/Models/Components/Image.md | 13 + docs/Models/Components/ImageType.md | 14 + docs/Models/Components/Items.md | 83 + docs/Models/Components/LibrarySection.md | 27 + .../Components/LibrarySectionLocation.md | 11 + docs/Models/Components/Lineup.md | 12 + docs/Models/Components/LineupType.md | 21 + docs/Models/Components/Location.md | 10 + docs/Models/Components/Media.md | 29 + docs/Models/Components/MediaContainer.md | 16 + .../Components/MediaContainerWithArtwork.md | 8 + ...MediaContainerWithArtworkMediaContainer.md | 17 + .../MediaContainerWithArtworkMetadata.md | 11 + .../MediaContainerWithArtworkType.md | 8 + .../Components/MediaContainerWithDecision.md | 13 + .../MediaContainerWithDecisionDecision.md | 13 + .../MediaContainerWithDecisionLocation.md | 15 + .../MediaContainerWithDecisionMedia.md | 32 + ...ediaContainerWithDecisionMediaContainer.md | 26 + .../MediaContainerWithDecisionMetadata.md | 82 + .../MediaContainerWithDecisionPart.md | 24 + .../MediaContainerWithDecisionStream.md | 42 + .../Components/MediaContainerWithDevice.md | 8 + .../MediaContainerWithDeviceDevice.md | 20 + .../MediaContainerWithDeviceMediaContainer.md | 17 + .../Components/MediaContainerWithDirectory.md | 8 + ...diaContainerWithDirectoryMediaContainer.md | 17 + .../Components/MediaContainerWithHubs.md | 10 + .../MediaContainerWithHubsMediaContainer.md | 17 + .../Components/MediaContainerWithLineup.md | 8 + .../MediaContainerWithLineupMediaContainer.md | 18 + .../Components/MediaContainerWithMetadata.md | 8 + ...ediaContainerWithMetadataMediaContainer.md | 17 + .../MediaContainerWithNestedMetadata.md | 8 + ...ntainerWithNestedMetadataMediaContainer.md | 17 + .../MediaContainerWithPlaylistMetadata.md | 8 + ...ainerWithPlaylistMetadataMediaContainer.md | 17 + ...iaContainerWithPlaylistMetadataMetadata.md | 86 + .../Components/MediaContainerWithSettings.md | 8 + ...ediaContainerWithSettingsMediaContainer.md | 17 + .../MediaContainerWithSubscription.md | 8 + ...ContainerWithSubscriptionMediaContainer.md | 17 + docs/Models/Components/MediaGrabOperation.md | 21 + docs/Models/Components/MediaQuery.md | 7 + docs/Models/Components/MediaSubscription.md | 26 + docs/Models/Components/Metadata.md | 82 + docs/Models/Components/MetadataItem.md | 83 + docs/Models/Components/Part.md | 22 + docs/Models/{Requests => Components}/Pivot.md | 6 +- docs/Models/Components/Player.md | 24 + docs/Models/Components/PlaylistType.md | 12 + docs/Models/Components/PostResponses200.md | 10 + .../PostResponses200MediaContainer.md | 23 + .../Models/Components/PostResponses200Type.md | 12 + docs/Models/Components/Protocol.md | 10 + .../Components/RecommendationsVisibility.md | 18 + .../RequestHandlerSlashGetResponses200.md | 10 + ...estHandlerSlashGetResponses200Directory.md | 10 + ...ndlerSlashGetResponses200MediaContainer.md | 65 + docs/Models/Components/Security.md | 2 +- docs/Models/Components/Session.md | 12 + docs/Models/Components/SessionLocation.md | 11 + docs/Models/Components/Setting.md | 19 + .../Models/Components/SlashGetResponses200.md | 10 + .../SlashGetResponses200MediaContainer.md | 21 + docs/Models/Components/Sort.md | 30 + docs/Models/Components/SortDefault.md | 11 + docs/Models/Components/SortPivot.md | 13 + docs/Models/Components/Status.md | 15 + docs/Models/Components/Stream.md | 40 + docs/Models/Components/Subtitles.md | 14 + docs/Models/Components/Tag.md | 20 + docs/Models/Components/TranscodeSession.md | 23 + docs/Models/Components/TranscodeType.md | 11 + docs/Models/Components/Type.md | 13 + docs/Models/Components/User.md | 12 + docs/Models/Components/Value.md | 24 + .../Errors/AddPlaylistContentsBadRequest.md | 11 - .../Errors/AddPlaylistContentsErrors.md | 10 - .../AddPlaylistContentsPlaylistsErrors.md | 10 - .../Errors/AddPlaylistContentsUnauthorized.md | 11 - docs/Models/Errors/ApplyUpdatesBadRequest.md | 11 - docs/Models/Errors/ApplyUpdatesErrors.md | 10 - .../Models/Errors/ApplyUpdatesUnauthorized.md | 11 - .../Errors/ApplyUpdatesUpdaterErrors.md | 10 - .../CancelServerActivitiesActivitiesErrors.md | 10 - .../CancelServerActivitiesBadRequest.md | 11 - .../Errors/CancelServerActivitiesErrors.md | 10 - .../CancelServerActivitiesUnauthorized.md | 11 - .../Errors/CheckForUpdatesBadRequest.md | 11 - docs/Models/Errors/CheckForUpdatesErrors.md | 10 - .../Errors/CheckForUpdatesUnauthorized.md | 11 - .../Errors/CheckForUpdatesUpdaterErrors.md | 10 - .../Errors/ClearPlaylistContentsBadRequest.md | 11 - .../Errors/ClearPlaylistContentsErrors.md | 10 - .../ClearPlaylistContentsPlaylistsErrors.md | 10 - .../ClearPlaylistContentsUnauthorized.md | 11 - .../Models/Errors/CreatePlaylistBadRequest.md | 11 - docs/Models/Errors/CreatePlaylistErrors.md | 10 - .../Errors/CreatePlaylistPlaylistsErrors.md | 10 - .../Errors/CreatePlaylistUnauthorized.md | 11 - docs/Models/Errors/DeleteLibraryBadRequest.md | 11 - docs/Models/Errors/DeleteLibraryErrors.md | 10 - .../Errors/DeleteLibraryLibraryErrors.md | 10 - .../Errors/DeleteLibraryUnauthorized.md | 11 - .../Models/Errors/DeletePlaylistBadRequest.md | 11 - docs/Models/Errors/DeletePlaylistErrors.md | 10 - .../Errors/DeletePlaylistPlaylistsErrors.md | 10 - .../Errors/DeletePlaylistUnauthorized.md | 11 - .../Errors/EnablePaperTrailBadRequest.md | 11 - docs/Models/Errors/EnablePaperTrailErrors.md | 10 - .../Errors/EnablePaperTrailLogErrors.md | 10 - .../Errors/EnablePaperTrailUnauthorized.md | 11 - docs/Models/Errors/Errors.md | 10 - .../Errors/GetActorsLibraryBadRequest.md | 11 - docs/Models/Errors/GetActorsLibraryErrors.md | 10 - .../Errors/GetActorsLibraryLibraryErrors.md | 10 - .../Errors/GetActorsLibraryUnauthorized.md | 11 - .../Errors/GetAllLibrariesBadRequest.md | 11 - docs/Models/Errors/GetAllLibrariesErrors.md | 10 - .../Errors/GetAllLibrariesLibraryErrors.md | 10 - .../Errors/GetAllLibrariesUnauthorized.md | 11 - .../Errors/GetAvailableClientsBadRequest.md | 11 - .../Errors/GetAvailableClientsErrors.md | 10 - .../Errors/GetAvailableClientsServerErrors.md | 10 - .../Errors/GetAvailableClientsUnauthorized.md | 11 - .../GetBandwidthStatisticsBadRequest.md | 11 - .../Errors/GetBandwidthStatisticsErrors.md | 10 - .../GetBandwidthStatisticsStatisticsErrors.md | 10 - .../GetBandwidthStatisticsUnauthorized.md | 11 - .../Models/Errors/GetBannerImageBadRequest.md | 11 - docs/Models/Errors/GetBannerImageErrors.md | 10 - .../Errors/GetBannerImageMediaErrors.md | 10 - .../Errors/GetBannerImageUnauthorized.md | 11 - .../Models/Errors/GetButlerTasksBadRequest.md | 11 - .../Errors/GetButlerTasksButlerErrors.md | 10 - docs/Models/Errors/GetButlerTasksErrors.md | 10 - .../Errors/GetButlerTasksUnauthorized.md | 11 - .../Errors/GetCompanionsDataBadRequest.md | 11 - docs/Models/Errors/GetCompanionsDataErrors.md | 10 - .../Errors/GetCompanionsDataPlexErrors.md | 10 - .../Errors/GetCompanionsDataUnauthorized.md | 11 - .../Errors/GetCountriesLibraryBadRequest.md | 11 - .../Errors/GetCountriesLibraryErrors.md | 10 - .../GetCountriesLibraryLibraryErrors.md | 10 - .../Errors/GetCountriesLibraryUnauthorized.md | 11 - docs/Models/Errors/GetDevicesBadRequest.md | 11 - docs/Models/Errors/GetDevicesErrors.md | 10 - docs/Models/Errors/GetDevicesServerErrors.md | 10 - docs/Models/Errors/GetDevicesUnauthorized.md | 11 - docs/Models/Errors/GetFileHashBadRequest.md | 11 - docs/Models/Errors/GetFileHashErrors.md | 10 - .../Models/Errors/GetFileHashLibraryErrors.md | 10 - docs/Models/Errors/GetFileHashUnauthorized.md | 11 - .../Errors/GetGenresLibraryBadRequest.md | 11 - docs/Models/Errors/GetGenresLibraryErrors.md | 10 - .../Errors/GetGenresLibraryLibraryErrors.md | 10 - .../Errors/GetGenresLibraryUnauthorized.md | 11 - docs/Models/Errors/GetGeoDataBadRequest.md | 11 - docs/Models/Errors/GetGeoDataErrors.md | 10 - docs/Models/Errors/GetGeoDataPlexErrors.md | 10 - docs/Models/Errors/GetGeoDataUnauthorized.md | 11 - docs/Models/Errors/GetGlobalHubsBadRequest.md | 11 - docs/Models/Errors/GetGlobalHubsErrors.md | 10 - docs/Models/Errors/GetGlobalHubsHubsErrors.md | 10 - .../Errors/GetGlobalHubsUnauthorized.md | 11 - docs/Models/Errors/GetHomeDataBadRequest.md | 11 - docs/Models/Errors/GetHomeDataErrors.md | 10 - docs/Models/Errors/GetHomeDataPlexErrors.md | 10 - docs/Models/Errors/GetHomeDataUnauthorized.md | 11 - .../Errors/GetLibraryDetailsBadRequest.md | 11 - docs/Models/Errors/GetLibraryDetailsErrors.md | 10 - .../Errors/GetLibraryDetailsLibraryErrors.md | 10 - .../Errors/GetLibraryDetailsUnauthorized.md | 11 - .../Models/Errors/GetLibraryHubsBadRequest.md | 11 - docs/Models/Errors/GetLibraryHubsErrors.md | 10 - .../Models/Errors/GetLibraryHubsHubsErrors.md | 10 - .../Errors/GetLibraryHubsUnauthorized.md | 11 - .../Errors/GetLibraryItemsBadRequest.md | 11 - docs/Models/Errors/GetLibraryItemsErrors.md | 10 - .../Errors/GetLibraryItemsLibraryErrors.md | 10 - .../Errors/GetLibraryItemsUnauthorized.md | 11 - .../Errors/GetLibrarySectionsAllBadRequest.md | 11 - .../Errors/GetLibrarySectionsAllErrors.md | 10 - .../GetLibrarySectionsAllLibraryErrors.md | 10 - .../GetLibrarySectionsAllUnauthorized.md | 11 - .../Errors/GetMediaMetaDataBadRequest.md | 11 - docs/Models/Errors/GetMediaMetaDataErrors.md | 10 - .../Errors/GetMediaMetaDataLibraryErrors.md | 10 - .../Errors/GetMediaMetaDataUnauthorized.md | 11 - .../Errors/GetMediaProvidersBadRequest.md | 11 - docs/Models/Errors/GetMediaProvidersErrors.md | 10 - .../Errors/GetMediaProvidersServerErrors.md | 10 - .../Errors/GetMediaProvidersUnauthorized.md | 11 - .../Errors/GetMetadataChildrenBadRequest.md | 11 - .../Errors/GetMetadataChildrenErrors.md | 10 - .../GetMetadataChildrenLibraryErrors.md | 10 - .../Errors/GetMetadataChildrenUnauthorized.md | 11 - .../Errors/GetMyPlexAccountBadRequest.md | 11 - docs/Models/Errors/GetMyPlexAccountErrors.md | 10 - .../Errors/GetMyPlexAccountServerErrors.md | 10 - .../Errors/GetMyPlexAccountUnauthorized.md | 11 - docs/Models/Errors/GetPinBadRequest.md | 11 - docs/Models/Errors/GetPinErrors.md | 10 - docs/Models/Errors/GetPlaylistBadRequest.md | 11 - .../Errors/GetPlaylistContentsBadRequest.md | 11 - .../Errors/GetPlaylistContentsErrors.md | 10 - .../GetPlaylistContentsPlaylistsErrors.md | 10 - .../Errors/GetPlaylistContentsUnauthorized.md | 11 - docs/Models/Errors/GetPlaylistErrors.md | 10 - .../Errors/GetPlaylistPlaylistsErrors.md | 10 - docs/Models/Errors/GetPlaylistUnauthorized.md | 11 - docs/Models/Errors/GetPlaylistsBadRequest.md | 11 - docs/Models/Errors/GetPlaylistsErrors.md | 10 - .../Errors/GetPlaylistsPlaylistsErrors.md | 10 - .../Models/Errors/GetPlaylistsUnauthorized.md | 11 - .../GetRecentlyAddedLibraryBadRequest.md | 11 - .../Errors/GetRecentlyAddedLibraryErrors.md | 10 - .../GetRecentlyAddedLibraryLibraryErrors.md | 10 - .../GetRecentlyAddedLibraryUnauthorized.md | 11 - .../GetRefreshLibraryMetadataBadRequest.md | 11 - .../Errors/GetRefreshLibraryMetadataErrors.md | 10 - .../GetRefreshLibraryMetadataLibraryErrors.md | 10 - .../GetRefreshLibraryMetadataUnauthorized.md | 11 - .../Errors/GetResizedPhotoBadRequest.md | 11 - docs/Models/Errors/GetResizedPhotoErrors.md | 10 - .../Errors/GetResizedPhotoServerErrors.md | 10 - .../Errors/GetResizedPhotoUnauthorized.md | 11 - .../GetResourcesStatisticsBadRequest.md | 11 - .../Errors/GetResourcesStatisticsErrors.md | 10 - .../GetResourcesStatisticsStatisticsErrors.md | 10 - .../GetResourcesStatisticsUnauthorized.md | 11 - .../Errors/GetSearchAllLibrariesBadRequest.md | 11 - .../Errors/GetSearchAllLibrariesErrors.md | 10 - .../GetSearchAllLibrariesLibraryErrors.md | 10 - .../GetSearchAllLibrariesUnauthorized.md | 11 - .../Errors/GetSearchLibraryBadRequest.md | 11 - docs/Models/Errors/GetSearchLibraryErrors.md | 10 - .../Errors/GetSearchLibraryLibraryErrors.md | 10 - .../Errors/GetSearchLibraryUnauthorized.md | 11 - .../Errors/GetSearchResultsBadRequest.md | 11 - docs/Models/Errors/GetSearchResultsErrors.md | 10 - .../Errors/GetSearchResultsSearchErrors.md | 10 - .../Errors/GetSearchResultsUnauthorized.md | 11 - .../GetServerActivitiesActivitiesErrors.md | 10 - .../Errors/GetServerActivitiesBadRequest.md | 11 - .../Errors/GetServerActivitiesErrors.md | 10 - .../Errors/GetServerActivitiesUnauthorized.md | 11 - .../Errors/GetServerCapabilitiesBadRequest.md | 11 - .../Errors/GetServerCapabilitiesErrors.md | 10 - .../GetServerCapabilitiesUnauthorized.md | 11 - .../Errors/GetServerIdentityRequestTimeout.md | 12 - docs/Models/Errors/GetServerListBadRequest.md | 11 - docs/Models/Errors/GetServerListErrors.md | 10 - .../Errors/GetServerListServerErrors.md | 10 - .../Errors/GetServerListUnauthorized.md | 11 - .../Errors/GetServerPreferencesBadRequest.md | 11 - .../Errors/GetServerPreferencesErrors.md | 10 - .../GetServerPreferencesServerErrors.md | 10 - .../GetServerPreferencesUnauthorized.md | 11 - .../Errors/GetServerResourcesBadRequest.md | 11 - .../Models/Errors/GetServerResourcesErrors.md | 10 - .../Errors/GetServerResourcesPlexErrors.md | 10 - .../Errors/GetServerResourcesUnauthorized.md | 11 - .../Errors/GetSessionHistoryBadRequest.md | 11 - docs/Models/Errors/GetSessionHistoryErrors.md | 10 - .../Errors/GetSessionHistorySessionsErrors.md | 10 - .../Errors/GetSessionHistoryUnauthorized.md | 11 - docs/Models/Errors/GetSessionsBadRequest.md | 11 - docs/Models/Errors/GetSessionsErrors.md | 10 - .../Errors/GetSessionsSessionsErrors.md | 10 - docs/Models/Errors/GetSessionsUnauthorized.md | 11 - ...nnectionInformationAuthenticationErrors.md | 10 - ...etSourceConnectionInformationBadRequest.md | 11 - .../GetSourceConnectionInformationErrors.md | 10 - ...SourceConnectionInformationUnauthorized.md | 11 - docs/Models/Errors/GetStatisticsBadRequest.md | 11 - docs/Models/Errors/GetStatisticsErrors.md | 10 - .../Errors/GetStatisticsStatisticsErrors.md | 10 - .../Errors/GetStatisticsUnauthorized.md | 11 - docs/Models/Errors/GetThumbImageBadRequest.md | 11 - docs/Models/Errors/GetThumbImageErrors.md | 10 - .../Models/Errors/GetThumbImageMediaErrors.md | 10 - .../Errors/GetThumbImageUnauthorized.md | 11 - docs/Models/Errors/GetTimelineBadRequest.md | 11 - docs/Models/Errors/GetTimelineErrors.md | 10 - docs/Models/Errors/GetTimelineUnauthorized.md | 11 - docs/Models/Errors/GetTimelineVideoErrors.md | 10 - .../Errors/GetTokenByPinIdBadRequest.md | 11 - docs/Models/Errors/GetTokenByPinIdErrors.md | 10 - .../Errors/GetTokenByPinIdPlexErrors.md | 9 - .../Errors/GetTokenByPinIdResponseBody.md | 11 - .../GetTokenDetailsAuthenticationErrors.md | 10 - .../Errors/GetTokenDetailsBadRequest.md | 11 - docs/Models/Errors/GetTokenDetailsErrors.md | 10 - .../Errors/GetTokenDetailsUnauthorized.md | 11 - .../Errors/GetTopWatchedContentBadRequest.md | 11 - .../Errors/GetTopWatchedContentErrors.md | 10 - .../GetTopWatchedContentLibraryErrors.md | 10 - .../GetTopWatchedContentUnauthorized.md | 11 - .../Errors/GetTranscodeSessionsBadRequest.md | 11 - .../Errors/GetTranscodeSessionsErrors.md | 10 - .../GetTranscodeSessionsSessionsErrors.md | 10 - .../GetTranscodeSessionsUnauthorized.md | 11 - .../GetTransientTokenAuthenticationErrors.md | 10 - .../Errors/GetTransientTokenBadRequest.md | 11 - docs/Models/Errors/GetTransientTokenErrors.md | 10 - .../Errors/GetTransientTokenUnauthorized.md | 11 - .../Errors/GetUpdateStatusBadRequest.md | 11 - docs/Models/Errors/GetUpdateStatusErrors.md | 10 - .../Errors/GetUpdateStatusUnauthorized.md | 11 - .../Errors/GetUpdateStatusUpdaterErrors.md | 10 - .../Models/Errors/GetUserFriendsBadRequest.md | 11 - docs/Models/Errors/GetUserFriendsErrors.md | 10 - .../Models/Errors/GetUserFriendsPlexErrors.md | 10 - .../Errors/GetUserFriendsUnauthorized.md | 11 - docs/Models/Errors/GetUsersBadRequest.md | 11 - docs/Models/Errors/GetUsersErrors.md | 10 - docs/Models/Errors/GetUsersUnauthorized.md | 11 - docs/Models/Errors/GetUsersUsersErrors.md | 10 - docs/Models/Errors/GetWatchListBadRequest.md | 11 - docs/Models/Errors/GetWatchListErrors.md | 10 - .../Models/Errors/GetWatchListUnauthorized.md | 11 - .../Errors/GetWatchListWatchlistErrors.md | 10 - docs/Models/Errors/LogLineBadRequest.md | 11 - docs/Models/Errors/LogLineErrors.md | 10 - docs/Models/Errors/LogLineLogErrors.md | 10 - docs/Models/Errors/LogLineUnauthorized.md | 11 - docs/Models/Errors/LogMultiLineBadRequest.md | 11 - docs/Models/Errors/LogMultiLineErrors.md | 10 - docs/Models/Errors/LogMultiLineLogErrors.md | 10 - .../Models/Errors/LogMultiLineUnauthorized.md | 11 - docs/Models/Errors/MarkPlayedBadRequest.md | 11 - docs/Models/Errors/MarkPlayedErrors.md | 10 - docs/Models/Errors/MarkPlayedMediaErrors.md | 10 - docs/Models/Errors/MarkPlayedUnauthorized.md | 11 - docs/Models/Errors/MarkUnplayedBadRequest.md | 11 - docs/Models/Errors/MarkUnplayedErrors.md | 10 - docs/Models/Errors/MarkUnplayedMediaErrors.md | 10 - .../Models/Errors/MarkUnplayedUnauthorized.md | 11 - docs/Models/Errors/PerformSearchBadRequest.md | 11 - docs/Models/Errors/PerformSearchErrors.md | 10 - .../Errors/PerformSearchSearchErrors.md | 10 - .../Errors/PerformSearchUnauthorized.md | 11 - .../Errors/PerformVoiceSearchBadRequest.md | 11 - .../Models/Errors/PerformVoiceSearchErrors.md | 10 - .../Errors/PerformVoiceSearchSearchErrors.md | 10 - .../Errors/PerformVoiceSearchUnauthorized.md | 11 - ...PostUsersSignInDataAuthenticationErrors.md | 10 - .../Errors/PostUsersSignInDataBadRequest.md | 11 - .../Errors/PostUsersSignInDataErrors.md | 10 - .../Errors/PostUsersSignInDataUnauthorized.md | 11 - docs/Models/Errors/StartAllTasksBadRequest.md | 11 - .../Errors/StartAllTasksButlerErrors.md | 10 - docs/Models/Errors/StartAllTasksErrors.md | 10 - .../Errors/StartAllTasksUnauthorized.md | 11 - docs/Models/Errors/StartTaskBadRequest.md | 11 - docs/Models/Errors/StartTaskButlerErrors.md | 10 - docs/Models/Errors/StartTaskErrors.md | 10 - docs/Models/Errors/StartTaskUnauthorized.md | 11 - .../StartUniversalTranscodeBadRequest.md | 11 - .../Errors/StartUniversalTranscodeErrors.md | 10 - .../StartUniversalTranscodeUnauthorized.md | 11 - .../StartUniversalTranscodeVideoErrors.md | 10 - docs/Models/Errors/StopAllTasksBadRequest.md | 11 - .../Models/Errors/StopAllTasksButlerErrors.md | 10 - docs/Models/Errors/StopAllTasksErrors.md | 10 - .../Models/Errors/StopAllTasksUnauthorized.md | 11 - docs/Models/Errors/StopTaskBadRequest.md | 11 - docs/Models/Errors/StopTaskButlerErrors.md | 10 - docs/Models/Errors/StopTaskErrors.md | 10 - docs/Models/Errors/StopTaskUnauthorized.md | 11 - .../Errors/StopTranscodeSessionBadRequest.md | 11 - .../Errors/StopTranscodeSessionErrors.md | 10 - .../StopTranscodeSessionSessionsErrors.md | 10 - .../StopTranscodeSessionUnauthorized.md | 11 - .../Errors/UpdatePlayProgressBadRequest.md | 11 - .../Models/Errors/UpdatePlayProgressErrors.md | 10 - .../Errors/UpdatePlayProgressMediaErrors.md | 10 - .../Errors/UpdatePlayProgressUnauthorized.md | 11 - .../Models/Errors/UpdatePlaylistBadRequest.md | 11 - docs/Models/Errors/UpdatePlaylistErrors.md | 10 - .../Errors/UpdatePlaylistPlaylistsErrors.md | 10 - .../Errors/UpdatePlaylistUnauthorized.md | 11 - .../Models/Errors/UploadPlaylistBadRequest.md | 11 - docs/Models/Errors/UploadPlaylistErrors.md | 10 - .../Errors/UploadPlaylistPlaylistsErrors.md | 10 - .../Errors/UploadPlaylistUnauthorized.md | 11 - docs/Models/Requests/Account.md | 14 +- docs/Models/Requests/Action.md | 13 +- docs/Models/Requests/ActiveDirection.md | 12 - docs/Models/Requests/Activity.md | 21 +- .../Requests/AddCollectionItemsRequest.md | 20 + .../Requests/AddCollectionItemsResponse.md | 11 + docs/Models/Requests/AddDeviceRequest.md | 19 + docs/Models/Requests/AddDeviceResponse.md | 11 + docs/Models/Requests/AddDeviceToDVRDVR.md | 12 + .../AddDeviceToDVRDVRsMediaContainer.md | 17 + .../Requests/AddDeviceToDVRMediaContainer.md | 9 + docs/Models/Requests/AddDeviceToDVRRequest.md | 20 + .../Models/Requests/AddDeviceToDVRResponse.md | 12 + .../Requests/AddDeviceToDVRResponseBody.md | 10 + .../AddDownloadQueueItemsMediaContainer.md | 17 + .../Requests/AddDownloadQueueItemsRequest.md | 46 + .../Requests/AddDownloadQueueItemsResponse.md | 11 + .../AddDownloadQueueItemsResponseBody.md | 10 + docs/Models/Requests/AddExtrasRequest.md | 22 + docs/Models/Requests/AddExtrasResponse.md | 10 + docs/Models/Requests/AddLineupDVR.md | 12 + .../Requests/AddLineupDVRsMediaContainer.md | 17 + .../Requests/AddLineupMediaContainer.md | 9 + docs/Models/Requests/AddLineupRequest.md | 20 + docs/Models/Requests/AddLineupResponse.md | 12 + docs/Models/Requests/AddLineupResponseBody.md | 10 + .../AddPlaylistContentsMediaContainer.md | 11 - .../Requests/AddPlaylistContentsMetadata.md | 20 - .../Requests/AddPlaylistContentsRequest.md | 10 - .../Requests/AddPlaylistContentsResponse.md | 11 - .../AddPlaylistContentsResponseBody.md | 10 - .../Requests/AddPlaylistItemsRequest.md | 21 + .../Requests/AddPlaylistItemsResponse.md | 11 + docs/Models/Requests/AddProviderRequest.md | 19 + docs/Models/Requests/AddProviderResponse.md | 10 + docs/Models/Requests/AddSectionRequest.md | 28 + docs/Models/Requests/AddSectionResponse.md | 11 + docs/Models/Requests/AddSubtitlesRequest.md | 26 + docs/Models/Requests/AddSubtitlesResponse.md | 10 + docs/Models/Requests/AddToPlayQueueRequest.md | 22 + .../Models/Requests/AddToPlayQueueResponse.md | 11 + docs/Models/Requests/AddedQueueItems.md | 9 + docs/Models/Requests/AdvancedSubtitles.md | 13 + docs/Models/Requests/AllLibraries.md | 11 - docs/Models/Requests/AllowCameraUpload.md | 11 - docs/Models/Requests/AllowChannels.md | 11 - docs/Models/Requests/AllowSubtitleAdmin.md | 11 - docs/Models/Requests/AllowSync.md | 11 - docs/Models/Requests/AllowTuners.md | 11 - .../Models/Requests/AnalyzeMetadataRequest.md | 21 + .../Requests/AnalyzeMetadataResponse.md | 10 + docs/Models/Requests/ApplyUpdatesRequest.md | 19 +- docs/Models/Requests/Args.md | 9 + docs/Models/Requests/Attributes.md | 8 +- docs/Models/Requests/AutoSelectSubtitle.md | 11 - docs/Models/Requests/AutocompleteRequest.md | 22 + docs/Models/Requests/AutocompleteResponse.md | 12 + docs/Models/Requests/Bandwidth.md | 10 + docs/Models/Requests/Bandwidths.md | 10 + docs/Models/Requests/Billing.md | 9 - docs/Models/Requests/ButlerTask.md | 16 +- docs/Models/Requests/CancelActivityRequest.md | 19 + .../Models/Requests/CancelActivityResponse.md | 10 + docs/Models/Requests/CancelGrabRequest.md | 19 + docs/Models/Requests/CancelGrabResponse.md | 10 + docs/Models/Requests/CancelRefreshRequest.md | 19 + docs/Models/Requests/CancelRefreshResponse.md | 10 + .../Requests/CancelServerActivitiesRequest.md | 8 - .../CancelServerActivitiesResponse.md | 10 - docs/Models/Requests/ChannelMapping.md | 9 + docs/Models/Requests/ChannelMappingByKey.md | 9 + docs/Models/Requests/Chapter.md | 15 - .../Models/Requests/CheckForUpdatesRequest.md | 8 - .../Requests/CheckForUpdatesResponse.md | 10 - docs/Models/Requests/CheckUpdatesRequest.md | 19 + docs/Models/Requests/CheckUpdatesResponse.md | 10 + docs/Models/Requests/ChromaSubsampling.md | 18 + docs/Models/Requests/CleanBundlesResponse.md | 10 + docs/Models/Requests/ClearPlayQueueRequest.md | 19 + .../Models/Requests/ClearPlayQueueResponse.md | 11 + .../Requests/ClearPlaylistContentsRequest.md | 8 - .../Requests/ClearPlaylistContentsResponse.md | 10 - .../Requests/ClearPlaylistItemsRequest.md | 19 + .../Requests/ClearPlaylistItemsResponse.md | 11 + docs/Models/Requests/Collection.md | 8 - .../ComputeChannelMapChannelMapping.md | 11 + .../ComputeChannelMapMediaContainer.md | 17 + .../Requests/ComputeChannelMapRequest.md | 20 + .../Requests/ComputeChannelMapResponse.md | 12 + .../Requests/ComputeChannelMapResponseBody.md | 10 + .../Requests/ConnectWebSocketRequest.md | 19 + .../Requests/ConnectWebSocketResponse.md | 11 + docs/Models/Requests/Connection.md | 13 + docs/Models/Requests/Connections.md | 14 - docs/Models/Requests/Context.md | 8 - docs/Models/Requests/Country.md | 17 +- .../Requests/CreateCollectionRequest.md | 23 + .../Requests/CreateCollectionResponse.md | 11 + .../Models/Requests/CreateCustomHubRequest.md | 23 + .../Requests/CreateCustomHubResponse.md | 10 + docs/Models/Requests/CreateDVRRequest.md | 21 + docs/Models/Requests/CreateDVRResponse.md | 12 + .../CreateDownloadQueueMediaContainer.md | 17 + .../Requests/CreateDownloadQueueResponse.md | 11 + .../CreateDownloadQueueResponseBody.md | 10 + .../Requests/CreateMarkerMediaContainer.md | 23 + docs/Models/Requests/CreateMarkerRequest.md | 23 + docs/Models/Requests/CreateMarkerResponse.md | 11 + .../Requests/CreateMarkerResponseBody.md | 10 + docs/Models/Requests/CreateMarkerType.md | 12 + .../Requests/CreatePlayQueueMediaContainer.md | 25 + .../Models/Requests/CreatePlayQueueRequest.md | 28 + .../Requests/CreatePlayQueueResponse.md | 12 + .../Requests/CreatePlayQueueResponseBody.md | 10 + .../Requests/CreatePlaylistMediaContainer.md | 9 - .../Models/Requests/CreatePlaylistMetadata.md | 23 - .../Requests/CreatePlaylistQueryParamType.md | 12 - docs/Models/Requests/CreatePlaylistRequest.md | 22 +- .../Models/Requests/CreatePlaylistResponse.md | 2 +- .../Requests/CreatePlaylistResponseBody.md | 10 - .../CreateSubscriptionMediaContainer.md | 17 + .../CreateSubscriptionQueryParamPrefs.md | 9 + .../Requests/CreateSubscriptionRequest.md | 24 + .../Requests/CreateSubscriptionResponse.md | 12 + .../CreateSubscriptionResponseBody.md | 10 + docs/Models/Requests/DecisionResult.md | 16 + docs/Models/Requests/DefaultDirection.md | 12 - .../Requests/DefaultSubtitleAccessibility.md | 11 - docs/Models/Requests/DefaultSubtitleForced.md | 11 - docs/Models/Requests/DeleteCachesResponse.md | 10 + .../Requests/DeleteCollectionItemRequest.md | 20 + .../Requests/DeleteCollectionItemResponse.md | 11 + .../Requests/DeleteCollectionRequest.md | 20 + .../Requests/DeleteCollectionResponse.md | 10 + .../Models/Requests/DeleteCustomHubRequest.md | 20 + .../Requests/DeleteCustomHubResponse.md | 10 + docs/Models/Requests/DeleteDVRRequest.md | 19 + docs/Models/Requests/DeleteDVRResponse.md | 10 + docs/Models/Requests/DeleteHistoryRequest.md | 19 + docs/Models/Requests/DeleteHistoryResponse.md | 12 + docs/Models/Requests/DeleteIndexesRequest.md | 19 + docs/Models/Requests/DeleteIndexesResponse.md | 10 + docs/Models/Requests/DeleteIntrosRequest.md | 19 + docs/Models/Requests/DeleteIntrosResponse.md | 10 + docs/Models/Requests/DeleteLibraryRequest.md | 8 - docs/Models/Requests/DeleteLibraryResponse.md | 10 - .../Requests/DeleteLibrarySectionRequest.md | 20 + .../Requests/DeleteLibrarySectionResponse.md | 10 + docs/Models/Requests/DeleteLineupDVR.md | 12 + .../DeleteLineupDVRsMediaContainer.md | 17 + .../Requests/DeleteLineupMediaContainer.md | 9 + docs/Models/Requests/DeleteLineupRequest.md | 20 + docs/Models/Requests/DeleteLineupResponse.md | 12 + .../Requests/DeleteLineupResponseBody.md | 10 + docs/Models/Requests/DeleteMarkerRequest.md | 20 + docs/Models/Requests/DeleteMarkerResponse.md | 10 + .../Models/Requests/DeleteMediaItemRequest.md | 21 + .../Requests/DeleteMediaItemResponse.md | 10 + .../Requests/DeleteMediaProviderRequest.md | 19 + .../Requests/DeleteMediaProviderResponse.md | 10 + .../Requests/DeleteMetadataItemRequest.md | 20 + .../Requests/DeleteMetadataItemResponse.md | 10 + .../Requests/DeletePlayQueueItemRequest.md | 20 + .../Requests/DeletePlayQueueItemResponse.md | 11 + .../Requests/DeletePlaylistItemRequest.md | 20 + .../Requests/DeletePlaylistItemResponse.md | 11 + docs/Models/Requests/DeletePlaylistRequest.md | 17 +- docs/Models/Requests/DeleteStreamRequest.md | 20 + docs/Models/Requests/DeleteStreamResponse.md | 10 + .../Requests/DeleteSubscriptionRequest.md | 19 + .../Requests/DeleteSubscriptionResponse.md | 10 + docs/Models/Requests/DetectAdsRequest.md | 19 + docs/Models/Requests/DetectAdsResponse.md | 10 + docs/Models/Requests/DetectCreditsRequest.md | 21 + docs/Models/Requests/DetectCreditsResponse.md | 10 + docs/Models/Requests/DetectIntrosRequest.md | 21 + docs/Models/Requests/DetectIntrosResponse.md | 10 + .../Requests/DetectVoiceActivityRequest.md | 21 + .../Requests/DetectVoiceActivityResponse.md | 10 + docs/Models/Requests/Device.md | 13 +- docs/Models/Requests/DeviceChannel.md | 15 + docs/Models/Requests/Director.md | 12 - docs/Models/Requests/Directory.md | 13 +- .../Requests/DiscoverDevicesResponse.md | 11 + docs/Models/Requests/Download.md | 11 - docs/Models/Requests/DownloadQueue.md | 10 + docs/Models/Requests/DownloadQueueItem.md | 15 + docs/Models/Requests/Dvr.md | 12 + docs/Models/Requests/EditMarkerRequest.md | 24 + docs/Models/Requests/EditMarkerResponse.md | 11 + .../Requests/EditMetadataItemRequest.md | 20 + .../Requests/EditMetadataItemResponse.md | 10 + .../Requests/EditSectionQueryParamPrefs.md | 9 + docs/Models/Requests/EditSectionRequest.md | 26 + docs/Models/Requests/EditSectionResponse.md | 10 + ...tSubscriptionPreferencesQueryParamPrefs.md | 7 + .../EditSubscriptionPreferencesRequest.md | 20 + .../EditSubscriptionPreferencesResponse.md | 11 + docs/Models/Requests/Element.md | 13 + docs/Models/Requests/EmptyTrashRequest.md | 19 + docs/Models/Requests/EmptyTrashResponse.md | 10 + .../Requests/EnablePaperTrailResponse.md | 10 - .../Requests/EnablePapertrailRequest.md | 19 + .../Requests/EnablePapertrailResponse.md | 10 + docs/Models/Requests/Extension.md | 12 + docs/Models/Requests/Extras.md | 8 - docs/Models/Requests/Feature.md | 14 +- docs/Models/Requests/Field.md | 11 - docs/Models/Requests/FieldType.md | 9 - docs/Models/Requests/Filter.md | 12 - docs/Models/Requests/FlattenSeasons.md | 13 - docs/Models/Requests/Flavor.md | 15 + docs/Models/Requests/Force.md | 11 - docs/Models/Requests/Format.md | 13 + docs/Models/Requests/Friend.md | 19 - docs/Models/Requests/GenerateThumbsRequest.md | 20 + .../Models/Requests/GenerateThumbsResponse.md | 10 + docs/Models/Requests/Genre.md | 12 - docs/Models/Requests/GeoData.md | 20 - .../Requests/GetActorsLibraryDirectory.md | 11 - .../GetActorsLibraryMediaContainer.md | 20 - .../GetActorsLibraryQueryParamType.md | 24 - .../Requests/GetActorsLibraryRequest.md | 9 - .../Requests/GetActorsLibraryResponse.md | 11 - .../Requests/GetActorsLibraryResponseBody.md | 10 - docs/Models/Requests/GetAlbumsRequest.md | 19 + docs/Models/Requests/GetAlbumsResponse.md | 11 + .../Requests/GetAllHubsMediaContainer.md | 17 + docs/Models/Requests/GetAllHubsRequest.md | 21 + docs/Models/Requests/GetAllHubsResponse.md | 12 + .../Models/Requests/GetAllHubsResponseBody.md | 10 + .../Requests/GetAllItemLeavesRequest.md | 19 + .../Requests/GetAllItemLeavesResponse.md | 12 + .../Requests/GetAllLanguagesMediaContainer.md | 17 + .../Requests/GetAllLanguagesResponse.md | 12 + .../Requests/GetAllLanguagesResponseBody.md | 10 + docs/Models/Requests/GetAllLeavesRequest.md | 19 + docs/Models/Requests/GetAllLeavesResponse.md | 11 + .../Requests/GetAllLibrariesDirectory.md | 28 - .../Requests/GetAllLibrariesLocation.md | 9 - .../Requests/GetAllLibrariesMediaContainer.md | 11 - .../Requests/GetAllLibrariesResponse.md | 11 - .../Requests/GetAllLibrariesResponseBody.md | 10 - docs/Models/Requests/GetAllLibrariesType.md | 19 - .../Requests/GetAllPreferencesResponse.md | 11 + .../Requests/GetAllSubscriptionsRequest.md | 20 + .../Requests/GetAllSubscriptionsResponse.md | 12 + docs/Models/Requests/GetArtsRequest.md | 19 + docs/Models/Requests/GetArtsResponse.md | 11 + .../Requests/GetAugmentationStatusRequest.md | 20 + .../Requests/GetAugmentationStatusResponse.md | 10 + .../GetAvailableClientsMediaContainer.md | 9 - .../Requests/GetAvailableClientsResponse.md | 11 - .../GetAvailableClientsResponseBody.md | 10 - .../GetAvailableGrabbersMediaContainer.md | 17 + .../Requests/GetAvailableGrabbersRequest.md | 19 + .../Requests/GetAvailableGrabbersResponse.md | 12 + .../GetAvailableGrabbersResponseBody.md | 10 + .../GetAvailableSortsMediaContainer.md | 17 + .../Requests/GetAvailableSortsRequest.md | 19 + .../Requests/GetAvailableSortsResponse.md | 11 + .../Requests/GetAvailableSortsResponseBody.md | 10 + .../GetBackgroundTasksMediaContainer.md | 17 + .../Requests/GetBackgroundTasksResponse.md | 11 + .../GetBackgroundTasksResponseBody.md | 10 + .../Models/Requests/GetBackgroundTasksType.md | 8 + .../Requests/GetBandwidthStatisticsAccount.md | 15 - .../Requests/GetBandwidthStatisticsDevice.md | 12 - .../GetBandwidthStatisticsMediaContainer.md | 11 - .../Requests/GetBandwidthStatisticsRequest.md | 8 - .../GetBandwidthStatisticsResponse.md | 11 - .../GetBandwidthStatisticsResponseBody.md | 10 - docs/Models/Requests/GetBannerImageRequest.md | 13 - .../Models/Requests/GetBannerImageResponse.md | 12 - .../Models/Requests/GetButlerTasksResponse.md | 11 - .../Requests/GetButlerTasksResponseBody.md | 10 - docs/Models/Requests/GetCategoriesRequest.md | 19 + docs/Models/Requests/GetCategoriesResponse.md | 11 + .../Requests/GetChannelsMediaContainer.md | 17 + docs/Models/Requests/GetChannelsRequest.md | 19 + docs/Models/Requests/GetChannelsResponse.md | 12 + .../Requests/GetChannelsResponseBody.md | 10 + .../Models/Requests/GetChapterImageRequest.md | 20 + .../Requests/GetChapterImageResponse.md | 11 + docs/Models/Requests/GetClusterRequest.md | 19 + docs/Models/Requests/GetClusterResponse.md | 11 + .../Requests/GetCollectionImageRequest.md | 21 + .../Requests/GetCollectionImageResponse.md | 11 + .../Requests/GetCollectionItemsRequest.md | 19 + .../Requests/GetCollectionItemsResponse.md | 11 + docs/Models/Requests/GetCollectionsRequest.md | 20 + .../Models/Requests/GetCollectionsResponse.md | 12 + .../Requests/GetColorsMediaContainer.md | 17 + docs/Models/Requests/GetColorsRequest.md | 19 + docs/Models/Requests/GetColorsResponse.md | 11 + docs/Models/Requests/GetColorsResponseBody.md | 10 + docs/Models/Requests/GetCommonRequest.md | 21 + docs/Models/Requests/GetCommonResponse.md | 12 + .../Requests/GetCompanionsDataResponse.md | 11 - .../GetContinueWatchingMediaContainer.md | 17 + .../Requests/GetContinueWatchingRequest.md | 19 + .../Requests/GetContinueWatchingResponse.md | 12 + .../GetContinueWatchingResponseBody.md | 10 + .../Requests/GetCountriesLibraryDirectory.md | 10 - .../GetCountriesLibraryMediaContainer.md | 20 - .../GetCountriesLibraryQueryParamType.md | 24 - .../Requests/GetCountriesLibraryRequest.md | 9 - .../Requests/GetCountriesLibraryResponse.md | 11 - .../GetCountriesLibraryResponseBody.md | 10 - .../Requests/GetCountriesLineupsRequest.md | 21 + .../Requests/GetCountriesLineupsResponse.md | 11 + .../Requests/GetCountriesMediaContainer.md | 17 + docs/Models/Requests/GetCountriesResponse.md | 12 + .../Requests/GetCountriesResponseBody.md | 10 + .../Requests/GetCountryRegionsCountry.md | 11 + .../GetCountryRegionsMediaContainer.md | 17 + .../Requests/GetCountryRegionsRequest.md | 20 + .../Requests/GetCountryRegionsResponse.md | 12 + .../Requests/GetCountryRegionsResponseBody.md | 10 + docs/Models/Requests/GetDVRDVR.md | 12 + .../Requests/GetDVRDVRsMediaContainer.md | 17 + docs/Models/Requests/GetDVRMediaContainer.md | 9 + docs/Models/Requests/GetDVRRequest.md | 19 + docs/Models/Requests/GetDVRResponse.md | 12 + docs/Models/Requests/GetDVRResponseBody.md | 10 + .../Requests/GetDeviceDetailsRequest.md | 19 + .../Requests/GetDeviceDetailsResponse.md | 11 + .../GetDevicesChannelsMediaContainer.md | 17 + .../Requests/GetDevicesChannelsRequest.md | 19 + .../Requests/GetDevicesChannelsResponse.md | 12 + .../GetDevicesChannelsResponseBody.md | 10 + .../Requests/GetDevicesMediaContainer.md | 10 - docs/Models/Requests/GetDevicesResponse.md | 11 - .../Models/Requests/GetDevicesResponseBody.md | 10 - .../Requests/GetDownloadQueueDownloadQueue.md | 10 + .../GetDownloadQueueItemsDecisionResult.md | 16 + .../GetDownloadQueueItemsDownloadQueueItem.md | 15 + .../GetDownloadQueueItemsMediaContainer.md | 17 + .../Requests/GetDownloadQueueItemsRequest.md | 20 + .../Requests/GetDownloadQueueItemsResponse.md | 11 + .../GetDownloadQueueItemsResponseBody.md | 10 + .../Requests/GetDownloadQueueItemsStatus.md | 22 + .../GetDownloadQueueItemsTranscode.md | 9 + .../GetDownloadQueueMediaContainer.md | 17 + .../Requests/GetDownloadQueueMediaRequest.md | 20 + .../Requests/GetDownloadQueueMediaResponse.md | 11 + .../Requests/GetDownloadQueueRequest.md | 19 + .../Requests/GetDownloadQueueResponse.md | 11 + .../Requests/GetDownloadQueueResponseBody.md | 10 + .../Models/Requests/GetDownloadQueueStatus.md | 20 + docs/Models/Requests/GetExtrasRequest.md | 19 + docs/Models/Requests/GetExtrasResponse.md | 12 + docs/Models/Requests/GetFileHashRequest.md | 9 - docs/Models/Requests/GetFileHashResponse.md | 10 - docs/Models/Requests/GetFileRequest.md | 20 + docs/Models/Requests/GetFileResponse.md | 12 + .../Requests/GetFirstCharactersDirectory.md | 10 + .../GetFirstCharactersMediaContainer.md | 17 + .../Requests/GetFirstCharactersRequest.md | 22 + .../Requests/GetFirstCharactersResponse.md | 11 + .../GetFirstCharactersResponseBody.md | 10 + docs/Models/Requests/GetFoldersDirectory.md | 10 + .../Requests/GetFoldersMediaContainer.md | 17 + docs/Models/Requests/GetFoldersRequest.md | 19 + docs/Models/Requests/GetFoldersResponse.md | 11 + .../Models/Requests/GetFoldersResponseBody.md | 10 + .../Requests/GetGenresLibraryDirectory.md | 11 - .../GetGenresLibraryMediaContainer.md | 20 - .../GetGenresLibraryQueryParamType.md | 24 - .../Requests/GetGenresLibraryRequest.md | 9 - .../Requests/GetGenresLibraryResponse.md | 11 - .../Requests/GetGenresLibraryResponseBody.md | 10 - docs/Models/Requests/GetGeoDataGeoData.md | 20 - docs/Models/Requests/GetGeoDataResponse.md | 11 - .../Requests/GetGlobalHubsMediaContainer.md | 11 - docs/Models/Requests/GetGlobalHubsMetadata.md | 24 - docs/Models/Requests/GetGlobalHubsRequest.md | 9 - docs/Models/Requests/GetGlobalHubsResponse.md | 11 - .../Requests/GetGlobalHubsResponseBody.md | 10 - docs/Models/Requests/GetHistoryItemRequest.md | 19 + .../Models/Requests/GetHistoryItemResponse.md | 12 + docs/Models/Requests/GetHomeDataResponse.md | 11 - .../Requests/GetHomeDataResponseBody.md | 15 - docs/Models/Requests/GetHubItemsRequest.md | 20 + docs/Models/Requests/GetHubItemsResponse.md | 12 + .../Requests/GetHubItemsResponseBody.md | 10 + .../Requests/GetIdentityMediaContainer.md | 11 + docs/Models/Requests/GetIdentityResponse.md | 11 + .../Requests/GetIdentityResponseBody.md | 10 + .../Models/Requests/GetImageFromBifRequest.md | 21 + .../Requests/GetImageFromBifResponse.md | 11 + docs/Models/Requests/GetImageRequest.md | 25 + docs/Models/Requests/GetImageResponse.md | 11 + .../GetItemArtworkPathParamElement.md | 13 + docs/Models/Requests/GetItemArtworkRequest.md | 21 + .../Models/Requests/GetItemArtworkResponse.md | 12 + .../Models/Requests/GetItemDecisionRequest.md | 20 + .../Requests/GetItemDecisionResponse.md | 11 + docs/Models/Requests/GetItemTreeRequest.md | 19 + docs/Models/Requests/GetItemTreeResponse.md | 11 + .../Requests/GetLibraryDetailsDirectory.md | 12 - .../Models/Requests/GetLibraryDetailsField.md | 11 - .../Requests/GetLibraryDetailsFieldType.md | 9 - .../Requests/GetLibraryDetailsFilter.md | 12 - .../GetLibraryDetailsMediaContainer.md | 33 +- .../Requests/GetLibraryDetailsOperator.md | 9 - .../Requests/GetLibraryDetailsRequest.md | 19 +- .../Requests/GetLibraryDetailsResponse.md | 2 +- .../Requests/GetLibraryDetailsResponseBody.md | 2 +- docs/Models/Requests/GetLibraryDetailsSort.md | 13 - docs/Models/Requests/GetLibraryDetailsType.md | 14 - docs/Models/Requests/GetLibraryHubsCountry.md | 8 - .../Models/Requests/GetLibraryHubsDirector.md | 8 - docs/Models/Requests/GetLibraryHubsGenre.md | 8 - docs/Models/Requests/GetLibraryHubsHub.md | 19 - docs/Models/Requests/GetLibraryHubsMedia.md | 24 - .../Requests/GetLibraryHubsMediaContainer.md | 14 - .../Models/Requests/GetLibraryHubsMetadata.md | 41 - docs/Models/Requests/GetLibraryHubsPart.md | 17 - docs/Models/Requests/GetLibraryHubsRequest.md | 10 - .../Models/Requests/GetLibraryHubsResponse.md | 11 - .../Requests/GetLibraryHubsResponseBody.md | 10 - docs/Models/Requests/GetLibraryHubsRole.md | 8 - docs/Models/Requests/GetLibraryHubsWriter.md | 8 - .../GetLibraryItemsActiveDirection.md | 12 - .../Requests/GetLibraryItemsCollection.md | 8 - .../Models/Requests/GetLibraryItemsCountry.md | 9 - .../GetLibraryItemsDefaultDirection.md | 12 - .../Requests/GetLibraryItemsDirector.md | 10 - docs/Models/Requests/GetLibraryItemsField.md | 11 - .../Requests/GetLibraryItemsFieldType.md | 9 - docs/Models/Requests/GetLibraryItemsFilter.md | 12 - docs/Models/Requests/GetLibraryItemsGenre.md | 9 - docs/Models/Requests/GetLibraryItemsGuids.md | 8 - .../Requests/GetLibraryItemsHasThumbnail.md | 12 - docs/Models/Requests/GetLibraryItemsImage.md | 10 - ...ibraryItemsLibraryOptimizedForStreaming.md | 19 - .../GetLibraryItemsLibraryResponseType.md | 11 - .../Requests/GetLibraryItemsLibraryType.md | 14 - .../Requests/GetLibraryItemsLocation.md | 10 - docs/Models/Requests/GetLibraryItemsMedia.md | 26 - .../Requests/GetLibraryItemsMediaContainer.md | 28 - docs/Models/Requests/GetLibraryItemsMeta.md | 12 - .../Requests/GetLibraryItemsMetadata.md | 88 - .../Requests/GetLibraryItemsOperator.md | 9 - .../GetLibraryItemsOptimizedForStreaming.md | 18 - .../GetLibraryItemsOptimizedForStreaming1.md | 9 - docs/Models/Requests/GetLibraryItemsPart.md | 22 - .../Requests/GetLibraryItemsProducer.md | 13 - .../GetLibraryItemsQueryParamIncludeMeta.md | 12 - .../Requests/GetLibraryItemsQueryParamType.md | 24 - .../Models/Requests/GetLibraryItemsRequest.md | 23 +- .../Requests/GetLibraryItemsResponse.md | 3 +- .../Requests/GetLibraryItemsResponseBody.md | 10 - docs/Models/Requests/GetLibraryItemsRole.md | 11 - .../Models/Requests/GetLibraryItemsSimilar.md | 10 - docs/Models/Requests/GetLibraryItemsSort.md | 15 - docs/Models/Requests/GetLibraryItemsType.md | 20 - .../GetLibraryItemsUltraBlurColors.md | 11 - docs/Models/Requests/GetLibraryItemsWriter.md | 10 - .../Requests/GetLibraryMatchesRequest.md | 32 + .../Requests/GetLibraryMatchesResponse.md | 12 + .../GetLibrarySectionsAllActiveDirection.md | 12 - .../GetLibrarySectionsAllCollection.md | 8 - .../Requests/GetLibrarySectionsAllCountry.md | 8 - .../GetLibrarySectionsAllDefaultDirection.md | 12 - .../Requests/GetLibrarySectionsAllDirector.md | 8 - .../Requests/GetLibrarySectionsAllField.md | 11 - .../GetLibrarySectionsAllFieldType.md | 9 - .../Requests/GetLibrarySectionsAllFilter.md | 13 - .../Requests/GetLibrarySectionsAllGenre.md | 8 - .../Requests/GetLibrarySectionsAllGuids.md | 8 - .../GetLibrarySectionsAllHasThumbnail.md | 11 - .../Requests/GetLibrarySectionsAllImage.md | 10 - ...SectionsAllLibraryOptimizedForStreaming.md | 18 - ...etLibrarySectionsAllLibraryResponseType.md | 11 - .../GetLibrarySectionsAllLibraryType.md | 20 - .../Requests/GetLibrarySectionsAllMedia.md | 26 - .../GetLibrarySectionsAllMediaContainer.md | 26 - .../Requests/GetLibrarySectionsAllMeta.md | 12 - .../Requests/GetLibrarySectionsAllMetadata.md | 74 - .../Requests/GetLibrarySectionsAllOperator.md | 9 - ...LibrarySectionsAllOptimizedForStreaming.md | 18 - ...ibrarySectionsAllOptimizedForStreaming1.md | 9 - ...ectionsAllOptimizedForStreamingLibrary1.md | 9 - .../Requests/GetLibrarySectionsAllPart.md | 23 - ...LibrarySectionsAllQueryParamIncludeMeta.md | 12 - .../GetLibrarySectionsAllQueryParamType.md | 24 - .../Requests/GetLibrarySectionsAllRequest.md | 16 - .../Requests/GetLibrarySectionsAllResponse.md | 11 - .../GetLibrarySectionsAllResponseBody.md | 10 - .../Requests/GetLibrarySectionsAllRole.md | 8 - .../Requests/GetLibrarySectionsAllSort.md | 15 - .../Requests/GetLibrarySectionsAllStream.md | 58 - .../Requests/GetLibrarySectionsAllType.md | 15 - .../GetLibrarySectionsAllUltraBlurColors.md | 11 - .../Requests/GetLibrarySectionsAllWriter.md | 8 - .../GetLineupChannelsMediaContainer.md | 17 + .../Requests/GetLineupChannelsRequest.md | 19 + .../Requests/GetLineupChannelsResponse.md | 11 + .../Requests/GetLineupChannelsResponseBody.md | 10 + docs/Models/Requests/GetLineupRequest.md | 20 + docs/Models/Requests/GetLineupResponse.md | 11 + .../Requests/GetLiveTVSessionRequest.md | 19 + .../Requests/GetLiveTVSessionResponse.md | 12 + .../Requests/GetMediaArtsMediaContainer.md | 12 - docs/Models/Requests/GetMediaArtsMetadata.md | 12 - docs/Models/Requests/GetMediaArtsRequest.md | 8 - docs/Models/Requests/GetMediaArtsResponse.md | 11 - .../Requests/GetMediaArtsResponseBody.md | 10 - .../Requests/GetMediaMetaDataAttributes.md | 11 - .../Requests/GetMediaMetaDataChapter.md | 15 - .../Requests/GetMediaMetaDataCountry.md | 12 - .../Requests/GetMediaMetaDataDirector.md | 12 - .../Models/Requests/GetMediaMetaDataExtras.md | 8 - docs/Models/Requests/GetMediaMetaDataGenre.md | 12 - docs/Models/Requests/GetMediaMetaDataGuids.md | 8 - .../Requests/GetMediaMetaDataHasThumbnail.md | 12 - docs/Models/Requests/GetMediaMetaDataImage.md | 10 - ...diaMetaDataLibraryOptimizedForStreaming.md | 19 - .../Requests/GetMediaMetaDataLibraryType.md | 11 - .../Requests/GetMediaMetaDataLocation.md | 8 - .../Models/Requests/GetMediaMetaDataMarker.md | 15 - docs/Models/Requests/GetMediaMetaDataMedia.md | 26 - .../GetMediaMetaDataMediaContainer.md | 16 - .../Requests/GetMediaMetaDataMetadata.md | 83 - .../GetMediaMetaDataOptimizedForStreaming.md | 18 - .../GetMediaMetaDataOptimizedForStreaming1.md | 9 - ...iaMetaDataOptimizedForStreamingLibrary1.md | 9 - docs/Models/Requests/GetMediaMetaDataPart.md | 23 - .../Requests/GetMediaMetaDataProducer.md | 13 - .../Requests/GetMediaMetaDataRatings.md | 10 - .../Requests/GetMediaMetaDataRequest.md | 21 - .../Requests/GetMediaMetaDataResponse.md | 11 - .../Requests/GetMediaMetaDataResponseBody.md | 10 - docs/Models/Requests/GetMediaMetaDataRole.md | 13 - .../Requests/GetMediaMetaDataSimilar.md | 10 - .../Models/Requests/GetMediaMetaDataStream.md | 58 - docs/Models/Requests/GetMediaMetaDataType.md | 20 - .../GetMediaMetaDataUltraBlurColors.md | 11 - .../Models/Requests/GetMediaMetaDataWriter.md | 12 - docs/Models/Requests/GetMediaPartRequest.md | 22 + docs/Models/Requests/GetMediaPartResponse.md | 11 + .../Requests/GetMediaPostersMediaContainer.md | 12 - .../Requests/GetMediaPostersMetadata.md | 12 - .../Models/Requests/GetMediaPostersRequest.md | 8 - .../Requests/GetMediaPostersResponse.md | 11 - .../Requests/GetMediaPostersResponseBody.md | 10 - .../Requests/GetMediaProvidersDirectory.md | 21 - .../GetMediaProvidersMediaContainer.md | 51 - .../Requests/GetMediaProvidersRequest.md | 8 - .../Requests/GetMediaProvidersResponse.md | 11 - .../Requests/GetMediaProvidersResponseBody.md | 10 - .../Requests/GetMetadataChildrenDirectory.md | 12 - .../GetMetadataChildrenMediaContainer.md | 30 - .../Requests/GetMetadataChildrenMetadata.md | 34 - .../Requests/GetMetadataChildrenRequest.md | 9 - .../Requests/GetMetadataChildrenResponse.md | 11 - .../GetMetadataChildrenResponseBody.md | 10 - .../Models/Requests/GetMetadataHubsRequest.md | 21 + .../Requests/GetMetadataHubsResponse.md | 12 + .../Models/Requests/GetMetadataItemRequest.md | 27 + .../Requests/GetMetadataItemResponse.md | 12 + .../Requests/GetMyPlexAccountResponse.md | 11 - .../Requests/GetMyPlexAccountResponseBody.md | 10 - .../Requests/GetNotificationsRequest.md | 19 + .../Requests/GetNotificationsResponse.md | 11 + docs/Models/Requests/GetPartIndexRequest.md | 21 + docs/Models/Requests/GetPartIndexResponse.md | 11 + .../Requests/GetPersonMediaContainer.md | 17 + docs/Models/Requests/GetPersonRequest.md | 19 + docs/Models/Requests/GetPersonResponse.md | 11 + docs/Models/Requests/GetPersonResponseBody.md | 10 + .../Models/Requests/GetPinAuthPinContainer.md | 21 - docs/Models/Requests/GetPinRequest.md | 13 - docs/Models/Requests/GetPinResponse.md | 11 - docs/Models/Requests/GetPlayQueueRequest.md | 24 + docs/Models/Requests/GetPlayQueueResponse.md | 11 + .../Requests/GetPlaylistContentsCountry.md | 8 - .../Requests/GetPlaylistContentsDirector.md | 8 - .../Requests/GetPlaylistContentsGenre.md | 8 - .../Requests/GetPlaylistContentsMedia.md | 24 - .../GetPlaylistContentsMediaContainer.md | 16 - .../Requests/GetPlaylistContentsMetadata.md | 39 - .../Requests/GetPlaylistContentsPart.md | 17 - .../GetPlaylistContentsQueryParamType.md | 24 - .../Requests/GetPlaylistContentsRequest.md | 9 - .../Requests/GetPlaylistContentsResponse.md | 11 - .../GetPlaylistContentsResponseBody.md | 10 - .../Requests/GetPlaylistContentsRole.md | 8 - .../Requests/GetPlaylistContentsWriter.md | 8 - .../Requests/GetPlaylistGeneratorDevice.md | 8 + ...GetPlaylistGeneratorItemsMediaContainer.md | 17 + .../GetPlaylistGeneratorItemsMetadata.md | 84 + .../GetPlaylistGeneratorItemsRequest.md | 20 + .../GetPlaylistGeneratorItemsResponse.md | 11 + .../GetPlaylistGeneratorItemsResponseBody.md | 10 + .../Requests/GetPlaylistGeneratorLocation.md | 9 + .../GetPlaylistGeneratorMediaContainer.md | 17 + .../Requests/GetPlaylistGeneratorRequest.md | 20 + .../Requests/GetPlaylistGeneratorResponse.md | 11 + .../GetPlaylistGeneratorResponseBody.md | 10 + .../Requests/GetPlaylistGeneratorScope.md | 9 + .../Requests/GetPlaylistGeneratorState.md | 10 + .../Requests/GetPlaylistGeneratorStatus.md | 12 + .../Requests/GetPlaylistGeneratorSubtitles.md | 13 + .../Requests/GetPlaylistGeneratorType.md | 11 + .../GetPlaylistGeneratorsMediaContainer.md | 17 + .../Requests/GetPlaylistGeneratorsRequest.md | 19 + .../Requests/GetPlaylistGeneratorsResponse.md | 11 + .../GetPlaylistGeneratorsResponseBody.md | 10 + .../Requests/GetPlaylistGeneratorsType.md | 15 + .../Requests/GetPlaylistItemsRequest.md | 20 + .../Requests/GetPlaylistItemsResponse.md | 12 + .../Requests/GetPlaylistMediaContainer.md | 9 - docs/Models/Requests/GetPlaylistMetadata.md | 22 - docs/Models/Requests/GetPlaylistRequest.md | 17 +- docs/Models/Requests/GetPlaylistResponse.md | 2 +- .../Requests/GetPlaylistResponseBody.md | 10 - .../Requests/GetPlaylistsMediaContainer.md | 9 - docs/Models/Requests/GetPlaylistsMetadata.md | 23 - docs/Models/Requests/GetPlaylistsRequest.md | 9 - docs/Models/Requests/GetPlaylistsResponse.md | 11 - .../Requests/GetPlaylistsResponseBody.md | 10 - .../Models/Requests/GetPostplayHubsRequest.md | 21 + .../Requests/GetPostplayHubsResponse.md | 12 + docs/Models/Requests/GetPreferenceRequest.md | 19 + docs/Models/Requests/GetPreferenceResponse.md | 11 + .../Requests/GetPromotedHubsMediaContainer.md | 17 + .../Models/Requests/GetPromotedHubsRequest.md | 19 + .../Requests/GetPromotedHubsResponse.md | 12 + .../Requests/GetPromotedHubsResponseBody.md | 10 + .../Requests/GetRandomArtworkRequest.md | 19 + .../Requests/GetRandomArtworkResponse.md | 11 + .../GetRecentlyAddedActiveDirection.md | 12 - .../GetRecentlyAddedDefaultDirection.md | 12 - docs/Models/Requests/GetRecentlyAddedField.md | 11 - .../Requests/GetRecentlyAddedFieldType.md | 9 - .../Models/Requests/GetRecentlyAddedFilter.md | 13 - .../GetRecentlyAddedHubsResponseType.md | 11 - .../Requests/GetRecentlyAddedHubsType.md | 20 - docs/Models/Requests/GetRecentlyAddedImage.md | 10 - .../GetRecentlyAddedLibraryCountry.md | 8 - .../GetRecentlyAddedLibraryDirector.md | 8 - .../Requests/GetRecentlyAddedLibraryFilter.md | 13 - .../Requests/GetRecentlyAddedLibraryGenre.md | 8 - .../Requests/GetRecentlyAddedLibraryMedia.md | 23 - .../GetRecentlyAddedLibraryMediaContainer.md | 19 - .../GetRecentlyAddedLibraryMetadata.md | 39 - .../Requests/GetRecentlyAddedLibraryPart.md | 17 - .../GetRecentlyAddedLibraryRequest.md | 14 - .../GetRecentlyAddedLibraryResponse.md | 11 - .../GetRecentlyAddedLibraryResponseBody.md | 10 - .../Requests/GetRecentlyAddedLibraryRole.md | 8 - .../Requests/GetRecentlyAddedLibraryType.md | 15 - .../Requests/GetRecentlyAddedLibraryWriter.md | 8 - .../GetRecentlyAddedMediaContainer.md | 14 - .../Requests/GetRecentlyAddedMetadata.md | 85 - .../Requests/GetRecentlyAddedOperator.md | 9 - .../GetRecentlyAddedOptimizedForStreaming.md | 18 - .../GetRecentlyAddedOptimizedForStreaming1.md | 9 - .../Requests/GetRecentlyAddedRequest.md | 14 - .../Requests/GetRecentlyAddedResponse.md | 11 - .../Requests/GetRecentlyAddedResponseBody.md | 10 - docs/Models/Requests/GetRecentlyAddedSort.md | 15 - docs/Models/Requests/GetRecentlyAddedType.md | 15 - .../GetRefreshLibraryMetadataRequest.md | 9 - .../GetRefreshLibraryMetadataResponse.md | 10 - docs/Models/Requests/GetRelatedHubsRequest.md | 21 + .../Models/Requests/GetRelatedHubsResponse.md | 12 + .../Requests/GetRelatedItemsMediaContainer.md | 17 + .../Models/Requests/GetRelatedItemsRequest.md | 19 + .../Requests/GetRelatedItemsResponse.md | 11 + .../Requests/GetRelatedItemsResponseBody.md | 10 + .../Models/Requests/GetResizedPhotoRequest.md | 14 - .../Requests/GetResizedPhotoResponse.md | 10 - .../GetResourcesStatisticsMediaContainer.md | 9 - .../Requests/GetResourcesStatisticsRequest.md | 8 - .../GetResourcesStatisticsResponse.md | 11 - .../GetResourcesStatisticsResponseBody.md | 10 - .../GetScheduledRecordingsMediaContainer.md | 17 + .../GetScheduledRecordingsResponse.md | 12 + .../GetScheduledRecordingsResponseBody.md | 10 + .../Requests/GetSearchAllLibrariesCountry.md | 9 - .../Requests/GetSearchAllLibrariesDirector.md | 10 - .../GetSearchAllLibrariesDirectory.md | 20 - .../GetSearchAllLibrariesFlattenSeasons.md | 13 - .../Requests/GetSearchAllLibrariesGenre.md | 9 - .../Requests/GetSearchAllLibrariesGuids.md | 8 - .../GetSearchAllLibrariesHasThumbnail.md | 12 - .../Requests/GetSearchAllLibrariesImage.md | 10 - ...llLibrariesLibraryOptimizedForStreaming.md | 19 - .../GetSearchAllLibrariesLibraryType.md | 11 - .../Requests/GetSearchAllLibrariesLocation.md | 10 - .../Requests/GetSearchAllLibrariesMedia.md | 26 - .../GetSearchAllLibrariesMediaContainer.md | 16 - .../Requests/GetSearchAllLibrariesMetadata.md | 82 - ...SearchAllLibrariesOptimizedForStreaming.md | 18 - ...earchAllLibrariesOptimizedForStreaming1.md | 9 - ...lLibrariesOptimizedForStreamingLibrary1.md | 9 - .../Requests/GetSearchAllLibrariesPart.md | 22 - ...llLibrariesQueryParamIncludeCollections.md | 11 - ...LibrariesQueryParamIncludeExternalMedia.md | 11 - .../Requests/GetSearchAllLibrariesRequest.md | 13 - .../Requests/GetSearchAllLibrariesResponse.md | 11 - .../GetSearchAllLibrariesResponseBody.md | 10 - .../Requests/GetSearchAllLibrariesRole.md | 11 - .../GetSearchAllLibrariesShowOrdering.md | 21 - .../Requests/GetSearchAllLibrariesType.md | 20 - .../GetSearchAllLibrariesUltraBlurColors.md | 11 - .../Requests/GetSearchAllLibrariesWriter.md | 10 - .../GetSearchLibraryMediaContainer.md | 20 - .../Requests/GetSearchLibraryMetadata.md | 27 - .../GetSearchLibraryQueryParamType.md | 24 - .../Requests/GetSearchLibraryRequest.md | 9 - .../Requests/GetSearchLibraryResponse.md | 11 - .../Requests/GetSearchLibraryResponseBody.md | 10 - .../Requests/GetSearchResultsCountry.md | 8 - .../Requests/GetSearchResultsDirector.md | 8 - 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 | 11 - .../Requests/GetSearchResultsResponseBody.md | 10 - docs/Models/Requests/GetSearchResultsRole.md | 8 - .../Models/Requests/GetSearchResultsWriter.md | 8 - .../GetSectionFiltersMediaContainer.md | 17 + .../Requests/GetSectionFiltersRequest.md | 19 + .../Requests/GetSectionFiltersResponse.md | 11 + .../Requests/GetSectionFiltersResponseBody.md | 10 + .../Requests/GetSectionHubsMediaContainer.md | 17 + docs/Models/Requests/GetSectionHubsRequest.md | 21 + .../Models/Requests/GetSectionHubsResponse.md | 12 + .../Requests/GetSectionHubsResponseBody.md | 10 + .../Models/Requests/GetSectionImageRequest.md | 22 + .../Requests/GetSectionImageResponse.md | 10 + .../Requests/GetSectionPreferencesRequest.md | 20 + .../Requests/GetSectionPreferencesResponse.md | 11 + .../Requests/GetSectionsMediaContainer.md | 19 + .../Requests/GetSectionsPrefsRequest.md | 20 + .../Requests/GetSectionsPrefsResponse.md | 11 + docs/Models/Requests/GetSectionsResponse.md | 12 + .../Requests/GetSectionsResponseBody.md | 10 + .../GetServerActivitiesMediaContainer.md | 9 - .../Requests/GetServerActivitiesResponse.md | 11 - .../GetServerActivitiesResponseBody.md | 10 - .../Requests/GetServerCapabilitiesResponse.md | 11 - .../GetServerCapabilitiesResponseBody.md | 10 - .../GetServerIdentityMediaContainer.md | 11 - .../Requests/GetServerIdentityResponse.md | 11 - .../Requests/GetServerIdentityResponseBody.md | 10 - docs/Models/Requests/GetServerInfoRequest.md | 18 + docs/Models/Requests/GetServerInfoResponse.md | 11 + .../Requests/GetServerListMediaContainer.md | 9 - docs/Models/Requests/GetServerListResponse.md | 11 - .../Requests/GetServerListResponseBody.md | 10 - docs/Models/Requests/GetServerListServer.md | 13 - .../GetServerPreferencesMediaContainer.md | 9 - .../Requests/GetServerPreferencesResponse.md | 11 - .../GetServerPreferencesResponseBody.md | 10 - .../Requests/GetServerResourcesRequest.md | 11 - .../Requests/GetServerResourcesResponse.md | 11 - .../GetSessionHistoryMediaContainer.md | 9 - .../Requests/GetSessionHistoryMetadata.md | 26 - .../Requests/GetSessionHistoryRequest.md | 11 - .../Requests/GetSessionHistoryResponse.md | 11 - .../Requests/GetSessionHistoryResponseBody.md | 10 - .../GetSessionPlaylistIndexRequest.md | 20 + .../GetSessionPlaylistIndexResponse.md | 10 + .../Requests/GetSessionSegmentRequest.md | 21 + .../Requests/GetSessionSegmentResponse.md | 10 + docs/Models/Requests/GetSessionsMedia.md | 15 - .../Requests/GetSessionsMediaContainer.md | 9 - docs/Models/Requests/GetSessionsMetadata.md | 45 - docs/Models/Requests/GetSessionsPart.md | 17 - docs/Models/Requests/GetSessionsResponse.md | 3 +- .../Requests/GetSessionsResponseBody.md | 10 - docs/Models/Requests/GetSessionsStream.md | 27 - docs/Models/Requests/GetSessionsUser.md | 10 - docs/Models/Requests/GetSonicPathRequest.md | 23 + docs/Models/Requests/GetSonicPathResponse.md | 11 + .../Requests/GetSonicallySimilarRequest.md | 23 + .../Requests/GetSonicallySimilarResponse.md | 11 + ...urceConnectionInformationMediaContainer.md | 17 + .../GetSourceConnectionInformationRequest.md | 18 +- .../GetSourceConnectionInformationResponse.md | 3 +- ...SourceConnectionInformationResponseBody.md | 10 + docs/Models/Requests/GetStatisticsDevice.md | 12 - .../Requests/GetStatisticsMediaContainer.md | 11 - docs/Models/Requests/GetStatisticsRequest.md | 8 - docs/Models/Requests/GetStatisticsResponse.md | 11 - .../Requests/GetStatisticsResponseBody.md | 10 - docs/Models/Requests/GetStreamLevelsLevel.md | 8 + .../Requests/GetStreamLevelsMediaContainer.md | 18 + .../Models/Requests/GetStreamLevelsRequest.md | 20 + .../Requests/GetStreamLevelsResponse.md | 11 + .../Requests/GetStreamLevelsResponseBody.md | 10 + .../Requests/GetStreamLoudnessRequest.md | 20 + .../Requests/GetStreamLoudnessResponse.md | 11 + docs/Models/Requests/GetStreamRequest.md | 23 + docs/Models/Requests/GetStreamResponse.md | 10 + .../Models/Requests/GetSubscriptionRequest.md | 21 + .../Requests/GetSubscriptionResponse.md | 11 + docs/Models/Requests/GetTagsMediaContainer.md | 17 + docs/Models/Requests/GetTagsRequest.md | 19 + docs/Models/Requests/GetTagsResponse.md | 11 + docs/Models/Requests/GetTagsResponseBody.md | 10 + docs/Models/Requests/GetTasksResponse.md | 11 + docs/Models/Requests/GetTasksResponseBody.md | 10 + .../Requests/GetTemplateMediaContainer.md | 17 + docs/Models/Requests/GetTemplateRequest.md | 19 + docs/Models/Requests/GetTemplateResponse.md | 12 + .../Requests/GetTemplateResponseBody.md | 10 + docs/Models/Requests/GetThumbImageRequest.md | 13 - docs/Models/Requests/GetThumbImageResponse.md | 12 - docs/Models/Requests/GetThumbRequest.md | 20 + docs/Models/Requests/GetThumbResponse.md | 10 + docs/Models/Requests/GetTimelineRequest.md | 17 - docs/Models/Requests/GetTimelineResponse.md | 10 - .../GetTokenByPinIdAuthPinContainer.md | 21 - .../Models/Requests/GetTokenByPinIdGeoData.md | 20 - .../Models/Requests/GetTokenByPinIdRequest.md | 13 - .../Requests/GetTokenByPinIdResponse.md | 11 - ...okenDetailsAuthenticationResponseStatus.md | 11 - .../GetTokenDetailsAuthenticationStatus.md | 11 - .../Requests/GetTokenDetailsResponse.md | 11 - docs/Models/Requests/GetTokenDetailsStatus.md | 9 - .../Requests/GetTokenDetailsSubscription.md | 13 - .../GetTokenDetailsUserPlexAccount.md | 50 - .../Requests/GetTopWatchedContentCountry.md | 10 - .../Requests/GetTopWatchedContentGenre.md | 10 - .../Requests/GetTopWatchedContentGuids.md | 8 - .../GetTopWatchedContentMediaContainer.md | 13 - .../Requests/GetTopWatchedContentMetadata.md | 39 - ...TopWatchedContentQueryParamIncludeGuids.md | 12 - .../GetTopWatchedContentQueryParamType.md | 24 - .../Requests/GetTopWatchedContentRequest.md | 9 - .../Requests/GetTopWatchedContentResponse.md | 11 - .../GetTopWatchedContentResponseBody.md | 10 - .../Requests/GetTopWatchedContentRole.md | 13 - .../Requests/GetTopWatchedContentUser.md | 8 - .../GetTranscodeSessionsMediaContainer.md | 9 - .../Requests/GetTranscodeSessionsResponse.md | 11 - .../GetTranscodeSessionsResponseBody.md | 10 - .../GetTransientTokenMediaContainer.md | 17 + .../GetTransientTokenQueryParamType.md | 10 - .../Requests/GetTransientTokenRequest.md | 19 +- .../Requests/GetTransientTokenResponse.md | 3 +- .../Requests/GetTransientTokenResponseBody.md | 10 + .../Requests/GetUpdateStatusMediaContainer.md | 13 - .../Requests/GetUpdateStatusResponse.md | 11 - .../Requests/GetUpdateStatusResponseBody.md | 10 - .../GetUpdatesStatusMediaContainer.md | 13 + .../Requests/GetUpdatesStatusResponse.md | 11 + .../Requests/GetUpdatesStatusResponseBody.md | 10 + docs/Models/Requests/GetUpdatesStatusState.md | 29 + .../Models/Requests/GetUserFriendsResponse.md | 11 - .../Models/Requests/GetUsersMediaContainer.md | 15 - docs/Models/Requests/GetUsersRequest.md | 20 - docs/Models/Requests/GetUsersResponse.md | 11 - docs/Models/Requests/GetUsersResponseBody.md | 10 - docs/Models/Requests/GetUsersServer.md | 16 - docs/Models/Requests/GetWatchListRequest.md | 16 - docs/Models/Requests/GetWatchListResponse.md | 11 - .../Requests/GetWatchListResponseBody.md | 16 - docs/Models/Requests/Guids.md | 8 - docs/Models/Requests/HasThumbnail.md | 11 - docs/Models/Requests/Hidden.md | 12 - docs/Models/Requests/Hints.md | 9 + docs/Models/Requests/Home.md | 11 - docs/Models/Requests/HomeVisibility.md | 18 + docs/Models/Requests/Hub.md | 22 +- docs/Models/Requests/Image.md | 10 - docs/Models/Requests/IncludeAdvanced.md | 9 - docs/Models/Requests/IncludeCollections.md | 12 - docs/Models/Requests/IncludeDetails.md | 13 - docs/Models/Requests/IncludeExternalMedia.md | 12 - docs/Models/Requests/IncludeGuids.md | 12 - docs/Models/Requests/IncludeHttps.md | 11 - docs/Models/Requests/IncludeIPv6.md | 11 - docs/Models/Requests/IncludeMeta.md | 12 - docs/Models/Requests/IncludeRelay.md | 13 - docs/Models/Requests/Index.md | 10 + .../Requests/IngestTransientItemRequest.md | 22 + .../Requests/IngestTransientItemResponse.md | 12 + docs/Models/Requests/InternalPaymentMethod.md | 7 - docs/Models/Requests/Item.md | 18 + docs/Models/Requests/Language.md | 9 + docs/Models/Requests/Level.md | 10 +- docs/Models/Requests/Libtype.md | 12 - docs/Models/Requests/Lineup.md | 13 + docs/Models/Requests/LineupType.md | 21 + .../Requests/ListActivitiesMediaContainer.md | 8 + .../Models/Requests/ListActivitiesResponse.md | 11 + .../Requests/ListActivitiesResponseBody.md | 10 + docs/Models/Requests/ListContentRequest.md | 20 + docs/Models/Requests/ListContentResponse.md | 12 + .../Requests/ListDVRsDVRsMediaContainer.md | 17 + .../Models/Requests/ListDVRsMediaContainer.md | 9 + docs/Models/Requests/ListDVRsResponse.md | 12 + docs/Models/Requests/ListDVRsResponseBody.md | 10 + docs/Models/Requests/ListDevicesResponse.md | 12 + .../ListDownloadQueueItemsMediaContainer.md | 17 + .../Requests/ListDownloadQueueItemsRequest.md | 19 + .../ListDownloadQueueItemsResponse.md | 11 + .../ListDownloadQueueItemsResponseBody.md | 10 + .../Requests/ListDownloadQueueItemsStatus.md | 22 + .../Models/Requests/ListHubsMediaContainer.md | 17 + docs/Models/Requests/ListHubsRequest.md | 20 + docs/Models/Requests/ListHubsResponse.md | 12 + docs/Models/Requests/ListHubsResponseBody.md | 10 + docs/Models/Requests/ListLineupsRequest.md | 21 + docs/Models/Requests/ListLineupsResponse.md | 12 + docs/Models/Requests/ListMatchesRequest.md | 25 + docs/Models/Requests/ListMatchesResponse.md | 11 + docs/Models/Requests/ListMomentsRequest.md | 19 + docs/Models/Requests/ListMomentsResponse.md | 11 + .../Models/Requests/ListPersonMediaRequest.md | 19 + .../Requests/ListPersonMediaResponse.md | 11 + .../ListPlaybackHistoryMediaContainer.md | 17 + .../Requests/ListPlaybackHistoryMetadata.md | 18 + .../Requests/ListPlaybackHistoryRequest.md | 23 + .../Requests/ListPlaybackHistoryResponse.md | 12 + .../ListPlaybackHistoryResponseBody.md | 10 + docs/Models/Requests/ListPlaylistsRequest.md | 20 + docs/Models/Requests/ListPlaylistsResponse.md | 12 + .../Requests/ListProvidersMediaContainer.md | 68 + docs/Models/Requests/ListProvidersResponse.md | 11 + .../Requests/ListProvidersResponseBody.md | 10 + .../Requests/ListSessionsMediaContainer.md | 17 + docs/Models/Requests/ListSessionsResponse.md | 12 + .../Requests/ListSessionsResponseBody.md | 10 + docs/Models/Requests/ListSimilarRequest.md | 20 + docs/Models/Requests/ListSimilarResponse.md | 11 + .../Requests/ListSonicallySimilarRequest.md | 23 + .../Requests/ListSonicallySimilarResponse.md | 11 + .../Requests/ListTopUsersMediaContainer.md | 17 + docs/Models/Requests/ListTopUsersRequest.md | 19 + docs/Models/Requests/ListTopUsersResponse.md | 11 + .../Requests/ListTopUsersResponseBody.md | 10 + docs/Models/Requests/Location.md | 12 +- docs/Models/Requests/LogLineRequest.md | 10 - docs/Models/Requests/LogLineResponse.md | 10 - docs/Models/Requests/LogMultiLineResponse.md | 10 - docs/Models/Requests/MailingListStatus.md | 11 - docs/Models/Requests/MakeDecisionRequest.md | 49 + docs/Models/Requests/MakeDecisionResponse.md | 11 + docs/Models/Requests/MarkPlayedRequest.md | 19 +- docs/Models/Requests/MarkUnplayedRequest.md | 8 - docs/Models/Requests/MarkUnplayedResponse.md | 10 - docs/Models/Requests/Marker.md | 15 - docs/Models/Requests/MatchItemRequest.md | 22 + docs/Models/Requests/MatchItemResponse.md | 10 + docs/Models/Requests/Media.md | 26 - docs/Models/Requests/MediaContainer.md | 115 +- docs/Models/Requests/MediaGrabber.md | 10 + docs/Models/Requests/MediaProvider.md | 12 - .../Models/Requests/MediaReviewsVisibility.md | 11 - docs/Models/Requests/MediaSettings.md | 27 + docs/Models/Requests/MediaSubscription.md | 28 + docs/Models/Requests/MergeItemsRequest.md | 20 + docs/Models/Requests/MergeItemsResponse.md | 10 + docs/Models/Requests/Meta.md | 12 - docs/Models/Requests/Metadata.md | 117 +- docs/Models/Requests/MinSize.md | 11 - .../Requests/ModifyDeviceMediaContainer.md | 18 + docs/Models/Requests/ModifyDeviceRequest.md | 20 + docs/Models/Requests/ModifyDeviceResponse.md | 12 + .../Requests/ModifyDeviceResponseBody.md | 10 + .../Requests/MoveCollectionItemRequest.md | 21 + .../Requests/MoveCollectionItemResponse.md | 11 + docs/Models/Requests/MoveHubRequest.md | 21 + docs/Models/Requests/MoveHubResponse.md | 12 + .../Requests/MovePlayQueueItemRequest.md | 21 + .../Requests/MovePlayQueueItemResponse.md | 11 + .../Requests/MovePlaylistItemRequest.md | 21 + .../Requests/MovePlaylistItemResponse.md | 11 + docs/Models/Requests/MyPlex.md | 19 - docs/Models/Requests/One.md | 9 - docs/Models/Requests/OnlyTransient.md | 11 - docs/Models/Requests/Operator.md | 9 - .../Requests/OptimizeDatabaseRequest.md | 19 + .../Requests/OptimizeDatabaseResponse.md | 10 + docs/Models/Requests/OptimizedForStreaming.md | 18 - .../Models/Requests/OptimizedForStreaming1.md | 9 - docs/Models/Requests/Owned.md | 11 - docs/Models/Requests/Params.md | 12 + docs/Models/Requests/Part.md | 23 - docs/Models/Requests/PastSubscription.md | 22 - docs/Models/Requests/PathParamElement.md | 13 + docs/Models/Requests/PathParamIndex.md | 10 + docs/Models/Requests/PathParamTask.md | 31 + docs/Models/Requests/PathParamTaskName.md | 23 - docs/Models/Requests/Pending.md | 11 - docs/Models/Requests/PerformSearchRequest.md | 10 - docs/Models/Requests/PerformSearchResponse.md | 10 - .../Requests/PerformVoiceSearchRequest.md | 10 - .../Requests/PerformVoiceSearchResponse.md | 10 - docs/Models/Requests/PlayQueueGenerator.md | 14 + docs/Models/Requests/Player.md | 22 - docs/Models/Requests/PlaylistType.md | 2 +- docs/Models/Requests/PlexDevice.md | 31 - docs/Models/Requests/Policy.md | 10 + docs/Models/Requests/PostMediaArtsRequest.md | 10 - docs/Models/Requests/PostMediaArtsResponse.md | 10 - .../Models/Requests/PostMediaPosterRequest.md | 10 - .../Requests/PostMediaPosterResponse.md | 10 - ...sSignInDataAuthenticationResponseStatus.md | 11 - ...PostUsersSignInDataAuthenticationStatus.md | 11 - ...ersSignInDataAuthenticationSubscription.md | 13 - .../PostUsersSignInDataAutoSelectSubtitle.md | 11 - ...sSignInDataDefaultSubtitleAccessibility.md | 11 - ...ostUsersSignInDataDefaultSubtitleForced.md | 11 - .../PostUsersSignInDataMailingListStatus.md | 11 - ...stUsersSignInDataMediaReviewsVisibility.md | 11 - .../Requests/PostUsersSignInDataRequest.md | 13 - .../PostUsersSignInDataRequestBody.md | 13 - .../Requests/PostUsersSignInDataResponse.md | 11 - .../Requests/PostUsersSignInDataServices.md | 12 - .../Requests/PostUsersSignInDataState.md | 8 - .../Requests/PostUsersSignInDataStatus.md | 9 - .../PostUsersSignInDataSubscription.md | 15 - .../PostUsersSignInDataUserPlexAccount.md | 52 - .../PostUsersSignInDataUserProfile.md | 15 - .../PostUsersSignInDataWatchedIndicator.md | 11 - docs/Models/Requests/Prefs.md | 7 + .../Requests/ProcessSubscriptionsResponse.md | 11 + docs/Models/Requests/ProcessingState.md | 15 + .../Models/Requests/ProcessingStateContext.md | 21 + docs/Models/Requests/Producer.md | 12 - docs/Models/Requests/Protected.md | 11 - docs/Models/Requests/Protocol.md | 12 +- docs/Models/Requests/Provider.md | 10 - docs/Models/Requests/QueryParamArgs.md | 7 + docs/Models/Requests/QueryParamAttributes.md | 9 + docs/Models/Requests/QueryParamFilter.md | 11 - docs/Models/Requests/QueryParamForce.md | 15 - .../Requests/QueryParamIncludeCollections.md | 9 - .../QueryParamIncludeExternalMedia.md | 9 - .../Models/Requests/QueryParamIncludeGuids.md | 12 - docs/Models/Requests/QueryParamIncludeMeta.md | 12 - docs/Models/Requests/QueryParamLocation.md | 12 + .../Requests/QueryParamOnlyTransient.md | 11 - docs/Models/Requests/QueryParamPrefs.md | 9 + docs/Models/Requests/QueryParamProtocol.md | 13 + docs/Models/Requests/QueryParamSmart.md | 11 - docs/Models/Requests/QueryParamSubtitles.md | 17 + docs/Models/Requests/QueryParamType.md | 18 +- docs/Models/Requests/Rating.md | 12 - docs/Models/Requests/Ratings.md | 10 - .../Requests/RecommendationsVisibility.md | 18 + .../Requests/RefreshItemsMetadataRequest.md | 21 + .../Requests/RefreshItemsMetadataResponse.md | 10 + .../Models/Requests/RefreshPlaylistRequest.md | 22 + .../Requests/RefreshPlaylistResponse.md | 10 + .../Requests/RefreshProvidersResponse.md | 10 + docs/Models/Requests/RefreshSectionRequest.md | 21 + .../Models/Requests/RefreshSectionResponse.md | 10 + .../RefreshSectionsMetadataRequest.md | 19 + .../RefreshSectionsMetadataResponse.md | 10 + docs/Models/Requests/Release.md | 16 +- docs/Models/Requests/ReloadGuideRequest.md | 19 + docs/Models/Requests/ReloadGuideResponse.md | 11 + .../Models/Requests/RemoveDeviceFromDVRDVR.md | 12 + .../RemoveDeviceFromDVRDVRsMediaContainer.md | 17 + .../RemoveDeviceFromDVRMediaContainer.md | 9 + .../Requests/RemoveDeviceFromDVRRequest.md | 20 + .../Requests/RemoveDeviceFromDVRResponse.md | 12 + .../RemoveDeviceFromDVRResponseBody.md | 10 + .../Requests/RemoveDeviceMediaContainer.md | 18 + docs/Models/Requests/RemoveDeviceRequest.md | 19 + docs/Models/Requests/RemoveDeviceResponse.md | 12 + .../Requests/RemoveDeviceResponseBody.md | 10 + .../RemoveDownloadQueueItemsRequest.md | 20 + .../RemoveDownloadQueueItemsResponse.md | 10 + .../Requests/ReorderSubscriptionRequest.md | 20 + .../Requests/ReorderSubscriptionResponse.md | 11 + docs/Models/Requests/ReportRequest.md | 33 + docs/Models/Requests/ReportResponse.md | 11 + docs/Models/Requests/ReportResponseBody.md | 10 + docs/Models/Requests/ResetPlayQueueRequest.md | 19 + .../Models/Requests/ResetPlayQueueResponse.md | 11 + .../Requests/ResetSectionDefaultsRequest.md | 19 + .../Requests/ResetSectionDefaultsResponse.md | 10 + docs/Models/Requests/ResponseBody.md | 13 - ...tartProcessingDownloadQueueItemsRequest.md | 20 + ...artProcessingDownloadQueueItemsResponse.md | 10 + docs/Models/Requests/Restricted.md | 11 - docs/Models/Requests/Role.md | 13 - docs/Models/Requests/ScanRequest.md | 20 + docs/Models/Requests/ScanResponse.md | 12 + docs/Models/Requests/Scope.md | 2 +- .../Requests/SearchHubsMediaContainer.md | 17 + docs/Models/Requests/SearchHubsRequest.md | 21 + docs/Models/Requests/SearchHubsResponse.md | 12 + .../Models/Requests/SearchHubsResponseBody.md | 10 + docs/Models/Requests/SearchResult.md | 10 - docs/Models/Requests/SearchTypes.md | 12 - docs/Models/Requests/Server.md | 18 - docs/Models/Requests/Services.md | 12 - docs/Models/Requests/Session.md | 10 - docs/Models/Requests/SetChannelmapRequest.md | 22 + docs/Models/Requests/SetChannelmapResponse.md | 11 + docs/Models/Requests/SetDVRPreferencesDVR.md | 12 + .../SetDVRPreferencesDVRsMediaContainer.md | 17 + .../SetDVRPreferencesMediaContainer.md | 9 + .../Requests/SetDVRPreferencesRequest.md | 20 + .../Requests/SetDVRPreferencesResponse.md | 12 + .../Requests/SetDVRPreferencesResponseBody.md | 10 + .../Requests/SetDevicePreferencesRequest.md | 20 + .../Requests/SetDevicePreferencesResponse.md | 10 + docs/Models/Requests/SetItemArtworkRequest.md | 21 + .../Models/Requests/SetItemArtworkResponse.md | 10 + .../Requests/SetItemPreferencesRequest.md | 20 + .../Requests/SetItemPreferencesResponse.md | 10 + docs/Models/Requests/SetPreferencesRequest.md | 19 + .../Models/Requests/SetPreferencesResponse.md | 10 + docs/Models/Requests/SetRatingRequest.md | 22 + docs/Models/Requests/SetRatingResponse.md | 10 + .../SetSectionPreferencesQueryParamPrefs.md | 7 + .../Requests/SetSectionPreferencesRequest.md | 20 + .../Requests/SetSectionPreferencesResponse.md | 10 + .../Models/Requests/SetStreamOffsetRequest.md | 21 + .../Requests/SetStreamOffsetResponse.md | 10 + .../Requests/SetStreamSelectionRequest.md | 22 + .../Requests/SetStreamSelectionResponse.md | 10 + docs/Models/Requests/Setting.md | 17 - docs/Models/Requests/SharedServers.md | 7 - docs/Models/Requests/SharedSources.md | 7 - docs/Models/Requests/ShowOrdering.md | 21 - docs/Models/Requests/ShuffleRequest.md | 19 + docs/Models/Requests/ShuffleResponse.md | 11 + docs/Models/Requests/Similar.md | 12 - docs/Models/Requests/Skip.md | 11 - docs/Models/Requests/Smart.md | 11 - docs/Models/Requests/Sort.md | 15 - docs/Models/Requests/SplitItemRequest.md | 19 + docs/Models/Requests/SplitItemResponse.md | 10 + docs/Models/Requests/StartAllTasksResponse.md | 10 - docs/Models/Requests/StartAnalysisRequest.md | 19 + docs/Models/Requests/StartAnalysisResponse.md | 10 + .../Requests/StartBifGenerationRequest.md | 20 + .../Requests/StartBifGenerationResponse.md | 10 + docs/Models/Requests/StartTaskRequest.md | 17 +- docs/Models/Requests/StartTasksResponse.md | 10 + ...StartTranscodeSessionQueryParamLocation.md | 12 + ...StartTranscodeSessionQueryParamProtocol.md | 13 + ...tartTranscodeSessionQueryParamSubtitles.md | 17 + .../Requests/StartTranscodeSessionRequest.md | 50 + .../Requests/StartTranscodeSessionResponse.md | 11 + .../StartUniversalTranscodeRequest.md | 23 - .../StartUniversalTranscodeResponse.md | 10 - docs/Models/Requests/State.md | 13 +- docs/Models/Requests/StatisticsBandwidth.md | 13 - docs/Models/Requests/StatisticsMedia.md | 14 - docs/Models/Requests/StatisticsResources.md | 13 - docs/Models/Requests/Status.md | 18 +- .../Requests/StopAllRefreshesResponse.md | 11 + docs/Models/Requests/StopAllTasksResponse.md | 10 - docs/Models/Requests/StopDVRReloadRequest.md | 19 + docs/Models/Requests/StopDVRReloadResponse.md | 10 + docs/Models/Requests/StopScanRequest.md | 19 + docs/Models/Requests/StopScanResponse.md | 11 + docs/Models/Requests/StopTaskRequest.md | 17 +- docs/Models/Requests/StopTasksResponse.md | 10 + .../Requests/StopTranscodeSessionRequest.md | 8 - .../Requests/StopTranscodeSessionResponse.md | 10 - docs/Models/Requests/Stream.md | 58 - docs/Models/Requests/Subscription.md | 15 - docs/Models/Requests/SubscriptionTemplate.md | 8 + docs/Models/Requests/Subtitles.md | 17 + docs/Models/Requests/Tag.md | 25 - docs/Models/Requests/Task.md | 31 + docs/Models/Requests/TaskName.md | 23 - .../Requests/TerminateSessionRequest.md | 20 + .../Requests/TerminateSessionResponse.md | 10 + docs/Models/Requests/Tonight.md | 11 - docs/Models/Requests/Transcode.md | 9 + docs/Models/Requests/TranscodeImageRequest.md | 32 + .../Models/Requests/TranscodeImageResponse.md | 13 + docs/Models/Requests/TranscodeJob.md | 18 + docs/Models/Requests/TranscodeSession.md | 31 - .../Requests/TranscodeSubtitlesRequest.md | 49 + .../Requests/TranscodeSubtitlesResponse.md | 10 + docs/Models/Requests/Trials.md | 7 - .../Models/Requests/TriggerFallbackRequest.md | 20 + .../Requests/TriggerFallbackResponse.md | 10 + docs/Models/Requests/TuneChannelRequest.md | 20 + docs/Models/Requests/TuneChannelResponse.md | 12 + docs/Models/Requests/Type.md | 24 +- docs/Models/Requests/UltraBlurColors.md | 12 +- docs/Models/Requests/UnmatchRequest.md | 19 + docs/Models/Requests/UnmatchResponse.md | 10 + docs/Models/Requests/UnscrobbleRequest.md | 21 + docs/Models/Requests/UnscrobbleResponse.md | 10 + docs/Models/Requests/UnshuffleRequest.md | 19 + docs/Models/Requests/UnshuffleResponse.md | 11 + .../Requests/UpdateHubVisibilityRequest.md | 23 + .../Requests/UpdateHubVisibilityResponse.md | 10 + .../Requests/UpdateItemArtworkRequest.md | 21 + .../Requests/UpdateItemArtworkResponse.md | 10 + docs/Models/Requests/UpdateItemsRequest.md | 32 + docs/Models/Requests/UpdateItemsResponse.md | 10 + .../Requests/UpdatePlayProgressRequest.md | 10 - .../Requests/UpdatePlayProgressResponse.md | 10 - docs/Models/Requests/UpdatePlaylistRequest.md | 19 +- docs/Models/Requests/UploadPlaylistRequest.md | 20 +- docs/Models/Requests/Upscale.md | 11 - docs/Models/Requests/User.md | 27 - docs/Models/Requests/UserProfile.md | 15 - .../Requests/VoiceSearchHubsMediaContainer.md | 17 + .../Models/Requests/VoiceSearchHubsRequest.md | 21 + .../Requests/VoiceSearchHubsResponse.md | 12 + .../Requests/VoiceSearchHubsResponseBody.md | 10 + docs/Models/Requests/WatchedIndicator.md | 11 - docs/Models/Requests/WriteLogResponse.md | 10 + docs/Models/Requests/WriteMessageRequest.md | 21 + docs/Models/Requests/WriteMessageResponse.md | 10 + docs/Models/Requests/Writer.md | 12 - docs/sdks/activities/README.md | 78 +- docs/sdks/authentication/README.md | 180 - docs/sdks/butler/README.md | 252 +- docs/sdks/collections/README.md | 62 + docs/sdks/content/README.md | 712 ++ docs/sdks/devices/README.md | 706 ++ docs/sdks/downloadqueue/README.md | 536 + docs/sdks/dvrs/README.md | 684 ++ docs/sdks/epg/README.md | 449 + docs/sdks/events/README.md | 114 + docs/sdks/general/README.md | 197 + docs/sdks/hubs/README.md | 782 +- docs/sdks/library/README.md | 4708 +++++++-- docs/sdks/librarycollections/README.md | 171 + docs/sdks/libraryplaylists/README.md | 653 ++ docs/sdks/livetv/README.md | 201 + docs/sdks/log/README.md | 197 +- docs/sdks/media/README.md | 222 - docs/sdks/playlist/README.md | 167 + docs/sdks/playlists/README.md | 390 - docs/sdks/playqueue/README.md | 503 + docs/sdks/plex/README.md | 290 - docs/sdks/plexapi/README.md | 31 - docs/sdks/preferences/README.md | 142 + docs/sdks/provider/README.md | 173 + docs/sdks/rate/README.md | 65 + docs/sdks/search/README.md | 144 +- docs/sdks/server/README.md | 310 - docs/sdks/sessions/README.md | 155 - docs/sdks/statistics/README.md | 121 - docs/sdks/status/README.md | 306 + docs/sdks/subscriptions/README.md | 502 + docs/sdks/timeline/README.md | 185 + docs/sdks/transcoder/README.md | 361 + docs/sdks/ultrablur/README.md | 121 + docs/sdks/updater/README.md | 196 +- docs/sdks/users/README.md | 61 - docs/sdks/video/README.md | 118 - docs/sdks/watchlist/README.md | 54 - 3366 files changed, 111145 insertions(+), 71251 deletions(-) delete mode 100644 LukeHagar/PlexAPI/SDK/Authentication.cs create mode 100644 LukeHagar/PlexAPI/SDK/Collections.cs create mode 100644 LukeHagar/PlexAPI/SDK/Content.cs create mode 100644 LukeHagar/PlexAPI/SDK/DVRs.cs create mode 100644 LukeHagar/PlexAPI/SDK/Devices.cs create mode 100644 LukeHagar/PlexAPI/SDK/DownloadQueue.cs create mode 100644 LukeHagar/PlexAPI/SDK/Epg.cs create mode 100644 LukeHagar/PlexAPI/SDK/Events.cs create mode 100644 LukeHagar/PlexAPI/SDK/General.cs create mode 100644 LukeHagar/PlexAPI/SDK/LibraryCollections.cs create mode 100644 LukeHagar/PlexAPI/SDK/LibraryPlaylists.cs create mode 100644 LukeHagar/PlexAPI/SDK/LiveTV.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Media.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Accepts.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/AdvancedSubtitles.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/AiringsType.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/BoolInt.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Channel.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/ChannelMapping.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Composite.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/CompositeMedia.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Crop.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Decision.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Default.cs rename LukeHagar/PlexAPI/SDK/Models/{Requests => Components}/DefaultDirection.cs (89%) create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Device.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Directory.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Dvr.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Filter.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/FilterPivot.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Format.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200Hub.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200MediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200MediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200Metadata.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/HomeVisibility.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Hub.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Image.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/ImageType.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Items.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/LibrarySection.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/LibrarySectionLocation.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Lineup.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/LineupType.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Location.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Media.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtwork.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkMetadata.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkType.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecision.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionDecision.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionLocation.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMedia.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMetadata.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionPart.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionStream.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDevice.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDeviceDevice.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDeviceMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDirectory.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDirectoryMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithHubs.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithHubsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithLineup.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithLineupMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithMetadata.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithMetadataMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithNestedMetadata.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithNestedMetadataMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadata.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadataMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadataMetadata.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSettings.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSettingsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSubscription.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSubscriptionMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaGrabOperation.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaQuery.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MediaSubscription.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Metadata.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/MetadataItem.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Part.cs rename LukeHagar/PlexAPI/SDK/Models/{Requests => Components}/Pivot.cs (95%) create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Player.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/PlaylistType.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200MediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200Type.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Protocol.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/RecommendationsVisibility.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200Directory.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200MediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Session.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/SessionLocation.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Setting.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/SlashGetResponses200.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/SlashGetResponses200MediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Sort.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/SortDefault.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/SortPivot.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Status.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Stream.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Subtitles.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Tag.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/TranscodeSession.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/TranscodeType.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Type.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/User.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Components/Value.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsPlaylistsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesUpdaterErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesActivitiesErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesUpdaterErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsPlaylistsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistPlaylistsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistPlaylistsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailLogErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/Errors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsServerErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsStatisticsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageMediaErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksButlerErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataPlexErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesServerErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataPlexErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsHubsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataPlexErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsHubsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersServerErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountServerErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPinBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPinErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsPlaylistsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistPlaylistsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsPlaylistsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoServerErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsStatisticsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsSearchErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesActivitiesErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerIdentityRequestTimeout.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListServerErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesServerErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesPlexErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistorySessionsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsSessionsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationAuthenticationErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsStatisticsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageMediaErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineVideoErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdPlexErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsAuthenticationErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentLibraryErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsSessionsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenAuthenticationErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusUpdaterErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsPlexErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersUsersErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListWatchlistErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/LogLineBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/LogLineErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/LogLineLogErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/LogLineUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineLogErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedMediaErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedMediaErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchSearchErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchSearchErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataAuthenticationErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksButlerErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskButlerErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeVideoErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksButlerErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskButlerErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionSessionsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressMediaErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistPlaylistsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistBadRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistPlaylistsErrors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistUnauthorized.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ActiveDirection.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddCollectionItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddCollectionItemsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRDVR.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRDVRsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddExtrasRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddExtrasResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupDVR.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupDVRsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistItemsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddProviderRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddProviderResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddSectionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddSectionResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddSubtitlesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddSubtitlesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddToPlayQueueRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddToPlayQueueResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AddedQueueItems.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AdvancedSubtitles.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AllLibraries.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AllowCameraUpload.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AllowChannels.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AllowSubtitleAdmin.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AllowSync.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AllowTuners.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AnalyzeMetadataRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AnalyzeMetadataResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Args.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AutoSelectSubtitle.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AutocompleteRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/AutocompleteResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Bandwidth.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Bandwidths.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Billing.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CancelActivityRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CancelActivityResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CancelGrabRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CancelGrabResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CancelRefreshRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CancelRefreshResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CancelServerActivitiesRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CancelServerActivitiesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ChannelMapping.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ChannelMappingByKey.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Chapter.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CheckForUpdatesRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CheckForUpdatesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CheckUpdatesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CheckUpdatesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ChromaSubsampling.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CleanBundlesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlayQueueRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlayQueueResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistContentsRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistContentsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistItemsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Collection.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapChannelMapping.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ConnectWebSocketRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ConnectWebSocketResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Connection.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Connections.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Context.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateCollectionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateCollectionResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateCustomHubRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateCustomHubResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateDVRRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateDVRResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerType.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistQueryParamType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionQueryParamPrefs.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DecisionResult.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DefaultSubtitleAccessibility.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DefaultSubtitleForced.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCachesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionItemResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCustomHubRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCustomHubResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteDVRRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteDVRResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteHistoryRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteHistoryResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIndexesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIndexesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIntrosRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIntrosResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibraryRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibraryResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibrarySectionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibrarySectionResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupDVR.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupDVRsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMarkerRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMarkerResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaItemResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaProviderRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaProviderResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMetadataItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMetadataItemResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlayQueueItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlayQueueItemResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistItemResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteStreamRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteStreamResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteSubscriptionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeleteSubscriptionResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DetectAdsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DetectAdsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DetectCreditsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DetectCreditsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DetectIntrosRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DetectIntrosResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DetectVoiceActivityRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DetectVoiceActivityResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DeviceChannel.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Director.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DiscoverDevicesResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Download.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DownloadQueue.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/DownloadQueueItem.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Dvr.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EditMarkerRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EditMarkerResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EditMetadataItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EditMetadataItemResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionQueryParamPrefs.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesQueryParamPrefs.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Element.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EmptyTrashRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EmptyTrashResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EnablePaperTrailResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EnablePapertrailRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/EnablePapertrailResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Extension.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Extras.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Field.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/FieldType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Filter.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/FlattenSeasons.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Flavor.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Force.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Format.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Friend.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GenerateThumbsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GenerateThumbsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Genre.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GeoData.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryDirectory.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryQueryParamType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAlbumsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAlbumsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllItemLeavesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllItemLeavesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLeavesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLeavesResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesDirectory.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesLocation.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesType.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllPreferencesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllSubscriptionsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAllSubscriptionsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetArtsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetArtsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAugmentationStatusRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAugmentationStatusResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsAccount.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsDevice.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetBannerImageRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetBannerImageResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetButlerTasksResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetButlerTasksResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCategoriesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCategoriesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetChapterImageRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetChapterImageResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetClusterRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetClusterResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionImageRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionImageResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionItemsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCommonRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCommonResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCompanionsDataResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryDirectory.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryQueryParamType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLineupsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLineupsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsCountry.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRDVR.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRDVRsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDeviceDetailsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDeviceDetailsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueDownloadQueue.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsDecisionResult.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsDownloadQueueItem.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsStatus.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsTranscode.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueStatus.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetExtrasRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetExtrasResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFileHashRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFileHashResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFileRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFileResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersDirectory.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersDirectory.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryDirectory.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryQueryParamType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGeoDataGeoData.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGeoDataResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetHistoryItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetHistoryItemResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetHomeDataResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetHomeDataResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetImageFromBifRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetImageFromBifResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetImageRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetImageResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkPathParamElement.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetItemDecisionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetItemDecisionResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetItemTreeRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetItemTreeResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsDirectory.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsField.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsFieldType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsFilter.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsOperator.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsSort.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsCountry.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsDirector.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsGenre.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsHub.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsPart.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsRole.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsWriter.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsActiveDirection.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsCollection.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsCountry.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsDefaultDirection.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsDirector.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsField.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFieldType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFilter.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsGenre.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsGuids.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsHasThumbnail.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsImage.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryOptimizedForStreaming.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryResponseType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLocation.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMeta.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOperator.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOptimizedForStreaming.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOptimizedForStreaming1.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsPart.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsProducer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsQueryParamIncludeMeta.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsQueryParamType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsRole.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsSimilar.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsSort.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsUltraBlurColors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsWriter.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryMatchesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryMatchesResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllActiveDirection.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllCollection.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllCountry.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllDefaultDirection.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllDirector.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllField.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllFieldType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllFilter.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllGenre.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllGuids.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllHasThumbnail.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllImage.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryOptimizedForStreaming.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryResponseType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMeta.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOperator.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming1.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreamingLibrary1.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllPart.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllQueryParamIncludeMeta.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllQueryParamType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllRole.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllSort.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllStream.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllUltraBlurColors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllWriter.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLiveTVSessionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetLiveTVSessionResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataAttributes.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataChapter.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataCountry.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataDirector.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataExtras.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataGenre.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataGuids.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataHasThumbnail.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataImage.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLocation.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMarker.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming1.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataPart.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataProducer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRatings.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRole.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataSimilar.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataStream.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataUltraBlurColors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataWriter.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPartRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPartResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersDirectory.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenDirectory.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataHubsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataHubsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataItemResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMyPlexAccountResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetMyPlexAccountResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetNotificationsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetNotificationsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPartIndexRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPartIndexResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPinAuthPinContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPinRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPinResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlayQueueRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlayQueueResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsCountry.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsDirector.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsGenre.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsPart.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsQueryParamType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsRole.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsWriter.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorDevice.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsMetadata.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorLocation.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorScope.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorState.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorStatus.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorSubtitles.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorType.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsType.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistItemsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPostplayHubsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPostplayHubsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPreferenceRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPreferenceResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRandomArtworkRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRandomArtworkResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedActiveDirection.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedDefaultDirection.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedField.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedFieldType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedFilter.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedHubsResponseType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedHubsType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedImage.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryCountry.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryDirector.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryFilter.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryGenre.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryPart.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryRole.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryWriter.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOperator.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedSort.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRefreshLibraryMetadataRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRefreshLibraryMetadataResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedHubsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedHubsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetResizedPhotoRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetResizedPhotoResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesCountry.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesDirector.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesDirectory.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesFlattenSeasons.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesGenre.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesGuids.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesHasThumbnail.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesImage.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLibraryOptimizedForStreaming.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLibraryType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLocation.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming1.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreamingLibrary1.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesPart.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesQueryParamIncludeCollections.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesQueryParamIncludeExternalMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesRole.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesShowOrdering.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesUltraBlurColors.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesWriter.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryQueryParamType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsCountry.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsDirector.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsGenre.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsPart.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsRole.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsWriter.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionImageRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionImageResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionPreferencesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionPreferencesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsPrefsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsPrefsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerCapabilitiesResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerCapabilitiesResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerInfoRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerInfoResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListServer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerResourcesRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetServerResourcesResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionPlaylistIndexRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionPlaylistIndexResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionSegmentRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionSegmentResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsPart.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsStream.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsUser.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicPathRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicPathResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicallySimilarRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicallySimilarResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsDevice.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsLevel.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLoudnessRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLoudnessResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSubscriptionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetSubscriptionResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTasksResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTasksResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbImageRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbImageResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTimelineRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTimelineResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdAuthPinContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdGeoData.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsAuthenticationResponseStatus.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsAuthenticationStatus.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsStatus.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsSubscription.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsUserPlexAccount.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentCountry.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentGenre.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentGuids.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentMetadata.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentQueryParamIncludeGuids.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentQueryParamType.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentRole.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentUser.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenQueryParamType.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusState.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUserFriendsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersMediaContainer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersServer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Guids.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/HasThumbnail.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Hidden.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Hints.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Home.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/HomeVisibility.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Image.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/IncludeAdvanced.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/IncludeCollections.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/IncludeDetails.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/IncludeExternalMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/IncludeGuids.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/IncludeHttps.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/IncludeIPv6.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/IncludeMeta.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/IncludeRelay.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Index.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/IngestTransientItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/IngestTransientItemResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/InternalPaymentMethod.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Item.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Language.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Libtype.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Lineup.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/LineupType.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListContentRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListContentResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsDVRsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListDevicesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsStatus.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListLineupsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListLineupsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListMatchesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListMatchesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListMomentsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListMomentsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListPersonMediaRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListPersonMediaResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryMetadata.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaylistsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaylistsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListSimilarRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListSimilarResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListSonicallySimilarRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListSonicallySimilarResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/LogLineRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/LogLineResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/LogMultiLineResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MailingListStatus.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MakeDecisionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MakeDecisionResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MarkUnplayedRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MarkUnplayedResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Marker.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MatchItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MatchItemResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Media.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MediaGrabber.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MediaProvider.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MediaReviewsVisibility.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MediaSettings.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MediaSubscription.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MergeItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MergeItemsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Meta.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MinSize.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MoveCollectionItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MoveCollectionItemResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MoveHubRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MoveHubResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MovePlayQueueItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MovePlayQueueItemResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MovePlaylistItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MovePlaylistItemResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/MyPlex.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/One.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/OnlyTransient.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Operator.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/OptimizeDatabaseRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/OptimizeDatabaseResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming1.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Owned.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Params.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Part.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PastSubscription.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PathParamElement.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PathParamIndex.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PathParamTask.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PathParamTaskName.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Pending.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PerformSearchRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PerformSearchResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PerformVoiceSearchRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PerformVoiceSearchResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PlayQueueGenerator.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Player.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PlexDevice.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Policy.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaArtsRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaArtsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaPosterRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaPosterResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationResponseStatus.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationStatus.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationSubscription.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAutoSelectSubtitle.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataDefaultSubtitleAccessibility.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataDefaultSubtitleForced.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataMailingListStatus.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataMediaReviewsVisibility.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataRequestBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataServices.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataState.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataStatus.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataSubscription.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataUserPlexAccount.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataUserProfile.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataWatchedIndicator.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Prefs.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ProcessSubscriptionsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ProcessingState.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ProcessingStateContext.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Producer.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Protected.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Provider.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamArgs.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamAttributes.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamFilter.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamForce.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeCollections.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeExternalMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeGuids.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeMeta.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamLocation.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamOnlyTransient.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamPrefs.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamProtocol.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamSmart.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamSubtitles.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Rating.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Ratings.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RecommendationsVisibility.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RefreshItemsMetadataRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RefreshItemsMetadataResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RefreshPlaylistRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RefreshPlaylistResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RefreshProvidersResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionsMetadataRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionsMetadataResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ReloadGuideRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ReloadGuideResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRDVR.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRDVRsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDownloadQueueItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDownloadQueueItemsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ReorderSubscriptionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ReorderSubscriptionResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ReportRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ReportResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ReportResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ResetPlayQueueRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ResetPlayQueueResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ResetSectionDefaultsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ResetSectionDefaultsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RestartProcessingDownloadQueueItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/RestartProcessingDownloadQueueItemsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Restricted.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Role.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ScanRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ScanResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SearchResult.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SearchTypes.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Server.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Services.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Session.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetChannelmapRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetChannelmapResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesDVR.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesDVRsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesResponseBody.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetDevicePreferencesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetDevicePreferencesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetItemArtworkRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetItemArtworkResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetItemPreferencesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetItemPreferencesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetPreferencesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetPreferencesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetRatingRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetRatingResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesQueryParamPrefs.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamOffsetRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamOffsetResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamSelectionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamSelectionResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Setting.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SharedServers.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SharedSources.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ShowOrdering.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ShuffleRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/ShuffleResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Similar.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Skip.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Smart.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Sort.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SplitItemRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SplitItemResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartAllTasksResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartAnalysisRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartAnalysisResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartBifGenerationRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartBifGenerationResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartTasksResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamLocation.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamProtocol.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamSubtitles.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartUniversalTranscodeRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StartUniversalTranscodeResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsBandwidth.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsMedia.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsResources.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StopAllRefreshesResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StopAllTasksResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StopDVRReloadRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StopDVRReloadResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StopScanRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StopScanResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StopTasksResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StopTranscodeSessionRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/StopTranscodeSessionResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Stream.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Subscription.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/SubscriptionTemplate.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Subtitles.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Tag.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Task.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TaskName.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TerminateSessionRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TerminateSessionResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Tonight.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Transcode.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeImageRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeImageResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeJob.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSession.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSubtitlesRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSubtitlesResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Trials.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TriggerFallbackRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TriggerFallbackResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TuneChannelRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/TuneChannelResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UnmatchRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UnmatchResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UnscrobbleRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UnscrobbleResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UnshuffleRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UnshuffleResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UpdateHubVisibilityRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UpdateHubVisibilityResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemArtworkRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemArtworkResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemsResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlayProgressRequest.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlayProgressResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Upscale.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/User.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/UserProfile.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsMediaContainer.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsResponseBody.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/WatchedIndicator.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/WriteLogResponse.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/WriteMessageRequest.cs create mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/WriteMessageResponse.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Models/Requests/Writer.cs create mode 100644 LukeHagar/PlexAPI/SDK/PlayQueue.cs create mode 100644 LukeHagar/PlexAPI/SDK/Playlist.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Playlists.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Plex.cs create mode 100644 LukeHagar/PlexAPI/SDK/Preferences.cs create mode 100644 LukeHagar/PlexAPI/SDK/Provider.cs create mode 100644 LukeHagar/PlexAPI/SDK/Rate.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Server.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Sessions.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Statistics.cs create mode 100644 LukeHagar/PlexAPI/SDK/Status.cs create mode 100644 LukeHagar/PlexAPI/SDK/Subscriptions.cs create mode 100644 LukeHagar/PlexAPI/SDK/Timeline.cs create mode 100644 LukeHagar/PlexAPI/SDK/Transcoder.cs create mode 100644 LukeHagar/PlexAPI/SDK/UltraBlur.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Users.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Video.cs delete mode 100644 LukeHagar/PlexAPI/SDK/Watchlist.cs create mode 100644 docs/Models/Components/Accepts.md create mode 100644 docs/Models/Components/AdvancedSubtitles.md create mode 100644 docs/Models/Components/AiringsType.md create mode 100644 docs/Models/Components/BoolInt.md create mode 100644 docs/Models/Components/Channel.md create mode 100644 docs/Models/Components/ChannelMapping.md create mode 100644 docs/Models/Components/Composite.md create mode 100644 docs/Models/Components/CompositeMedia.md create mode 100644 docs/Models/Components/Crop.md create mode 100644 docs/Models/Components/Decision.md create mode 100644 docs/Models/Components/Default.md create mode 100644 docs/Models/Components/DefaultDirection.md create mode 100644 docs/Models/Components/Device.md create mode 100644 docs/Models/Components/Directory.md create mode 100644 docs/Models/Components/Dvr.md create mode 100644 docs/Models/Components/DvrRequestHandlerSlashGetResponses200.md create mode 100644 docs/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainer.md create mode 100644 docs/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer.md create mode 100644 docs/Models/Components/Filter.md create mode 100644 docs/Models/Components/FilterPivot.md create mode 100644 docs/Models/Components/Format.md create mode 100644 docs/Models/Components/GetResponses200.md create mode 100644 docs/Models/Components/GetResponses200Hub.md create mode 100644 docs/Models/Components/GetResponses200MediaContainer.md create mode 100644 docs/Models/Components/HistoryAllGetResponses200.md create mode 100644 docs/Models/Components/HistoryAllGetResponses200MediaContainer.md create mode 100644 docs/Models/Components/HistoryAllGetResponses200Metadata.md create mode 100644 docs/Models/Components/HomeVisibility.md create mode 100644 docs/Models/Components/Hub.md create mode 100644 docs/Models/Components/Image.md create mode 100644 docs/Models/Components/ImageType.md create mode 100644 docs/Models/Components/Items.md create mode 100644 docs/Models/Components/LibrarySection.md create mode 100644 docs/Models/Components/LibrarySectionLocation.md create mode 100644 docs/Models/Components/Lineup.md create mode 100644 docs/Models/Components/LineupType.md create mode 100644 docs/Models/Components/Location.md create mode 100644 docs/Models/Components/Media.md create mode 100644 docs/Models/Components/MediaContainer.md create mode 100644 docs/Models/Components/MediaContainerWithArtwork.md create mode 100644 docs/Models/Components/MediaContainerWithArtworkMediaContainer.md create mode 100644 docs/Models/Components/MediaContainerWithArtworkMetadata.md create mode 100644 docs/Models/Components/MediaContainerWithArtworkType.md create mode 100644 docs/Models/Components/MediaContainerWithDecision.md create mode 100644 docs/Models/Components/MediaContainerWithDecisionDecision.md create mode 100644 docs/Models/Components/MediaContainerWithDecisionLocation.md create mode 100644 docs/Models/Components/MediaContainerWithDecisionMedia.md create mode 100644 docs/Models/Components/MediaContainerWithDecisionMediaContainer.md create mode 100644 docs/Models/Components/MediaContainerWithDecisionMetadata.md create mode 100644 docs/Models/Components/MediaContainerWithDecisionPart.md create mode 100644 docs/Models/Components/MediaContainerWithDecisionStream.md create mode 100644 docs/Models/Components/MediaContainerWithDevice.md create mode 100644 docs/Models/Components/MediaContainerWithDeviceDevice.md create mode 100644 docs/Models/Components/MediaContainerWithDeviceMediaContainer.md create mode 100644 docs/Models/Components/MediaContainerWithDirectory.md create mode 100644 docs/Models/Components/MediaContainerWithDirectoryMediaContainer.md create mode 100644 docs/Models/Components/MediaContainerWithHubs.md create mode 100644 docs/Models/Components/MediaContainerWithHubsMediaContainer.md create mode 100644 docs/Models/Components/MediaContainerWithLineup.md create mode 100644 docs/Models/Components/MediaContainerWithLineupMediaContainer.md create mode 100644 docs/Models/Components/MediaContainerWithMetadata.md create mode 100644 docs/Models/Components/MediaContainerWithMetadataMediaContainer.md create mode 100644 docs/Models/Components/MediaContainerWithNestedMetadata.md create mode 100644 docs/Models/Components/MediaContainerWithNestedMetadataMediaContainer.md create mode 100644 docs/Models/Components/MediaContainerWithPlaylistMetadata.md create mode 100644 docs/Models/Components/MediaContainerWithPlaylistMetadataMediaContainer.md create mode 100644 docs/Models/Components/MediaContainerWithPlaylistMetadataMetadata.md create mode 100644 docs/Models/Components/MediaContainerWithSettings.md create mode 100644 docs/Models/Components/MediaContainerWithSettingsMediaContainer.md create mode 100644 docs/Models/Components/MediaContainerWithSubscription.md create mode 100644 docs/Models/Components/MediaContainerWithSubscriptionMediaContainer.md create mode 100644 docs/Models/Components/MediaGrabOperation.md create mode 100644 docs/Models/Components/MediaQuery.md create mode 100644 docs/Models/Components/MediaSubscription.md create mode 100644 docs/Models/Components/Metadata.md create mode 100644 docs/Models/Components/MetadataItem.md create mode 100644 docs/Models/Components/Part.md rename docs/Models/{Requests => Components}/Pivot.md (100%) create mode 100644 docs/Models/Components/Player.md create mode 100644 docs/Models/Components/PlaylistType.md create mode 100644 docs/Models/Components/PostResponses200.md create mode 100644 docs/Models/Components/PostResponses200MediaContainer.md create mode 100644 docs/Models/Components/PostResponses200Type.md create mode 100644 docs/Models/Components/Protocol.md create mode 100644 docs/Models/Components/RecommendationsVisibility.md create mode 100644 docs/Models/Components/RequestHandlerSlashGetResponses200.md create mode 100644 docs/Models/Components/RequestHandlerSlashGetResponses200Directory.md create mode 100644 docs/Models/Components/RequestHandlerSlashGetResponses200MediaContainer.md create mode 100644 docs/Models/Components/Session.md create mode 100644 docs/Models/Components/SessionLocation.md create mode 100644 docs/Models/Components/Setting.md create mode 100644 docs/Models/Components/SlashGetResponses200.md create mode 100644 docs/Models/Components/SlashGetResponses200MediaContainer.md create mode 100644 docs/Models/Components/Sort.md create mode 100644 docs/Models/Components/SortDefault.md create mode 100644 docs/Models/Components/SortPivot.md create mode 100644 docs/Models/Components/Status.md create mode 100644 docs/Models/Components/Stream.md create mode 100644 docs/Models/Components/Subtitles.md create mode 100644 docs/Models/Components/Tag.md create mode 100644 docs/Models/Components/TranscodeSession.md create mode 100644 docs/Models/Components/TranscodeType.md create mode 100644 docs/Models/Components/Type.md create mode 100644 docs/Models/Components/User.md create mode 100644 docs/Models/Components/Value.md delete mode 100644 docs/Models/Errors/AddPlaylistContentsBadRequest.md delete mode 100644 docs/Models/Errors/AddPlaylistContentsErrors.md delete mode 100644 docs/Models/Errors/AddPlaylistContentsPlaylistsErrors.md delete mode 100644 docs/Models/Errors/AddPlaylistContentsUnauthorized.md delete mode 100644 docs/Models/Errors/ApplyUpdatesBadRequest.md delete mode 100644 docs/Models/Errors/ApplyUpdatesErrors.md delete mode 100644 docs/Models/Errors/ApplyUpdatesUnauthorized.md delete mode 100644 docs/Models/Errors/ApplyUpdatesUpdaterErrors.md delete mode 100644 docs/Models/Errors/CancelServerActivitiesActivitiesErrors.md delete mode 100644 docs/Models/Errors/CancelServerActivitiesBadRequest.md delete mode 100644 docs/Models/Errors/CancelServerActivitiesErrors.md delete mode 100644 docs/Models/Errors/CancelServerActivitiesUnauthorized.md delete mode 100644 docs/Models/Errors/CheckForUpdatesBadRequest.md delete mode 100644 docs/Models/Errors/CheckForUpdatesErrors.md delete mode 100644 docs/Models/Errors/CheckForUpdatesUnauthorized.md delete mode 100644 docs/Models/Errors/CheckForUpdatesUpdaterErrors.md delete mode 100644 docs/Models/Errors/ClearPlaylistContentsBadRequest.md delete mode 100644 docs/Models/Errors/ClearPlaylistContentsErrors.md delete mode 100644 docs/Models/Errors/ClearPlaylistContentsPlaylistsErrors.md delete mode 100644 docs/Models/Errors/ClearPlaylistContentsUnauthorized.md delete mode 100644 docs/Models/Errors/CreatePlaylistBadRequest.md delete mode 100644 docs/Models/Errors/CreatePlaylistErrors.md delete mode 100644 docs/Models/Errors/CreatePlaylistPlaylistsErrors.md delete mode 100644 docs/Models/Errors/CreatePlaylistUnauthorized.md delete mode 100644 docs/Models/Errors/DeleteLibraryBadRequest.md delete mode 100644 docs/Models/Errors/DeleteLibraryErrors.md delete mode 100644 docs/Models/Errors/DeleteLibraryLibraryErrors.md delete mode 100644 docs/Models/Errors/DeleteLibraryUnauthorized.md delete mode 100644 docs/Models/Errors/DeletePlaylistBadRequest.md delete mode 100644 docs/Models/Errors/DeletePlaylistErrors.md delete mode 100644 docs/Models/Errors/DeletePlaylistPlaylistsErrors.md delete mode 100644 docs/Models/Errors/DeletePlaylistUnauthorized.md delete mode 100644 docs/Models/Errors/EnablePaperTrailBadRequest.md delete mode 100644 docs/Models/Errors/EnablePaperTrailErrors.md delete mode 100644 docs/Models/Errors/EnablePaperTrailLogErrors.md delete mode 100644 docs/Models/Errors/EnablePaperTrailUnauthorized.md delete mode 100644 docs/Models/Errors/Errors.md delete mode 100644 docs/Models/Errors/GetActorsLibraryBadRequest.md delete mode 100644 docs/Models/Errors/GetActorsLibraryErrors.md delete mode 100644 docs/Models/Errors/GetActorsLibraryLibraryErrors.md delete mode 100644 docs/Models/Errors/GetActorsLibraryUnauthorized.md delete mode 100644 docs/Models/Errors/GetAllLibrariesBadRequest.md delete mode 100644 docs/Models/Errors/GetAllLibrariesErrors.md delete mode 100644 docs/Models/Errors/GetAllLibrariesLibraryErrors.md delete mode 100644 docs/Models/Errors/GetAllLibrariesUnauthorized.md delete mode 100644 docs/Models/Errors/GetAvailableClientsBadRequest.md delete mode 100644 docs/Models/Errors/GetAvailableClientsErrors.md delete mode 100644 docs/Models/Errors/GetAvailableClientsServerErrors.md delete mode 100644 docs/Models/Errors/GetAvailableClientsUnauthorized.md delete mode 100644 docs/Models/Errors/GetBandwidthStatisticsBadRequest.md delete mode 100644 docs/Models/Errors/GetBandwidthStatisticsErrors.md delete mode 100644 docs/Models/Errors/GetBandwidthStatisticsStatisticsErrors.md delete mode 100644 docs/Models/Errors/GetBandwidthStatisticsUnauthorized.md delete mode 100644 docs/Models/Errors/GetBannerImageBadRequest.md delete mode 100644 docs/Models/Errors/GetBannerImageErrors.md delete mode 100644 docs/Models/Errors/GetBannerImageMediaErrors.md delete mode 100644 docs/Models/Errors/GetBannerImageUnauthorized.md delete mode 100644 docs/Models/Errors/GetButlerTasksBadRequest.md delete mode 100644 docs/Models/Errors/GetButlerTasksButlerErrors.md delete mode 100644 docs/Models/Errors/GetButlerTasksErrors.md delete mode 100644 docs/Models/Errors/GetButlerTasksUnauthorized.md delete mode 100644 docs/Models/Errors/GetCompanionsDataBadRequest.md delete mode 100644 docs/Models/Errors/GetCompanionsDataErrors.md delete mode 100644 docs/Models/Errors/GetCompanionsDataPlexErrors.md delete mode 100644 docs/Models/Errors/GetCompanionsDataUnauthorized.md delete mode 100644 docs/Models/Errors/GetCountriesLibraryBadRequest.md delete mode 100644 docs/Models/Errors/GetCountriesLibraryErrors.md delete mode 100644 docs/Models/Errors/GetCountriesLibraryLibraryErrors.md delete mode 100644 docs/Models/Errors/GetCountriesLibraryUnauthorized.md delete mode 100644 docs/Models/Errors/GetDevicesBadRequest.md delete mode 100644 docs/Models/Errors/GetDevicesErrors.md delete mode 100644 docs/Models/Errors/GetDevicesServerErrors.md delete mode 100644 docs/Models/Errors/GetDevicesUnauthorized.md delete mode 100644 docs/Models/Errors/GetFileHashBadRequest.md delete mode 100644 docs/Models/Errors/GetFileHashErrors.md delete mode 100644 docs/Models/Errors/GetFileHashLibraryErrors.md delete mode 100644 docs/Models/Errors/GetFileHashUnauthorized.md delete mode 100644 docs/Models/Errors/GetGenresLibraryBadRequest.md delete mode 100644 docs/Models/Errors/GetGenresLibraryErrors.md delete mode 100644 docs/Models/Errors/GetGenresLibraryLibraryErrors.md delete mode 100644 docs/Models/Errors/GetGenresLibraryUnauthorized.md delete mode 100644 docs/Models/Errors/GetGeoDataBadRequest.md delete mode 100644 docs/Models/Errors/GetGeoDataErrors.md delete mode 100644 docs/Models/Errors/GetGeoDataPlexErrors.md delete mode 100644 docs/Models/Errors/GetGeoDataUnauthorized.md delete mode 100644 docs/Models/Errors/GetGlobalHubsBadRequest.md delete mode 100644 docs/Models/Errors/GetGlobalHubsErrors.md delete mode 100644 docs/Models/Errors/GetGlobalHubsHubsErrors.md delete mode 100644 docs/Models/Errors/GetGlobalHubsUnauthorized.md delete mode 100644 docs/Models/Errors/GetHomeDataBadRequest.md delete mode 100644 docs/Models/Errors/GetHomeDataErrors.md delete mode 100644 docs/Models/Errors/GetHomeDataPlexErrors.md delete mode 100644 docs/Models/Errors/GetHomeDataUnauthorized.md delete mode 100644 docs/Models/Errors/GetLibraryDetailsBadRequest.md delete mode 100644 docs/Models/Errors/GetLibraryDetailsErrors.md delete mode 100644 docs/Models/Errors/GetLibraryDetailsLibraryErrors.md delete mode 100644 docs/Models/Errors/GetLibraryDetailsUnauthorized.md delete mode 100644 docs/Models/Errors/GetLibraryHubsBadRequest.md delete mode 100644 docs/Models/Errors/GetLibraryHubsErrors.md delete mode 100644 docs/Models/Errors/GetLibraryHubsHubsErrors.md delete mode 100644 docs/Models/Errors/GetLibraryHubsUnauthorized.md delete mode 100644 docs/Models/Errors/GetLibraryItemsBadRequest.md delete mode 100644 docs/Models/Errors/GetLibraryItemsErrors.md delete mode 100644 docs/Models/Errors/GetLibraryItemsLibraryErrors.md delete mode 100644 docs/Models/Errors/GetLibraryItemsUnauthorized.md delete mode 100644 docs/Models/Errors/GetLibrarySectionsAllBadRequest.md delete mode 100644 docs/Models/Errors/GetLibrarySectionsAllErrors.md delete mode 100644 docs/Models/Errors/GetLibrarySectionsAllLibraryErrors.md delete mode 100644 docs/Models/Errors/GetLibrarySectionsAllUnauthorized.md delete mode 100644 docs/Models/Errors/GetMediaMetaDataBadRequest.md delete mode 100644 docs/Models/Errors/GetMediaMetaDataErrors.md delete mode 100644 docs/Models/Errors/GetMediaMetaDataLibraryErrors.md delete mode 100644 docs/Models/Errors/GetMediaMetaDataUnauthorized.md delete mode 100644 docs/Models/Errors/GetMediaProvidersBadRequest.md delete mode 100644 docs/Models/Errors/GetMediaProvidersErrors.md delete mode 100644 docs/Models/Errors/GetMediaProvidersServerErrors.md delete mode 100644 docs/Models/Errors/GetMediaProvidersUnauthorized.md delete mode 100644 docs/Models/Errors/GetMetadataChildrenBadRequest.md delete mode 100644 docs/Models/Errors/GetMetadataChildrenErrors.md delete mode 100644 docs/Models/Errors/GetMetadataChildrenLibraryErrors.md delete mode 100644 docs/Models/Errors/GetMetadataChildrenUnauthorized.md delete mode 100644 docs/Models/Errors/GetMyPlexAccountBadRequest.md delete mode 100644 docs/Models/Errors/GetMyPlexAccountErrors.md delete mode 100644 docs/Models/Errors/GetMyPlexAccountServerErrors.md delete mode 100644 docs/Models/Errors/GetMyPlexAccountUnauthorized.md delete mode 100644 docs/Models/Errors/GetPinBadRequest.md delete mode 100644 docs/Models/Errors/GetPinErrors.md delete mode 100644 docs/Models/Errors/GetPlaylistBadRequest.md delete mode 100644 docs/Models/Errors/GetPlaylistContentsBadRequest.md delete mode 100644 docs/Models/Errors/GetPlaylistContentsErrors.md delete mode 100644 docs/Models/Errors/GetPlaylistContentsPlaylistsErrors.md delete mode 100644 docs/Models/Errors/GetPlaylistContentsUnauthorized.md delete mode 100644 docs/Models/Errors/GetPlaylistErrors.md delete mode 100644 docs/Models/Errors/GetPlaylistPlaylistsErrors.md delete mode 100644 docs/Models/Errors/GetPlaylistUnauthorized.md delete mode 100644 docs/Models/Errors/GetPlaylistsBadRequest.md delete mode 100644 docs/Models/Errors/GetPlaylistsErrors.md delete mode 100644 docs/Models/Errors/GetPlaylistsPlaylistsErrors.md delete mode 100644 docs/Models/Errors/GetPlaylistsUnauthorized.md delete mode 100644 docs/Models/Errors/GetRecentlyAddedLibraryBadRequest.md delete mode 100644 docs/Models/Errors/GetRecentlyAddedLibraryErrors.md delete mode 100644 docs/Models/Errors/GetRecentlyAddedLibraryLibraryErrors.md delete mode 100644 docs/Models/Errors/GetRecentlyAddedLibraryUnauthorized.md delete mode 100644 docs/Models/Errors/GetRefreshLibraryMetadataBadRequest.md delete mode 100644 docs/Models/Errors/GetRefreshLibraryMetadataErrors.md delete mode 100644 docs/Models/Errors/GetRefreshLibraryMetadataLibraryErrors.md delete mode 100644 docs/Models/Errors/GetRefreshLibraryMetadataUnauthorized.md delete mode 100644 docs/Models/Errors/GetResizedPhotoBadRequest.md delete mode 100644 docs/Models/Errors/GetResizedPhotoErrors.md delete mode 100644 docs/Models/Errors/GetResizedPhotoServerErrors.md delete mode 100644 docs/Models/Errors/GetResizedPhotoUnauthorized.md delete mode 100644 docs/Models/Errors/GetResourcesStatisticsBadRequest.md delete mode 100644 docs/Models/Errors/GetResourcesStatisticsErrors.md delete mode 100644 docs/Models/Errors/GetResourcesStatisticsStatisticsErrors.md delete mode 100644 docs/Models/Errors/GetResourcesStatisticsUnauthorized.md delete mode 100644 docs/Models/Errors/GetSearchAllLibrariesBadRequest.md delete mode 100644 docs/Models/Errors/GetSearchAllLibrariesErrors.md delete mode 100644 docs/Models/Errors/GetSearchAllLibrariesLibraryErrors.md delete mode 100644 docs/Models/Errors/GetSearchAllLibrariesUnauthorized.md delete mode 100644 docs/Models/Errors/GetSearchLibraryBadRequest.md delete mode 100644 docs/Models/Errors/GetSearchLibraryErrors.md delete mode 100644 docs/Models/Errors/GetSearchLibraryLibraryErrors.md delete mode 100644 docs/Models/Errors/GetSearchLibraryUnauthorized.md delete mode 100644 docs/Models/Errors/GetSearchResultsBadRequest.md delete mode 100644 docs/Models/Errors/GetSearchResultsErrors.md delete mode 100644 docs/Models/Errors/GetSearchResultsSearchErrors.md delete mode 100644 docs/Models/Errors/GetSearchResultsUnauthorized.md delete mode 100644 docs/Models/Errors/GetServerActivitiesActivitiesErrors.md delete mode 100644 docs/Models/Errors/GetServerActivitiesBadRequest.md delete mode 100644 docs/Models/Errors/GetServerActivitiesErrors.md delete mode 100644 docs/Models/Errors/GetServerActivitiesUnauthorized.md delete mode 100644 docs/Models/Errors/GetServerCapabilitiesBadRequest.md delete mode 100644 docs/Models/Errors/GetServerCapabilitiesErrors.md delete mode 100644 docs/Models/Errors/GetServerCapabilitiesUnauthorized.md delete mode 100644 docs/Models/Errors/GetServerIdentityRequestTimeout.md delete mode 100644 docs/Models/Errors/GetServerListBadRequest.md delete mode 100644 docs/Models/Errors/GetServerListErrors.md delete mode 100644 docs/Models/Errors/GetServerListServerErrors.md delete mode 100644 docs/Models/Errors/GetServerListUnauthorized.md delete mode 100644 docs/Models/Errors/GetServerPreferencesBadRequest.md delete mode 100644 docs/Models/Errors/GetServerPreferencesErrors.md delete mode 100644 docs/Models/Errors/GetServerPreferencesServerErrors.md delete mode 100644 docs/Models/Errors/GetServerPreferencesUnauthorized.md delete mode 100644 docs/Models/Errors/GetServerResourcesBadRequest.md delete mode 100644 docs/Models/Errors/GetServerResourcesErrors.md delete mode 100644 docs/Models/Errors/GetServerResourcesPlexErrors.md delete mode 100644 docs/Models/Errors/GetServerResourcesUnauthorized.md delete mode 100644 docs/Models/Errors/GetSessionHistoryBadRequest.md delete mode 100644 docs/Models/Errors/GetSessionHistoryErrors.md delete mode 100644 docs/Models/Errors/GetSessionHistorySessionsErrors.md delete mode 100644 docs/Models/Errors/GetSessionHistoryUnauthorized.md delete mode 100644 docs/Models/Errors/GetSessionsBadRequest.md delete mode 100644 docs/Models/Errors/GetSessionsErrors.md delete mode 100644 docs/Models/Errors/GetSessionsSessionsErrors.md delete mode 100644 docs/Models/Errors/GetSessionsUnauthorized.md delete mode 100644 docs/Models/Errors/GetSourceConnectionInformationAuthenticationErrors.md delete mode 100644 docs/Models/Errors/GetSourceConnectionInformationBadRequest.md delete mode 100644 docs/Models/Errors/GetSourceConnectionInformationErrors.md delete mode 100644 docs/Models/Errors/GetSourceConnectionInformationUnauthorized.md delete mode 100644 docs/Models/Errors/GetStatisticsBadRequest.md delete mode 100644 docs/Models/Errors/GetStatisticsErrors.md delete mode 100644 docs/Models/Errors/GetStatisticsStatisticsErrors.md delete mode 100644 docs/Models/Errors/GetStatisticsUnauthorized.md delete mode 100644 docs/Models/Errors/GetThumbImageBadRequest.md delete mode 100644 docs/Models/Errors/GetThumbImageErrors.md delete mode 100644 docs/Models/Errors/GetThumbImageMediaErrors.md delete mode 100644 docs/Models/Errors/GetThumbImageUnauthorized.md delete mode 100644 docs/Models/Errors/GetTimelineBadRequest.md delete mode 100644 docs/Models/Errors/GetTimelineErrors.md delete mode 100644 docs/Models/Errors/GetTimelineUnauthorized.md delete mode 100644 docs/Models/Errors/GetTimelineVideoErrors.md delete mode 100644 docs/Models/Errors/GetTokenByPinIdBadRequest.md delete mode 100644 docs/Models/Errors/GetTokenByPinIdErrors.md delete mode 100644 docs/Models/Errors/GetTokenByPinIdPlexErrors.md delete mode 100644 docs/Models/Errors/GetTokenByPinIdResponseBody.md delete mode 100644 docs/Models/Errors/GetTokenDetailsAuthenticationErrors.md delete mode 100644 docs/Models/Errors/GetTokenDetailsBadRequest.md delete mode 100644 docs/Models/Errors/GetTokenDetailsErrors.md delete mode 100644 docs/Models/Errors/GetTokenDetailsUnauthorized.md delete mode 100644 docs/Models/Errors/GetTopWatchedContentBadRequest.md delete mode 100644 docs/Models/Errors/GetTopWatchedContentErrors.md delete mode 100644 docs/Models/Errors/GetTopWatchedContentLibraryErrors.md delete mode 100644 docs/Models/Errors/GetTopWatchedContentUnauthorized.md delete mode 100644 docs/Models/Errors/GetTranscodeSessionsBadRequest.md delete mode 100644 docs/Models/Errors/GetTranscodeSessionsErrors.md delete mode 100644 docs/Models/Errors/GetTranscodeSessionsSessionsErrors.md delete mode 100644 docs/Models/Errors/GetTranscodeSessionsUnauthorized.md delete mode 100644 docs/Models/Errors/GetTransientTokenAuthenticationErrors.md delete mode 100644 docs/Models/Errors/GetTransientTokenBadRequest.md delete mode 100644 docs/Models/Errors/GetTransientTokenErrors.md delete mode 100644 docs/Models/Errors/GetTransientTokenUnauthorized.md delete mode 100644 docs/Models/Errors/GetUpdateStatusBadRequest.md delete mode 100644 docs/Models/Errors/GetUpdateStatusErrors.md delete mode 100644 docs/Models/Errors/GetUpdateStatusUnauthorized.md delete mode 100644 docs/Models/Errors/GetUpdateStatusUpdaterErrors.md delete mode 100644 docs/Models/Errors/GetUserFriendsBadRequest.md delete mode 100644 docs/Models/Errors/GetUserFriendsErrors.md delete mode 100644 docs/Models/Errors/GetUserFriendsPlexErrors.md delete mode 100644 docs/Models/Errors/GetUserFriendsUnauthorized.md delete mode 100644 docs/Models/Errors/GetUsersBadRequest.md delete mode 100644 docs/Models/Errors/GetUsersErrors.md delete mode 100644 docs/Models/Errors/GetUsersUnauthorized.md delete mode 100644 docs/Models/Errors/GetUsersUsersErrors.md delete mode 100644 docs/Models/Errors/GetWatchListBadRequest.md delete mode 100644 docs/Models/Errors/GetWatchListErrors.md delete mode 100644 docs/Models/Errors/GetWatchListUnauthorized.md delete mode 100644 docs/Models/Errors/GetWatchListWatchlistErrors.md delete mode 100644 docs/Models/Errors/LogLineBadRequest.md delete mode 100644 docs/Models/Errors/LogLineErrors.md delete mode 100644 docs/Models/Errors/LogLineLogErrors.md delete mode 100644 docs/Models/Errors/LogLineUnauthorized.md delete mode 100644 docs/Models/Errors/LogMultiLineBadRequest.md delete mode 100644 docs/Models/Errors/LogMultiLineErrors.md delete mode 100644 docs/Models/Errors/LogMultiLineLogErrors.md delete mode 100644 docs/Models/Errors/LogMultiLineUnauthorized.md delete mode 100644 docs/Models/Errors/MarkPlayedBadRequest.md delete mode 100644 docs/Models/Errors/MarkPlayedErrors.md delete mode 100644 docs/Models/Errors/MarkPlayedMediaErrors.md delete mode 100644 docs/Models/Errors/MarkPlayedUnauthorized.md delete mode 100644 docs/Models/Errors/MarkUnplayedBadRequest.md delete mode 100644 docs/Models/Errors/MarkUnplayedErrors.md delete mode 100644 docs/Models/Errors/MarkUnplayedMediaErrors.md delete mode 100644 docs/Models/Errors/MarkUnplayedUnauthorized.md delete mode 100644 docs/Models/Errors/PerformSearchBadRequest.md delete mode 100644 docs/Models/Errors/PerformSearchErrors.md delete mode 100644 docs/Models/Errors/PerformSearchSearchErrors.md delete mode 100644 docs/Models/Errors/PerformSearchUnauthorized.md delete mode 100644 docs/Models/Errors/PerformVoiceSearchBadRequest.md delete mode 100644 docs/Models/Errors/PerformVoiceSearchErrors.md delete mode 100644 docs/Models/Errors/PerformVoiceSearchSearchErrors.md delete mode 100644 docs/Models/Errors/PerformVoiceSearchUnauthorized.md delete mode 100644 docs/Models/Errors/PostUsersSignInDataAuthenticationErrors.md delete mode 100644 docs/Models/Errors/PostUsersSignInDataBadRequest.md delete mode 100644 docs/Models/Errors/PostUsersSignInDataErrors.md delete mode 100644 docs/Models/Errors/PostUsersSignInDataUnauthorized.md delete mode 100644 docs/Models/Errors/StartAllTasksBadRequest.md delete mode 100644 docs/Models/Errors/StartAllTasksButlerErrors.md delete mode 100644 docs/Models/Errors/StartAllTasksErrors.md delete mode 100644 docs/Models/Errors/StartAllTasksUnauthorized.md delete mode 100644 docs/Models/Errors/StartTaskBadRequest.md delete mode 100644 docs/Models/Errors/StartTaskButlerErrors.md delete mode 100644 docs/Models/Errors/StartTaskErrors.md delete mode 100644 docs/Models/Errors/StartTaskUnauthorized.md delete mode 100644 docs/Models/Errors/StartUniversalTranscodeBadRequest.md delete mode 100644 docs/Models/Errors/StartUniversalTranscodeErrors.md delete mode 100644 docs/Models/Errors/StartUniversalTranscodeUnauthorized.md delete mode 100644 docs/Models/Errors/StartUniversalTranscodeVideoErrors.md delete mode 100644 docs/Models/Errors/StopAllTasksBadRequest.md delete mode 100644 docs/Models/Errors/StopAllTasksButlerErrors.md delete mode 100644 docs/Models/Errors/StopAllTasksErrors.md delete mode 100644 docs/Models/Errors/StopAllTasksUnauthorized.md delete mode 100644 docs/Models/Errors/StopTaskBadRequest.md delete mode 100644 docs/Models/Errors/StopTaskButlerErrors.md delete mode 100644 docs/Models/Errors/StopTaskErrors.md delete mode 100644 docs/Models/Errors/StopTaskUnauthorized.md delete mode 100644 docs/Models/Errors/StopTranscodeSessionBadRequest.md delete mode 100644 docs/Models/Errors/StopTranscodeSessionErrors.md delete mode 100644 docs/Models/Errors/StopTranscodeSessionSessionsErrors.md delete mode 100644 docs/Models/Errors/StopTranscodeSessionUnauthorized.md delete mode 100644 docs/Models/Errors/UpdatePlayProgressBadRequest.md delete mode 100644 docs/Models/Errors/UpdatePlayProgressErrors.md delete mode 100644 docs/Models/Errors/UpdatePlayProgressMediaErrors.md delete mode 100644 docs/Models/Errors/UpdatePlayProgressUnauthorized.md delete mode 100644 docs/Models/Errors/UpdatePlaylistBadRequest.md delete mode 100644 docs/Models/Errors/UpdatePlaylistErrors.md delete mode 100644 docs/Models/Errors/UpdatePlaylistPlaylistsErrors.md delete mode 100644 docs/Models/Errors/UpdatePlaylistUnauthorized.md delete mode 100644 docs/Models/Errors/UploadPlaylistBadRequest.md delete mode 100644 docs/Models/Errors/UploadPlaylistErrors.md delete mode 100644 docs/Models/Errors/UploadPlaylistPlaylistsErrors.md delete mode 100644 docs/Models/Errors/UploadPlaylistUnauthorized.md delete mode 100644 docs/Models/Requests/ActiveDirection.md create mode 100644 docs/Models/Requests/AddCollectionItemsRequest.md create mode 100644 docs/Models/Requests/AddCollectionItemsResponse.md create mode 100644 docs/Models/Requests/AddDeviceRequest.md create mode 100644 docs/Models/Requests/AddDeviceResponse.md create mode 100644 docs/Models/Requests/AddDeviceToDVRDVR.md create mode 100644 docs/Models/Requests/AddDeviceToDVRDVRsMediaContainer.md create mode 100644 docs/Models/Requests/AddDeviceToDVRMediaContainer.md create mode 100644 docs/Models/Requests/AddDeviceToDVRRequest.md create mode 100644 docs/Models/Requests/AddDeviceToDVRResponse.md create mode 100644 docs/Models/Requests/AddDeviceToDVRResponseBody.md create mode 100644 docs/Models/Requests/AddDownloadQueueItemsMediaContainer.md create mode 100644 docs/Models/Requests/AddDownloadQueueItemsRequest.md create mode 100644 docs/Models/Requests/AddDownloadQueueItemsResponse.md create mode 100644 docs/Models/Requests/AddDownloadQueueItemsResponseBody.md create mode 100644 docs/Models/Requests/AddExtrasRequest.md create mode 100644 docs/Models/Requests/AddExtrasResponse.md create mode 100644 docs/Models/Requests/AddLineupDVR.md create mode 100644 docs/Models/Requests/AddLineupDVRsMediaContainer.md create mode 100644 docs/Models/Requests/AddLineupMediaContainer.md create mode 100644 docs/Models/Requests/AddLineupRequest.md create mode 100644 docs/Models/Requests/AddLineupResponse.md create mode 100644 docs/Models/Requests/AddLineupResponseBody.md delete mode 100644 docs/Models/Requests/AddPlaylistContentsMediaContainer.md delete mode 100644 docs/Models/Requests/AddPlaylistContentsMetadata.md delete mode 100644 docs/Models/Requests/AddPlaylistContentsRequest.md delete mode 100644 docs/Models/Requests/AddPlaylistContentsResponse.md delete mode 100644 docs/Models/Requests/AddPlaylistContentsResponseBody.md create mode 100644 docs/Models/Requests/AddPlaylistItemsRequest.md create mode 100644 docs/Models/Requests/AddPlaylistItemsResponse.md create mode 100644 docs/Models/Requests/AddProviderRequest.md create mode 100644 docs/Models/Requests/AddProviderResponse.md create mode 100644 docs/Models/Requests/AddSectionRequest.md create mode 100644 docs/Models/Requests/AddSectionResponse.md create mode 100644 docs/Models/Requests/AddSubtitlesRequest.md create mode 100644 docs/Models/Requests/AddSubtitlesResponse.md create mode 100644 docs/Models/Requests/AddToPlayQueueRequest.md create mode 100644 docs/Models/Requests/AddToPlayQueueResponse.md create mode 100644 docs/Models/Requests/AddedQueueItems.md create mode 100644 docs/Models/Requests/AdvancedSubtitles.md delete mode 100644 docs/Models/Requests/AllLibraries.md delete mode 100644 docs/Models/Requests/AllowCameraUpload.md delete mode 100644 docs/Models/Requests/AllowChannels.md delete mode 100644 docs/Models/Requests/AllowSubtitleAdmin.md delete mode 100644 docs/Models/Requests/AllowSync.md delete mode 100644 docs/Models/Requests/AllowTuners.md create mode 100644 docs/Models/Requests/AnalyzeMetadataRequest.md create mode 100644 docs/Models/Requests/AnalyzeMetadataResponse.md create mode 100644 docs/Models/Requests/Args.md delete mode 100644 docs/Models/Requests/AutoSelectSubtitle.md create mode 100644 docs/Models/Requests/AutocompleteRequest.md create mode 100644 docs/Models/Requests/AutocompleteResponse.md create mode 100644 docs/Models/Requests/Bandwidth.md create mode 100644 docs/Models/Requests/Bandwidths.md delete mode 100644 docs/Models/Requests/Billing.md create mode 100644 docs/Models/Requests/CancelActivityRequest.md create mode 100644 docs/Models/Requests/CancelActivityResponse.md create mode 100644 docs/Models/Requests/CancelGrabRequest.md create mode 100644 docs/Models/Requests/CancelGrabResponse.md create mode 100644 docs/Models/Requests/CancelRefreshRequest.md create mode 100644 docs/Models/Requests/CancelRefreshResponse.md delete mode 100644 docs/Models/Requests/CancelServerActivitiesRequest.md delete mode 100644 docs/Models/Requests/CancelServerActivitiesResponse.md create mode 100644 docs/Models/Requests/ChannelMapping.md create mode 100644 docs/Models/Requests/ChannelMappingByKey.md delete mode 100644 docs/Models/Requests/Chapter.md delete mode 100644 docs/Models/Requests/CheckForUpdatesRequest.md delete mode 100644 docs/Models/Requests/CheckForUpdatesResponse.md create mode 100644 docs/Models/Requests/CheckUpdatesRequest.md create mode 100644 docs/Models/Requests/CheckUpdatesResponse.md create mode 100644 docs/Models/Requests/ChromaSubsampling.md create mode 100644 docs/Models/Requests/CleanBundlesResponse.md create mode 100644 docs/Models/Requests/ClearPlayQueueRequest.md create mode 100644 docs/Models/Requests/ClearPlayQueueResponse.md delete mode 100644 docs/Models/Requests/ClearPlaylistContentsRequest.md delete mode 100644 docs/Models/Requests/ClearPlaylistContentsResponse.md create mode 100644 docs/Models/Requests/ClearPlaylistItemsRequest.md create mode 100644 docs/Models/Requests/ClearPlaylistItemsResponse.md delete mode 100644 docs/Models/Requests/Collection.md create mode 100644 docs/Models/Requests/ComputeChannelMapChannelMapping.md create mode 100644 docs/Models/Requests/ComputeChannelMapMediaContainer.md create mode 100644 docs/Models/Requests/ComputeChannelMapRequest.md create mode 100644 docs/Models/Requests/ComputeChannelMapResponse.md create mode 100644 docs/Models/Requests/ComputeChannelMapResponseBody.md create mode 100644 docs/Models/Requests/ConnectWebSocketRequest.md create mode 100644 docs/Models/Requests/ConnectWebSocketResponse.md create mode 100644 docs/Models/Requests/Connection.md delete mode 100644 docs/Models/Requests/Connections.md delete mode 100644 docs/Models/Requests/Context.md create mode 100644 docs/Models/Requests/CreateCollectionRequest.md create mode 100644 docs/Models/Requests/CreateCollectionResponse.md create mode 100644 docs/Models/Requests/CreateCustomHubRequest.md create mode 100644 docs/Models/Requests/CreateCustomHubResponse.md create mode 100644 docs/Models/Requests/CreateDVRRequest.md create mode 100644 docs/Models/Requests/CreateDVRResponse.md create mode 100644 docs/Models/Requests/CreateDownloadQueueMediaContainer.md create mode 100644 docs/Models/Requests/CreateDownloadQueueResponse.md create mode 100644 docs/Models/Requests/CreateDownloadQueueResponseBody.md create mode 100644 docs/Models/Requests/CreateMarkerMediaContainer.md create mode 100644 docs/Models/Requests/CreateMarkerRequest.md create mode 100644 docs/Models/Requests/CreateMarkerResponse.md create mode 100644 docs/Models/Requests/CreateMarkerResponseBody.md create mode 100644 docs/Models/Requests/CreateMarkerType.md create mode 100644 docs/Models/Requests/CreatePlayQueueMediaContainer.md create mode 100644 docs/Models/Requests/CreatePlayQueueRequest.md create mode 100644 docs/Models/Requests/CreatePlayQueueResponse.md create mode 100644 docs/Models/Requests/CreatePlayQueueResponseBody.md delete mode 100644 docs/Models/Requests/CreatePlaylistMediaContainer.md delete mode 100644 docs/Models/Requests/CreatePlaylistMetadata.md delete mode 100644 docs/Models/Requests/CreatePlaylistQueryParamType.md delete mode 100644 docs/Models/Requests/CreatePlaylistResponseBody.md create mode 100644 docs/Models/Requests/CreateSubscriptionMediaContainer.md create mode 100644 docs/Models/Requests/CreateSubscriptionQueryParamPrefs.md create mode 100644 docs/Models/Requests/CreateSubscriptionRequest.md create mode 100644 docs/Models/Requests/CreateSubscriptionResponse.md create mode 100644 docs/Models/Requests/CreateSubscriptionResponseBody.md create mode 100644 docs/Models/Requests/DecisionResult.md delete mode 100644 docs/Models/Requests/DefaultDirection.md delete mode 100644 docs/Models/Requests/DefaultSubtitleAccessibility.md delete mode 100644 docs/Models/Requests/DefaultSubtitleForced.md create mode 100644 docs/Models/Requests/DeleteCachesResponse.md create mode 100644 docs/Models/Requests/DeleteCollectionItemRequest.md create mode 100644 docs/Models/Requests/DeleteCollectionItemResponse.md create mode 100644 docs/Models/Requests/DeleteCollectionRequest.md create mode 100644 docs/Models/Requests/DeleteCollectionResponse.md create mode 100644 docs/Models/Requests/DeleteCustomHubRequest.md create mode 100644 docs/Models/Requests/DeleteCustomHubResponse.md create mode 100644 docs/Models/Requests/DeleteDVRRequest.md create mode 100644 docs/Models/Requests/DeleteDVRResponse.md create mode 100644 docs/Models/Requests/DeleteHistoryRequest.md create mode 100644 docs/Models/Requests/DeleteHistoryResponse.md create mode 100644 docs/Models/Requests/DeleteIndexesRequest.md create mode 100644 docs/Models/Requests/DeleteIndexesResponse.md create mode 100644 docs/Models/Requests/DeleteIntrosRequest.md create mode 100644 docs/Models/Requests/DeleteIntrosResponse.md delete mode 100644 docs/Models/Requests/DeleteLibraryRequest.md delete mode 100644 docs/Models/Requests/DeleteLibraryResponse.md create mode 100644 docs/Models/Requests/DeleteLibrarySectionRequest.md create mode 100644 docs/Models/Requests/DeleteLibrarySectionResponse.md create mode 100644 docs/Models/Requests/DeleteLineupDVR.md create mode 100644 docs/Models/Requests/DeleteLineupDVRsMediaContainer.md create mode 100644 docs/Models/Requests/DeleteLineupMediaContainer.md create mode 100644 docs/Models/Requests/DeleteLineupRequest.md create mode 100644 docs/Models/Requests/DeleteLineupResponse.md create mode 100644 docs/Models/Requests/DeleteLineupResponseBody.md create mode 100644 docs/Models/Requests/DeleteMarkerRequest.md create mode 100644 docs/Models/Requests/DeleteMarkerResponse.md create mode 100644 docs/Models/Requests/DeleteMediaItemRequest.md create mode 100644 docs/Models/Requests/DeleteMediaItemResponse.md create mode 100644 docs/Models/Requests/DeleteMediaProviderRequest.md create mode 100644 docs/Models/Requests/DeleteMediaProviderResponse.md create mode 100644 docs/Models/Requests/DeleteMetadataItemRequest.md create mode 100644 docs/Models/Requests/DeleteMetadataItemResponse.md create mode 100644 docs/Models/Requests/DeletePlayQueueItemRequest.md create mode 100644 docs/Models/Requests/DeletePlayQueueItemResponse.md create mode 100644 docs/Models/Requests/DeletePlaylistItemRequest.md create mode 100644 docs/Models/Requests/DeletePlaylistItemResponse.md create mode 100644 docs/Models/Requests/DeleteStreamRequest.md create mode 100644 docs/Models/Requests/DeleteStreamResponse.md create mode 100644 docs/Models/Requests/DeleteSubscriptionRequest.md create mode 100644 docs/Models/Requests/DeleteSubscriptionResponse.md create mode 100644 docs/Models/Requests/DetectAdsRequest.md create mode 100644 docs/Models/Requests/DetectAdsResponse.md create mode 100644 docs/Models/Requests/DetectCreditsRequest.md create mode 100644 docs/Models/Requests/DetectCreditsResponse.md create mode 100644 docs/Models/Requests/DetectIntrosRequest.md create mode 100644 docs/Models/Requests/DetectIntrosResponse.md create mode 100644 docs/Models/Requests/DetectVoiceActivityRequest.md create mode 100644 docs/Models/Requests/DetectVoiceActivityResponse.md create mode 100644 docs/Models/Requests/DeviceChannel.md delete mode 100644 docs/Models/Requests/Director.md create mode 100644 docs/Models/Requests/DiscoverDevicesResponse.md delete mode 100644 docs/Models/Requests/Download.md create mode 100644 docs/Models/Requests/DownloadQueue.md create mode 100644 docs/Models/Requests/DownloadQueueItem.md create mode 100644 docs/Models/Requests/Dvr.md create mode 100644 docs/Models/Requests/EditMarkerRequest.md create mode 100644 docs/Models/Requests/EditMarkerResponse.md create mode 100644 docs/Models/Requests/EditMetadataItemRequest.md create mode 100644 docs/Models/Requests/EditMetadataItemResponse.md create mode 100644 docs/Models/Requests/EditSectionQueryParamPrefs.md create mode 100644 docs/Models/Requests/EditSectionRequest.md create mode 100644 docs/Models/Requests/EditSectionResponse.md create mode 100644 docs/Models/Requests/EditSubscriptionPreferencesQueryParamPrefs.md create mode 100644 docs/Models/Requests/EditSubscriptionPreferencesRequest.md create mode 100644 docs/Models/Requests/EditSubscriptionPreferencesResponse.md create mode 100644 docs/Models/Requests/Element.md create mode 100644 docs/Models/Requests/EmptyTrashRequest.md create mode 100644 docs/Models/Requests/EmptyTrashResponse.md delete mode 100644 docs/Models/Requests/EnablePaperTrailResponse.md create mode 100644 docs/Models/Requests/EnablePapertrailRequest.md create mode 100644 docs/Models/Requests/EnablePapertrailResponse.md create mode 100644 docs/Models/Requests/Extension.md delete mode 100644 docs/Models/Requests/Extras.md delete mode 100644 docs/Models/Requests/Field.md delete mode 100644 docs/Models/Requests/FieldType.md delete mode 100644 docs/Models/Requests/Filter.md delete mode 100644 docs/Models/Requests/FlattenSeasons.md create mode 100644 docs/Models/Requests/Flavor.md delete mode 100644 docs/Models/Requests/Force.md create mode 100644 docs/Models/Requests/Format.md delete mode 100644 docs/Models/Requests/Friend.md create mode 100644 docs/Models/Requests/GenerateThumbsRequest.md create mode 100644 docs/Models/Requests/GenerateThumbsResponse.md delete mode 100644 docs/Models/Requests/Genre.md delete mode 100644 docs/Models/Requests/GeoData.md delete mode 100644 docs/Models/Requests/GetActorsLibraryDirectory.md delete mode 100644 docs/Models/Requests/GetActorsLibraryMediaContainer.md delete mode 100644 docs/Models/Requests/GetActorsLibraryQueryParamType.md delete mode 100644 docs/Models/Requests/GetActorsLibraryRequest.md delete mode 100644 docs/Models/Requests/GetActorsLibraryResponse.md delete mode 100644 docs/Models/Requests/GetActorsLibraryResponseBody.md create mode 100644 docs/Models/Requests/GetAlbumsRequest.md create mode 100644 docs/Models/Requests/GetAlbumsResponse.md create mode 100644 docs/Models/Requests/GetAllHubsMediaContainer.md create mode 100644 docs/Models/Requests/GetAllHubsRequest.md create mode 100644 docs/Models/Requests/GetAllHubsResponse.md create mode 100644 docs/Models/Requests/GetAllHubsResponseBody.md create mode 100644 docs/Models/Requests/GetAllItemLeavesRequest.md create mode 100644 docs/Models/Requests/GetAllItemLeavesResponse.md create mode 100644 docs/Models/Requests/GetAllLanguagesMediaContainer.md create mode 100644 docs/Models/Requests/GetAllLanguagesResponse.md create mode 100644 docs/Models/Requests/GetAllLanguagesResponseBody.md create mode 100644 docs/Models/Requests/GetAllLeavesRequest.md create mode 100644 docs/Models/Requests/GetAllLeavesResponse.md delete mode 100644 docs/Models/Requests/GetAllLibrariesDirectory.md delete mode 100644 docs/Models/Requests/GetAllLibrariesLocation.md delete mode 100644 docs/Models/Requests/GetAllLibrariesMediaContainer.md delete mode 100644 docs/Models/Requests/GetAllLibrariesResponse.md delete mode 100644 docs/Models/Requests/GetAllLibrariesResponseBody.md delete mode 100644 docs/Models/Requests/GetAllLibrariesType.md create mode 100644 docs/Models/Requests/GetAllPreferencesResponse.md create mode 100644 docs/Models/Requests/GetAllSubscriptionsRequest.md create mode 100644 docs/Models/Requests/GetAllSubscriptionsResponse.md create mode 100644 docs/Models/Requests/GetArtsRequest.md create mode 100644 docs/Models/Requests/GetArtsResponse.md create mode 100644 docs/Models/Requests/GetAugmentationStatusRequest.md create mode 100644 docs/Models/Requests/GetAugmentationStatusResponse.md delete mode 100644 docs/Models/Requests/GetAvailableClientsMediaContainer.md delete mode 100644 docs/Models/Requests/GetAvailableClientsResponse.md delete mode 100644 docs/Models/Requests/GetAvailableClientsResponseBody.md create mode 100644 docs/Models/Requests/GetAvailableGrabbersMediaContainer.md create mode 100644 docs/Models/Requests/GetAvailableGrabbersRequest.md create mode 100644 docs/Models/Requests/GetAvailableGrabbersResponse.md create mode 100644 docs/Models/Requests/GetAvailableGrabbersResponseBody.md create mode 100644 docs/Models/Requests/GetAvailableSortsMediaContainer.md create mode 100644 docs/Models/Requests/GetAvailableSortsRequest.md create mode 100644 docs/Models/Requests/GetAvailableSortsResponse.md create mode 100644 docs/Models/Requests/GetAvailableSortsResponseBody.md create mode 100644 docs/Models/Requests/GetBackgroundTasksMediaContainer.md create mode 100644 docs/Models/Requests/GetBackgroundTasksResponse.md create mode 100644 docs/Models/Requests/GetBackgroundTasksResponseBody.md create mode 100644 docs/Models/Requests/GetBackgroundTasksType.md delete mode 100644 docs/Models/Requests/GetBandwidthStatisticsAccount.md delete mode 100644 docs/Models/Requests/GetBandwidthStatisticsDevice.md delete mode 100644 docs/Models/Requests/GetBandwidthStatisticsMediaContainer.md delete mode 100644 docs/Models/Requests/GetBandwidthStatisticsRequest.md delete mode 100644 docs/Models/Requests/GetBandwidthStatisticsResponse.md delete mode 100644 docs/Models/Requests/GetBandwidthStatisticsResponseBody.md delete mode 100644 docs/Models/Requests/GetBannerImageRequest.md delete mode 100644 docs/Models/Requests/GetBannerImageResponse.md delete mode 100644 docs/Models/Requests/GetButlerTasksResponse.md delete mode 100644 docs/Models/Requests/GetButlerTasksResponseBody.md create mode 100644 docs/Models/Requests/GetCategoriesRequest.md create mode 100644 docs/Models/Requests/GetCategoriesResponse.md create mode 100644 docs/Models/Requests/GetChannelsMediaContainer.md create mode 100644 docs/Models/Requests/GetChannelsRequest.md create mode 100644 docs/Models/Requests/GetChannelsResponse.md create mode 100644 docs/Models/Requests/GetChannelsResponseBody.md create mode 100644 docs/Models/Requests/GetChapterImageRequest.md create mode 100644 docs/Models/Requests/GetChapterImageResponse.md create mode 100644 docs/Models/Requests/GetClusterRequest.md create mode 100644 docs/Models/Requests/GetClusterResponse.md create mode 100644 docs/Models/Requests/GetCollectionImageRequest.md create mode 100644 docs/Models/Requests/GetCollectionImageResponse.md create mode 100644 docs/Models/Requests/GetCollectionItemsRequest.md create mode 100644 docs/Models/Requests/GetCollectionItemsResponse.md create mode 100644 docs/Models/Requests/GetCollectionsRequest.md create mode 100644 docs/Models/Requests/GetCollectionsResponse.md create mode 100644 docs/Models/Requests/GetColorsMediaContainer.md create mode 100644 docs/Models/Requests/GetColorsRequest.md create mode 100644 docs/Models/Requests/GetColorsResponse.md create mode 100644 docs/Models/Requests/GetColorsResponseBody.md create mode 100644 docs/Models/Requests/GetCommonRequest.md create mode 100644 docs/Models/Requests/GetCommonResponse.md delete mode 100644 docs/Models/Requests/GetCompanionsDataResponse.md create mode 100644 docs/Models/Requests/GetContinueWatchingMediaContainer.md create mode 100644 docs/Models/Requests/GetContinueWatchingRequest.md create mode 100644 docs/Models/Requests/GetContinueWatchingResponse.md create mode 100644 docs/Models/Requests/GetContinueWatchingResponseBody.md delete mode 100644 docs/Models/Requests/GetCountriesLibraryDirectory.md delete mode 100644 docs/Models/Requests/GetCountriesLibraryMediaContainer.md delete mode 100644 docs/Models/Requests/GetCountriesLibraryQueryParamType.md delete mode 100644 docs/Models/Requests/GetCountriesLibraryRequest.md delete mode 100644 docs/Models/Requests/GetCountriesLibraryResponse.md delete mode 100644 docs/Models/Requests/GetCountriesLibraryResponseBody.md create mode 100644 docs/Models/Requests/GetCountriesLineupsRequest.md create mode 100644 docs/Models/Requests/GetCountriesLineupsResponse.md create mode 100644 docs/Models/Requests/GetCountriesMediaContainer.md create mode 100644 docs/Models/Requests/GetCountriesResponse.md create mode 100644 docs/Models/Requests/GetCountriesResponseBody.md create mode 100644 docs/Models/Requests/GetCountryRegionsCountry.md create mode 100644 docs/Models/Requests/GetCountryRegionsMediaContainer.md create mode 100644 docs/Models/Requests/GetCountryRegionsRequest.md create mode 100644 docs/Models/Requests/GetCountryRegionsResponse.md create mode 100644 docs/Models/Requests/GetCountryRegionsResponseBody.md create mode 100644 docs/Models/Requests/GetDVRDVR.md create mode 100644 docs/Models/Requests/GetDVRDVRsMediaContainer.md create mode 100644 docs/Models/Requests/GetDVRMediaContainer.md create mode 100644 docs/Models/Requests/GetDVRRequest.md create mode 100644 docs/Models/Requests/GetDVRResponse.md create mode 100644 docs/Models/Requests/GetDVRResponseBody.md create mode 100644 docs/Models/Requests/GetDeviceDetailsRequest.md create mode 100644 docs/Models/Requests/GetDeviceDetailsResponse.md create mode 100644 docs/Models/Requests/GetDevicesChannelsMediaContainer.md create mode 100644 docs/Models/Requests/GetDevicesChannelsRequest.md create mode 100644 docs/Models/Requests/GetDevicesChannelsResponse.md create mode 100644 docs/Models/Requests/GetDevicesChannelsResponseBody.md delete mode 100644 docs/Models/Requests/GetDevicesMediaContainer.md delete mode 100644 docs/Models/Requests/GetDevicesResponse.md delete mode 100644 docs/Models/Requests/GetDevicesResponseBody.md create mode 100644 docs/Models/Requests/GetDownloadQueueDownloadQueue.md create mode 100644 docs/Models/Requests/GetDownloadQueueItemsDecisionResult.md create mode 100644 docs/Models/Requests/GetDownloadQueueItemsDownloadQueueItem.md create mode 100644 docs/Models/Requests/GetDownloadQueueItemsMediaContainer.md create mode 100644 docs/Models/Requests/GetDownloadQueueItemsRequest.md create mode 100644 docs/Models/Requests/GetDownloadQueueItemsResponse.md create mode 100644 docs/Models/Requests/GetDownloadQueueItemsResponseBody.md create mode 100644 docs/Models/Requests/GetDownloadQueueItemsStatus.md create mode 100644 docs/Models/Requests/GetDownloadQueueItemsTranscode.md create mode 100644 docs/Models/Requests/GetDownloadQueueMediaContainer.md create mode 100644 docs/Models/Requests/GetDownloadQueueMediaRequest.md create mode 100644 docs/Models/Requests/GetDownloadQueueMediaResponse.md create mode 100644 docs/Models/Requests/GetDownloadQueueRequest.md create mode 100644 docs/Models/Requests/GetDownloadQueueResponse.md create mode 100644 docs/Models/Requests/GetDownloadQueueResponseBody.md create mode 100644 docs/Models/Requests/GetDownloadQueueStatus.md create mode 100644 docs/Models/Requests/GetExtrasRequest.md create mode 100644 docs/Models/Requests/GetExtrasResponse.md delete mode 100644 docs/Models/Requests/GetFileHashRequest.md delete mode 100644 docs/Models/Requests/GetFileHashResponse.md create mode 100644 docs/Models/Requests/GetFileRequest.md create mode 100644 docs/Models/Requests/GetFileResponse.md create mode 100644 docs/Models/Requests/GetFirstCharactersDirectory.md create mode 100644 docs/Models/Requests/GetFirstCharactersMediaContainer.md create mode 100644 docs/Models/Requests/GetFirstCharactersRequest.md create mode 100644 docs/Models/Requests/GetFirstCharactersResponse.md create mode 100644 docs/Models/Requests/GetFirstCharactersResponseBody.md create mode 100644 docs/Models/Requests/GetFoldersDirectory.md create mode 100644 docs/Models/Requests/GetFoldersMediaContainer.md create mode 100644 docs/Models/Requests/GetFoldersRequest.md create mode 100644 docs/Models/Requests/GetFoldersResponse.md create mode 100644 docs/Models/Requests/GetFoldersResponseBody.md delete mode 100644 docs/Models/Requests/GetGenresLibraryDirectory.md delete mode 100644 docs/Models/Requests/GetGenresLibraryMediaContainer.md delete mode 100644 docs/Models/Requests/GetGenresLibraryQueryParamType.md delete mode 100644 docs/Models/Requests/GetGenresLibraryRequest.md delete mode 100644 docs/Models/Requests/GetGenresLibraryResponse.md delete mode 100644 docs/Models/Requests/GetGenresLibraryResponseBody.md delete mode 100644 docs/Models/Requests/GetGeoDataGeoData.md delete mode 100644 docs/Models/Requests/GetGeoDataResponse.md delete mode 100644 docs/Models/Requests/GetGlobalHubsMediaContainer.md delete mode 100644 docs/Models/Requests/GetGlobalHubsMetadata.md delete mode 100644 docs/Models/Requests/GetGlobalHubsRequest.md delete mode 100644 docs/Models/Requests/GetGlobalHubsResponse.md delete mode 100644 docs/Models/Requests/GetGlobalHubsResponseBody.md create mode 100644 docs/Models/Requests/GetHistoryItemRequest.md create mode 100644 docs/Models/Requests/GetHistoryItemResponse.md delete mode 100644 docs/Models/Requests/GetHomeDataResponse.md delete mode 100644 docs/Models/Requests/GetHomeDataResponseBody.md create mode 100644 docs/Models/Requests/GetHubItemsRequest.md create mode 100644 docs/Models/Requests/GetHubItemsResponse.md create mode 100644 docs/Models/Requests/GetHubItemsResponseBody.md create mode 100644 docs/Models/Requests/GetIdentityMediaContainer.md create mode 100644 docs/Models/Requests/GetIdentityResponse.md create mode 100644 docs/Models/Requests/GetIdentityResponseBody.md create mode 100644 docs/Models/Requests/GetImageFromBifRequest.md create mode 100644 docs/Models/Requests/GetImageFromBifResponse.md create mode 100644 docs/Models/Requests/GetImageRequest.md create mode 100644 docs/Models/Requests/GetImageResponse.md create mode 100644 docs/Models/Requests/GetItemArtworkPathParamElement.md create mode 100644 docs/Models/Requests/GetItemArtworkRequest.md create mode 100644 docs/Models/Requests/GetItemArtworkResponse.md create mode 100644 docs/Models/Requests/GetItemDecisionRequest.md create mode 100644 docs/Models/Requests/GetItemDecisionResponse.md create mode 100644 docs/Models/Requests/GetItemTreeRequest.md create mode 100644 docs/Models/Requests/GetItemTreeResponse.md delete mode 100644 docs/Models/Requests/GetLibraryDetailsDirectory.md delete mode 100644 docs/Models/Requests/GetLibraryDetailsField.md delete mode 100644 docs/Models/Requests/GetLibraryDetailsFieldType.md delete mode 100644 docs/Models/Requests/GetLibraryDetailsFilter.md delete mode 100644 docs/Models/Requests/GetLibraryDetailsOperator.md delete mode 100644 docs/Models/Requests/GetLibraryDetailsSort.md delete mode 100644 docs/Models/Requests/GetLibraryDetailsType.md delete mode 100644 docs/Models/Requests/GetLibraryHubsCountry.md delete mode 100644 docs/Models/Requests/GetLibraryHubsDirector.md delete mode 100644 docs/Models/Requests/GetLibraryHubsGenre.md delete mode 100644 docs/Models/Requests/GetLibraryHubsHub.md delete mode 100644 docs/Models/Requests/GetLibraryHubsMedia.md delete mode 100644 docs/Models/Requests/GetLibraryHubsMediaContainer.md delete mode 100644 docs/Models/Requests/GetLibraryHubsMetadata.md delete mode 100644 docs/Models/Requests/GetLibraryHubsPart.md delete mode 100644 docs/Models/Requests/GetLibraryHubsRequest.md delete mode 100644 docs/Models/Requests/GetLibraryHubsResponse.md delete mode 100644 docs/Models/Requests/GetLibraryHubsResponseBody.md delete mode 100644 docs/Models/Requests/GetLibraryHubsRole.md delete mode 100644 docs/Models/Requests/GetLibraryHubsWriter.md delete mode 100644 docs/Models/Requests/GetLibraryItemsActiveDirection.md delete mode 100644 docs/Models/Requests/GetLibraryItemsCollection.md delete mode 100644 docs/Models/Requests/GetLibraryItemsCountry.md delete mode 100644 docs/Models/Requests/GetLibraryItemsDefaultDirection.md delete mode 100644 docs/Models/Requests/GetLibraryItemsDirector.md delete mode 100644 docs/Models/Requests/GetLibraryItemsField.md delete mode 100644 docs/Models/Requests/GetLibraryItemsFieldType.md delete mode 100644 docs/Models/Requests/GetLibraryItemsFilter.md delete mode 100644 docs/Models/Requests/GetLibraryItemsGenre.md delete mode 100644 docs/Models/Requests/GetLibraryItemsGuids.md delete mode 100644 docs/Models/Requests/GetLibraryItemsHasThumbnail.md delete mode 100644 docs/Models/Requests/GetLibraryItemsImage.md delete mode 100644 docs/Models/Requests/GetLibraryItemsLibraryOptimizedForStreaming.md delete mode 100644 docs/Models/Requests/GetLibraryItemsLibraryResponseType.md delete mode 100644 docs/Models/Requests/GetLibraryItemsLibraryType.md delete mode 100644 docs/Models/Requests/GetLibraryItemsLocation.md delete mode 100644 docs/Models/Requests/GetLibraryItemsMedia.md delete mode 100644 docs/Models/Requests/GetLibraryItemsMediaContainer.md delete mode 100644 docs/Models/Requests/GetLibraryItemsMeta.md delete mode 100644 docs/Models/Requests/GetLibraryItemsMetadata.md delete mode 100644 docs/Models/Requests/GetLibraryItemsOperator.md delete mode 100644 docs/Models/Requests/GetLibraryItemsOptimizedForStreaming.md delete mode 100644 docs/Models/Requests/GetLibraryItemsOptimizedForStreaming1.md delete mode 100644 docs/Models/Requests/GetLibraryItemsPart.md delete mode 100644 docs/Models/Requests/GetLibraryItemsProducer.md delete mode 100644 docs/Models/Requests/GetLibraryItemsQueryParamIncludeMeta.md delete mode 100644 docs/Models/Requests/GetLibraryItemsQueryParamType.md delete mode 100644 docs/Models/Requests/GetLibraryItemsResponseBody.md delete mode 100644 docs/Models/Requests/GetLibraryItemsRole.md delete mode 100644 docs/Models/Requests/GetLibraryItemsSimilar.md delete mode 100644 docs/Models/Requests/GetLibraryItemsSort.md delete mode 100644 docs/Models/Requests/GetLibraryItemsType.md delete mode 100644 docs/Models/Requests/GetLibraryItemsUltraBlurColors.md delete mode 100644 docs/Models/Requests/GetLibraryItemsWriter.md create mode 100644 docs/Models/Requests/GetLibraryMatchesRequest.md create mode 100644 docs/Models/Requests/GetLibraryMatchesResponse.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllActiveDirection.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllCollection.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllCountry.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllDefaultDirection.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllDirector.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllField.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllFieldType.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllFilter.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllGenre.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllGuids.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllHasThumbnail.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllImage.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllLibraryOptimizedForStreaming.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllLibraryResponseType.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllLibraryType.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllMedia.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllMediaContainer.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllMeta.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllMetadata.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllOperator.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming1.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreamingLibrary1.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllPart.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllQueryParamIncludeMeta.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllQueryParamType.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllRequest.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllResponse.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllResponseBody.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllRole.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllSort.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllStream.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllType.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllUltraBlurColors.md delete mode 100644 docs/Models/Requests/GetLibrarySectionsAllWriter.md create mode 100644 docs/Models/Requests/GetLineupChannelsMediaContainer.md create mode 100644 docs/Models/Requests/GetLineupChannelsRequest.md create mode 100644 docs/Models/Requests/GetLineupChannelsResponse.md create mode 100644 docs/Models/Requests/GetLineupChannelsResponseBody.md create mode 100644 docs/Models/Requests/GetLineupRequest.md create mode 100644 docs/Models/Requests/GetLineupResponse.md create mode 100644 docs/Models/Requests/GetLiveTVSessionRequest.md create mode 100644 docs/Models/Requests/GetLiveTVSessionResponse.md delete mode 100644 docs/Models/Requests/GetMediaArtsMediaContainer.md delete mode 100644 docs/Models/Requests/GetMediaArtsMetadata.md delete mode 100644 docs/Models/Requests/GetMediaArtsRequest.md delete mode 100644 docs/Models/Requests/GetMediaArtsResponse.md delete mode 100644 docs/Models/Requests/GetMediaArtsResponseBody.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataAttributes.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataChapter.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataCountry.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataDirector.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataExtras.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataGenre.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataGuids.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataHasThumbnail.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataImage.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataLibraryType.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataLocation.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataMarker.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataMedia.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataMediaContainer.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataMetadata.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming1.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataPart.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataProducer.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataRatings.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataRequest.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataResponse.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataResponseBody.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataRole.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataSimilar.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataStream.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataType.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataUltraBlurColors.md delete mode 100644 docs/Models/Requests/GetMediaMetaDataWriter.md create mode 100644 docs/Models/Requests/GetMediaPartRequest.md create mode 100644 docs/Models/Requests/GetMediaPartResponse.md delete mode 100644 docs/Models/Requests/GetMediaPostersMediaContainer.md delete mode 100644 docs/Models/Requests/GetMediaPostersMetadata.md delete mode 100644 docs/Models/Requests/GetMediaPostersRequest.md delete mode 100644 docs/Models/Requests/GetMediaPostersResponse.md delete mode 100644 docs/Models/Requests/GetMediaPostersResponseBody.md delete mode 100644 docs/Models/Requests/GetMediaProvidersDirectory.md delete mode 100644 docs/Models/Requests/GetMediaProvidersMediaContainer.md delete mode 100644 docs/Models/Requests/GetMediaProvidersRequest.md delete mode 100644 docs/Models/Requests/GetMediaProvidersResponse.md delete mode 100644 docs/Models/Requests/GetMediaProvidersResponseBody.md delete mode 100644 docs/Models/Requests/GetMetadataChildrenDirectory.md delete mode 100644 docs/Models/Requests/GetMetadataChildrenMediaContainer.md delete mode 100644 docs/Models/Requests/GetMetadataChildrenMetadata.md delete mode 100644 docs/Models/Requests/GetMetadataChildrenRequest.md delete mode 100644 docs/Models/Requests/GetMetadataChildrenResponse.md delete mode 100644 docs/Models/Requests/GetMetadataChildrenResponseBody.md create mode 100644 docs/Models/Requests/GetMetadataHubsRequest.md create mode 100644 docs/Models/Requests/GetMetadataHubsResponse.md create mode 100644 docs/Models/Requests/GetMetadataItemRequest.md create mode 100644 docs/Models/Requests/GetMetadataItemResponse.md delete mode 100644 docs/Models/Requests/GetMyPlexAccountResponse.md delete mode 100644 docs/Models/Requests/GetMyPlexAccountResponseBody.md create mode 100644 docs/Models/Requests/GetNotificationsRequest.md create mode 100644 docs/Models/Requests/GetNotificationsResponse.md create mode 100644 docs/Models/Requests/GetPartIndexRequest.md create mode 100644 docs/Models/Requests/GetPartIndexResponse.md create mode 100644 docs/Models/Requests/GetPersonMediaContainer.md create mode 100644 docs/Models/Requests/GetPersonRequest.md create mode 100644 docs/Models/Requests/GetPersonResponse.md create mode 100644 docs/Models/Requests/GetPersonResponseBody.md delete mode 100644 docs/Models/Requests/GetPinAuthPinContainer.md delete mode 100644 docs/Models/Requests/GetPinRequest.md delete mode 100644 docs/Models/Requests/GetPinResponse.md create mode 100644 docs/Models/Requests/GetPlayQueueRequest.md create mode 100644 docs/Models/Requests/GetPlayQueueResponse.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsCountry.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsDirector.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsGenre.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsMedia.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsMediaContainer.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsMetadata.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsPart.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsQueryParamType.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsRequest.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsResponse.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsResponseBody.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsRole.md delete mode 100644 docs/Models/Requests/GetPlaylistContentsWriter.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorDevice.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorItemsMediaContainer.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorItemsMetadata.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorItemsRequest.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorItemsResponse.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorItemsResponseBody.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorLocation.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorMediaContainer.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorRequest.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorResponse.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorResponseBody.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorScope.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorState.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorStatus.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorSubtitles.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorType.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorsMediaContainer.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorsRequest.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorsResponse.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorsResponseBody.md create mode 100644 docs/Models/Requests/GetPlaylistGeneratorsType.md create mode 100644 docs/Models/Requests/GetPlaylistItemsRequest.md create mode 100644 docs/Models/Requests/GetPlaylistItemsResponse.md delete mode 100644 docs/Models/Requests/GetPlaylistMediaContainer.md delete mode 100644 docs/Models/Requests/GetPlaylistMetadata.md delete mode 100644 docs/Models/Requests/GetPlaylistResponseBody.md delete mode 100644 docs/Models/Requests/GetPlaylistsMediaContainer.md delete mode 100644 docs/Models/Requests/GetPlaylistsMetadata.md delete mode 100644 docs/Models/Requests/GetPlaylistsRequest.md delete mode 100644 docs/Models/Requests/GetPlaylistsResponse.md delete mode 100644 docs/Models/Requests/GetPlaylistsResponseBody.md create mode 100644 docs/Models/Requests/GetPostplayHubsRequest.md create mode 100644 docs/Models/Requests/GetPostplayHubsResponse.md create mode 100644 docs/Models/Requests/GetPreferenceRequest.md create mode 100644 docs/Models/Requests/GetPreferenceResponse.md create mode 100644 docs/Models/Requests/GetPromotedHubsMediaContainer.md create mode 100644 docs/Models/Requests/GetPromotedHubsRequest.md create mode 100644 docs/Models/Requests/GetPromotedHubsResponse.md create mode 100644 docs/Models/Requests/GetPromotedHubsResponseBody.md create mode 100644 docs/Models/Requests/GetRandomArtworkRequest.md create mode 100644 docs/Models/Requests/GetRandomArtworkResponse.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedActiveDirection.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedDefaultDirection.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedField.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedFieldType.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedFilter.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedHubsResponseType.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedHubsType.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedImage.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryCountry.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryDirector.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryFilter.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryGenre.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryMedia.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryMediaContainer.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryMetadata.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryPart.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryRequest.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryResponse.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryResponseBody.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryRole.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryType.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedLibraryWriter.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedMediaContainer.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedMetadata.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedOperator.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedRequest.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedResponse.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedResponseBody.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedSort.md delete mode 100644 docs/Models/Requests/GetRecentlyAddedType.md delete mode 100644 docs/Models/Requests/GetRefreshLibraryMetadataRequest.md delete mode 100644 docs/Models/Requests/GetRefreshLibraryMetadataResponse.md create mode 100644 docs/Models/Requests/GetRelatedHubsRequest.md create mode 100644 docs/Models/Requests/GetRelatedHubsResponse.md create mode 100644 docs/Models/Requests/GetRelatedItemsMediaContainer.md create mode 100644 docs/Models/Requests/GetRelatedItemsRequest.md create mode 100644 docs/Models/Requests/GetRelatedItemsResponse.md create mode 100644 docs/Models/Requests/GetRelatedItemsResponseBody.md delete mode 100644 docs/Models/Requests/GetResizedPhotoRequest.md delete mode 100644 docs/Models/Requests/GetResizedPhotoResponse.md delete mode 100644 docs/Models/Requests/GetResourcesStatisticsMediaContainer.md delete mode 100644 docs/Models/Requests/GetResourcesStatisticsRequest.md delete mode 100644 docs/Models/Requests/GetResourcesStatisticsResponse.md delete mode 100644 docs/Models/Requests/GetResourcesStatisticsResponseBody.md create mode 100644 docs/Models/Requests/GetScheduledRecordingsMediaContainer.md create mode 100644 docs/Models/Requests/GetScheduledRecordingsResponse.md create mode 100644 docs/Models/Requests/GetScheduledRecordingsResponseBody.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesCountry.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesDirector.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesDirectory.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesFlattenSeasons.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesGenre.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesGuids.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesHasThumbnail.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesImage.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesLibraryOptimizedForStreaming.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesLibraryType.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesLocation.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesMedia.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesMediaContainer.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesMetadata.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming1.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreamingLibrary1.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesPart.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesQueryParamIncludeCollections.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesQueryParamIncludeExternalMedia.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesRequest.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesResponse.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesResponseBody.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesRole.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesShowOrdering.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesType.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesUltraBlurColors.md delete mode 100644 docs/Models/Requests/GetSearchAllLibrariesWriter.md delete mode 100644 docs/Models/Requests/GetSearchLibraryMediaContainer.md delete mode 100644 docs/Models/Requests/GetSearchLibraryMetadata.md delete mode 100644 docs/Models/Requests/GetSearchLibraryQueryParamType.md delete mode 100644 docs/Models/Requests/GetSearchLibraryRequest.md delete mode 100644 docs/Models/Requests/GetSearchLibraryResponse.md delete mode 100644 docs/Models/Requests/GetSearchLibraryResponseBody.md delete mode 100644 docs/Models/Requests/GetSearchResultsCountry.md delete mode 100644 docs/Models/Requests/GetSearchResultsDirector.md delete mode 100644 docs/Models/Requests/GetSearchResultsGenre.md delete mode 100644 docs/Models/Requests/GetSearchResultsMedia.md delete mode 100644 docs/Models/Requests/GetSearchResultsMediaContainer.md delete mode 100644 docs/Models/Requests/GetSearchResultsMetadata.md delete mode 100644 docs/Models/Requests/GetSearchResultsPart.md delete mode 100644 docs/Models/Requests/GetSearchResultsRequest.md delete mode 100644 docs/Models/Requests/GetSearchResultsResponse.md delete mode 100644 docs/Models/Requests/GetSearchResultsResponseBody.md delete mode 100644 docs/Models/Requests/GetSearchResultsRole.md delete mode 100644 docs/Models/Requests/GetSearchResultsWriter.md create mode 100644 docs/Models/Requests/GetSectionFiltersMediaContainer.md create mode 100644 docs/Models/Requests/GetSectionFiltersRequest.md create mode 100644 docs/Models/Requests/GetSectionFiltersResponse.md create mode 100644 docs/Models/Requests/GetSectionFiltersResponseBody.md create mode 100644 docs/Models/Requests/GetSectionHubsMediaContainer.md create mode 100644 docs/Models/Requests/GetSectionHubsRequest.md create mode 100644 docs/Models/Requests/GetSectionHubsResponse.md create mode 100644 docs/Models/Requests/GetSectionHubsResponseBody.md create mode 100644 docs/Models/Requests/GetSectionImageRequest.md create mode 100644 docs/Models/Requests/GetSectionImageResponse.md create mode 100644 docs/Models/Requests/GetSectionPreferencesRequest.md create mode 100644 docs/Models/Requests/GetSectionPreferencesResponse.md create mode 100644 docs/Models/Requests/GetSectionsMediaContainer.md create mode 100644 docs/Models/Requests/GetSectionsPrefsRequest.md create mode 100644 docs/Models/Requests/GetSectionsPrefsResponse.md create mode 100644 docs/Models/Requests/GetSectionsResponse.md create mode 100644 docs/Models/Requests/GetSectionsResponseBody.md delete mode 100644 docs/Models/Requests/GetServerActivitiesMediaContainer.md delete mode 100644 docs/Models/Requests/GetServerActivitiesResponse.md delete mode 100644 docs/Models/Requests/GetServerActivitiesResponseBody.md delete mode 100644 docs/Models/Requests/GetServerCapabilitiesResponse.md delete mode 100644 docs/Models/Requests/GetServerCapabilitiesResponseBody.md delete mode 100644 docs/Models/Requests/GetServerIdentityMediaContainer.md delete mode 100644 docs/Models/Requests/GetServerIdentityResponse.md delete mode 100644 docs/Models/Requests/GetServerIdentityResponseBody.md create mode 100644 docs/Models/Requests/GetServerInfoRequest.md create mode 100644 docs/Models/Requests/GetServerInfoResponse.md delete mode 100644 docs/Models/Requests/GetServerListMediaContainer.md delete mode 100644 docs/Models/Requests/GetServerListResponse.md delete mode 100644 docs/Models/Requests/GetServerListResponseBody.md delete mode 100644 docs/Models/Requests/GetServerListServer.md delete mode 100644 docs/Models/Requests/GetServerPreferencesMediaContainer.md delete mode 100644 docs/Models/Requests/GetServerPreferencesResponse.md delete mode 100644 docs/Models/Requests/GetServerPreferencesResponseBody.md delete mode 100644 docs/Models/Requests/GetServerResourcesRequest.md delete mode 100644 docs/Models/Requests/GetServerResourcesResponse.md delete mode 100644 docs/Models/Requests/GetSessionHistoryMediaContainer.md delete mode 100644 docs/Models/Requests/GetSessionHistoryMetadata.md delete mode 100644 docs/Models/Requests/GetSessionHistoryRequest.md delete mode 100644 docs/Models/Requests/GetSessionHistoryResponse.md delete mode 100644 docs/Models/Requests/GetSessionHistoryResponseBody.md create mode 100644 docs/Models/Requests/GetSessionPlaylistIndexRequest.md create mode 100644 docs/Models/Requests/GetSessionPlaylistIndexResponse.md create mode 100644 docs/Models/Requests/GetSessionSegmentRequest.md create mode 100644 docs/Models/Requests/GetSessionSegmentResponse.md delete mode 100644 docs/Models/Requests/GetSessionsMedia.md delete mode 100644 docs/Models/Requests/GetSessionsMediaContainer.md delete mode 100644 docs/Models/Requests/GetSessionsMetadata.md delete mode 100644 docs/Models/Requests/GetSessionsPart.md delete mode 100644 docs/Models/Requests/GetSessionsResponseBody.md delete mode 100644 docs/Models/Requests/GetSessionsStream.md delete mode 100644 docs/Models/Requests/GetSessionsUser.md create mode 100644 docs/Models/Requests/GetSonicPathRequest.md create mode 100644 docs/Models/Requests/GetSonicPathResponse.md create mode 100644 docs/Models/Requests/GetSonicallySimilarRequest.md create mode 100644 docs/Models/Requests/GetSonicallySimilarResponse.md create mode 100644 docs/Models/Requests/GetSourceConnectionInformationMediaContainer.md create mode 100644 docs/Models/Requests/GetSourceConnectionInformationResponseBody.md delete mode 100644 docs/Models/Requests/GetStatisticsDevice.md delete mode 100644 docs/Models/Requests/GetStatisticsMediaContainer.md delete mode 100644 docs/Models/Requests/GetStatisticsRequest.md delete mode 100644 docs/Models/Requests/GetStatisticsResponse.md delete mode 100644 docs/Models/Requests/GetStatisticsResponseBody.md create mode 100644 docs/Models/Requests/GetStreamLevelsLevel.md create mode 100644 docs/Models/Requests/GetStreamLevelsMediaContainer.md create mode 100644 docs/Models/Requests/GetStreamLevelsRequest.md create mode 100644 docs/Models/Requests/GetStreamLevelsResponse.md create mode 100644 docs/Models/Requests/GetStreamLevelsResponseBody.md create mode 100644 docs/Models/Requests/GetStreamLoudnessRequest.md create mode 100644 docs/Models/Requests/GetStreamLoudnessResponse.md create mode 100644 docs/Models/Requests/GetStreamRequest.md create mode 100644 docs/Models/Requests/GetStreamResponse.md create mode 100644 docs/Models/Requests/GetSubscriptionRequest.md create mode 100644 docs/Models/Requests/GetSubscriptionResponse.md create mode 100644 docs/Models/Requests/GetTagsMediaContainer.md create mode 100644 docs/Models/Requests/GetTagsRequest.md create mode 100644 docs/Models/Requests/GetTagsResponse.md create mode 100644 docs/Models/Requests/GetTagsResponseBody.md create mode 100644 docs/Models/Requests/GetTasksResponse.md create mode 100644 docs/Models/Requests/GetTasksResponseBody.md create mode 100644 docs/Models/Requests/GetTemplateMediaContainer.md create mode 100644 docs/Models/Requests/GetTemplateRequest.md create mode 100644 docs/Models/Requests/GetTemplateResponse.md create mode 100644 docs/Models/Requests/GetTemplateResponseBody.md delete mode 100644 docs/Models/Requests/GetThumbImageRequest.md delete mode 100644 docs/Models/Requests/GetThumbImageResponse.md create mode 100644 docs/Models/Requests/GetThumbRequest.md create mode 100644 docs/Models/Requests/GetThumbResponse.md delete mode 100644 docs/Models/Requests/GetTimelineRequest.md delete mode 100644 docs/Models/Requests/GetTimelineResponse.md delete mode 100644 docs/Models/Requests/GetTokenByPinIdAuthPinContainer.md delete mode 100644 docs/Models/Requests/GetTokenByPinIdGeoData.md delete mode 100644 docs/Models/Requests/GetTokenByPinIdRequest.md delete mode 100644 docs/Models/Requests/GetTokenByPinIdResponse.md delete mode 100644 docs/Models/Requests/GetTokenDetailsAuthenticationResponseStatus.md delete mode 100644 docs/Models/Requests/GetTokenDetailsAuthenticationStatus.md delete mode 100644 docs/Models/Requests/GetTokenDetailsResponse.md delete mode 100644 docs/Models/Requests/GetTokenDetailsStatus.md delete mode 100644 docs/Models/Requests/GetTokenDetailsSubscription.md delete mode 100644 docs/Models/Requests/GetTokenDetailsUserPlexAccount.md delete mode 100644 docs/Models/Requests/GetTopWatchedContentCountry.md delete mode 100644 docs/Models/Requests/GetTopWatchedContentGenre.md delete mode 100644 docs/Models/Requests/GetTopWatchedContentGuids.md delete mode 100644 docs/Models/Requests/GetTopWatchedContentMediaContainer.md delete mode 100644 docs/Models/Requests/GetTopWatchedContentMetadata.md delete mode 100644 docs/Models/Requests/GetTopWatchedContentQueryParamIncludeGuids.md delete mode 100644 docs/Models/Requests/GetTopWatchedContentQueryParamType.md delete mode 100644 docs/Models/Requests/GetTopWatchedContentRequest.md delete mode 100644 docs/Models/Requests/GetTopWatchedContentResponse.md delete mode 100644 docs/Models/Requests/GetTopWatchedContentResponseBody.md delete mode 100644 docs/Models/Requests/GetTopWatchedContentRole.md delete mode 100644 docs/Models/Requests/GetTopWatchedContentUser.md delete mode 100644 docs/Models/Requests/GetTranscodeSessionsMediaContainer.md delete mode 100644 docs/Models/Requests/GetTranscodeSessionsResponse.md delete mode 100644 docs/Models/Requests/GetTranscodeSessionsResponseBody.md create mode 100644 docs/Models/Requests/GetTransientTokenMediaContainer.md delete mode 100644 docs/Models/Requests/GetTransientTokenQueryParamType.md create mode 100644 docs/Models/Requests/GetTransientTokenResponseBody.md delete mode 100644 docs/Models/Requests/GetUpdateStatusMediaContainer.md delete mode 100644 docs/Models/Requests/GetUpdateStatusResponse.md delete mode 100644 docs/Models/Requests/GetUpdateStatusResponseBody.md create mode 100644 docs/Models/Requests/GetUpdatesStatusMediaContainer.md create mode 100644 docs/Models/Requests/GetUpdatesStatusResponse.md create mode 100644 docs/Models/Requests/GetUpdatesStatusResponseBody.md create mode 100644 docs/Models/Requests/GetUpdatesStatusState.md delete mode 100644 docs/Models/Requests/GetUserFriendsResponse.md delete mode 100644 docs/Models/Requests/GetUsersMediaContainer.md delete mode 100644 docs/Models/Requests/GetUsersRequest.md delete mode 100644 docs/Models/Requests/GetUsersResponse.md delete mode 100644 docs/Models/Requests/GetUsersResponseBody.md delete mode 100644 docs/Models/Requests/GetUsersServer.md delete mode 100644 docs/Models/Requests/GetWatchListRequest.md delete mode 100644 docs/Models/Requests/GetWatchListResponse.md delete mode 100644 docs/Models/Requests/GetWatchListResponseBody.md delete mode 100644 docs/Models/Requests/Guids.md delete mode 100644 docs/Models/Requests/HasThumbnail.md delete mode 100644 docs/Models/Requests/Hidden.md create mode 100644 docs/Models/Requests/Hints.md delete mode 100644 docs/Models/Requests/Home.md create mode 100644 docs/Models/Requests/HomeVisibility.md delete mode 100644 docs/Models/Requests/Image.md delete mode 100644 docs/Models/Requests/IncludeAdvanced.md delete mode 100644 docs/Models/Requests/IncludeCollections.md delete mode 100644 docs/Models/Requests/IncludeDetails.md delete mode 100644 docs/Models/Requests/IncludeExternalMedia.md delete mode 100644 docs/Models/Requests/IncludeGuids.md delete mode 100644 docs/Models/Requests/IncludeHttps.md delete mode 100644 docs/Models/Requests/IncludeIPv6.md delete mode 100644 docs/Models/Requests/IncludeMeta.md delete mode 100644 docs/Models/Requests/IncludeRelay.md create mode 100644 docs/Models/Requests/Index.md create mode 100644 docs/Models/Requests/IngestTransientItemRequest.md create mode 100644 docs/Models/Requests/IngestTransientItemResponse.md delete mode 100644 docs/Models/Requests/InternalPaymentMethod.md create mode 100644 docs/Models/Requests/Item.md create mode 100644 docs/Models/Requests/Language.md delete mode 100644 docs/Models/Requests/Libtype.md create mode 100644 docs/Models/Requests/Lineup.md create mode 100644 docs/Models/Requests/LineupType.md create mode 100644 docs/Models/Requests/ListActivitiesMediaContainer.md create mode 100644 docs/Models/Requests/ListActivitiesResponse.md create mode 100644 docs/Models/Requests/ListActivitiesResponseBody.md create mode 100644 docs/Models/Requests/ListContentRequest.md create mode 100644 docs/Models/Requests/ListContentResponse.md create mode 100644 docs/Models/Requests/ListDVRsDVRsMediaContainer.md create mode 100644 docs/Models/Requests/ListDVRsMediaContainer.md create mode 100644 docs/Models/Requests/ListDVRsResponse.md create mode 100644 docs/Models/Requests/ListDVRsResponseBody.md create mode 100644 docs/Models/Requests/ListDevicesResponse.md create mode 100644 docs/Models/Requests/ListDownloadQueueItemsMediaContainer.md create mode 100644 docs/Models/Requests/ListDownloadQueueItemsRequest.md create mode 100644 docs/Models/Requests/ListDownloadQueueItemsResponse.md create mode 100644 docs/Models/Requests/ListDownloadQueueItemsResponseBody.md create mode 100644 docs/Models/Requests/ListDownloadQueueItemsStatus.md create mode 100644 docs/Models/Requests/ListHubsMediaContainer.md create mode 100644 docs/Models/Requests/ListHubsRequest.md create mode 100644 docs/Models/Requests/ListHubsResponse.md create mode 100644 docs/Models/Requests/ListHubsResponseBody.md create mode 100644 docs/Models/Requests/ListLineupsRequest.md create mode 100644 docs/Models/Requests/ListLineupsResponse.md create mode 100644 docs/Models/Requests/ListMatchesRequest.md create mode 100644 docs/Models/Requests/ListMatchesResponse.md create mode 100644 docs/Models/Requests/ListMomentsRequest.md create mode 100644 docs/Models/Requests/ListMomentsResponse.md create mode 100644 docs/Models/Requests/ListPersonMediaRequest.md create mode 100644 docs/Models/Requests/ListPersonMediaResponse.md create mode 100644 docs/Models/Requests/ListPlaybackHistoryMediaContainer.md create mode 100644 docs/Models/Requests/ListPlaybackHistoryMetadata.md create mode 100644 docs/Models/Requests/ListPlaybackHistoryRequest.md create mode 100644 docs/Models/Requests/ListPlaybackHistoryResponse.md create mode 100644 docs/Models/Requests/ListPlaybackHistoryResponseBody.md create mode 100644 docs/Models/Requests/ListPlaylistsRequest.md create mode 100644 docs/Models/Requests/ListPlaylistsResponse.md create mode 100644 docs/Models/Requests/ListProvidersMediaContainer.md create mode 100644 docs/Models/Requests/ListProvidersResponse.md create mode 100644 docs/Models/Requests/ListProvidersResponseBody.md create mode 100644 docs/Models/Requests/ListSessionsMediaContainer.md create mode 100644 docs/Models/Requests/ListSessionsResponse.md create mode 100644 docs/Models/Requests/ListSessionsResponseBody.md create mode 100644 docs/Models/Requests/ListSimilarRequest.md create mode 100644 docs/Models/Requests/ListSimilarResponse.md create mode 100644 docs/Models/Requests/ListSonicallySimilarRequest.md create mode 100644 docs/Models/Requests/ListSonicallySimilarResponse.md create mode 100644 docs/Models/Requests/ListTopUsersMediaContainer.md create mode 100644 docs/Models/Requests/ListTopUsersRequest.md create mode 100644 docs/Models/Requests/ListTopUsersResponse.md create mode 100644 docs/Models/Requests/ListTopUsersResponseBody.md delete mode 100644 docs/Models/Requests/LogLineRequest.md delete mode 100644 docs/Models/Requests/LogLineResponse.md delete mode 100644 docs/Models/Requests/LogMultiLineResponse.md delete mode 100644 docs/Models/Requests/MailingListStatus.md create mode 100644 docs/Models/Requests/MakeDecisionRequest.md create mode 100644 docs/Models/Requests/MakeDecisionResponse.md delete mode 100644 docs/Models/Requests/MarkUnplayedRequest.md delete mode 100644 docs/Models/Requests/MarkUnplayedResponse.md delete mode 100644 docs/Models/Requests/Marker.md create mode 100644 docs/Models/Requests/MatchItemRequest.md create mode 100644 docs/Models/Requests/MatchItemResponse.md delete mode 100644 docs/Models/Requests/Media.md create mode 100644 docs/Models/Requests/MediaGrabber.md delete mode 100644 docs/Models/Requests/MediaProvider.md delete mode 100644 docs/Models/Requests/MediaReviewsVisibility.md create mode 100644 docs/Models/Requests/MediaSettings.md create mode 100644 docs/Models/Requests/MediaSubscription.md create mode 100644 docs/Models/Requests/MergeItemsRequest.md create mode 100644 docs/Models/Requests/MergeItemsResponse.md delete mode 100644 docs/Models/Requests/Meta.md delete mode 100644 docs/Models/Requests/MinSize.md create mode 100644 docs/Models/Requests/ModifyDeviceMediaContainer.md create mode 100644 docs/Models/Requests/ModifyDeviceRequest.md create mode 100644 docs/Models/Requests/ModifyDeviceResponse.md create mode 100644 docs/Models/Requests/ModifyDeviceResponseBody.md create mode 100644 docs/Models/Requests/MoveCollectionItemRequest.md create mode 100644 docs/Models/Requests/MoveCollectionItemResponse.md create mode 100644 docs/Models/Requests/MoveHubRequest.md create mode 100644 docs/Models/Requests/MoveHubResponse.md create mode 100644 docs/Models/Requests/MovePlayQueueItemRequest.md create mode 100644 docs/Models/Requests/MovePlayQueueItemResponse.md create mode 100644 docs/Models/Requests/MovePlaylistItemRequest.md create mode 100644 docs/Models/Requests/MovePlaylistItemResponse.md delete mode 100644 docs/Models/Requests/MyPlex.md delete mode 100644 docs/Models/Requests/One.md delete mode 100644 docs/Models/Requests/OnlyTransient.md delete mode 100644 docs/Models/Requests/Operator.md create mode 100644 docs/Models/Requests/OptimizeDatabaseRequest.md create mode 100644 docs/Models/Requests/OptimizeDatabaseResponse.md delete mode 100644 docs/Models/Requests/OptimizedForStreaming.md delete mode 100644 docs/Models/Requests/OptimizedForStreaming1.md delete mode 100644 docs/Models/Requests/Owned.md create mode 100644 docs/Models/Requests/Params.md delete mode 100644 docs/Models/Requests/Part.md delete mode 100644 docs/Models/Requests/PastSubscription.md create mode 100644 docs/Models/Requests/PathParamElement.md create mode 100644 docs/Models/Requests/PathParamIndex.md create mode 100644 docs/Models/Requests/PathParamTask.md delete mode 100644 docs/Models/Requests/PathParamTaskName.md delete mode 100644 docs/Models/Requests/Pending.md delete mode 100644 docs/Models/Requests/PerformSearchRequest.md delete mode 100644 docs/Models/Requests/PerformSearchResponse.md delete mode 100644 docs/Models/Requests/PerformVoiceSearchRequest.md delete mode 100644 docs/Models/Requests/PerformVoiceSearchResponse.md create mode 100644 docs/Models/Requests/PlayQueueGenerator.md delete mode 100644 docs/Models/Requests/Player.md delete mode 100644 docs/Models/Requests/PlexDevice.md create mode 100644 docs/Models/Requests/Policy.md delete mode 100644 docs/Models/Requests/PostMediaArtsRequest.md delete mode 100644 docs/Models/Requests/PostMediaArtsResponse.md delete mode 100644 docs/Models/Requests/PostMediaPosterRequest.md delete mode 100644 docs/Models/Requests/PostMediaPosterResponse.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataAuthenticationResponseStatus.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataAuthenticationStatus.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataAuthenticationSubscription.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataAutoSelectSubtitle.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataDefaultSubtitleAccessibility.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataDefaultSubtitleForced.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataMailingListStatus.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataMediaReviewsVisibility.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataRequest.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataRequestBody.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataResponse.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataServices.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataState.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataStatus.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataSubscription.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataUserPlexAccount.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataUserProfile.md delete mode 100644 docs/Models/Requests/PostUsersSignInDataWatchedIndicator.md create mode 100644 docs/Models/Requests/Prefs.md create mode 100644 docs/Models/Requests/ProcessSubscriptionsResponse.md create mode 100644 docs/Models/Requests/ProcessingState.md create mode 100644 docs/Models/Requests/ProcessingStateContext.md delete mode 100644 docs/Models/Requests/Producer.md delete mode 100644 docs/Models/Requests/Protected.md delete mode 100644 docs/Models/Requests/Provider.md create mode 100644 docs/Models/Requests/QueryParamArgs.md create mode 100644 docs/Models/Requests/QueryParamAttributes.md delete mode 100644 docs/Models/Requests/QueryParamFilter.md delete mode 100644 docs/Models/Requests/QueryParamForce.md delete mode 100644 docs/Models/Requests/QueryParamIncludeCollections.md delete mode 100644 docs/Models/Requests/QueryParamIncludeExternalMedia.md delete mode 100644 docs/Models/Requests/QueryParamIncludeGuids.md delete mode 100644 docs/Models/Requests/QueryParamIncludeMeta.md create mode 100644 docs/Models/Requests/QueryParamLocation.md delete mode 100644 docs/Models/Requests/QueryParamOnlyTransient.md create mode 100644 docs/Models/Requests/QueryParamPrefs.md create mode 100644 docs/Models/Requests/QueryParamProtocol.md delete mode 100644 docs/Models/Requests/QueryParamSmart.md create mode 100644 docs/Models/Requests/QueryParamSubtitles.md delete mode 100644 docs/Models/Requests/Rating.md delete mode 100644 docs/Models/Requests/Ratings.md create mode 100644 docs/Models/Requests/RecommendationsVisibility.md create mode 100644 docs/Models/Requests/RefreshItemsMetadataRequest.md create mode 100644 docs/Models/Requests/RefreshItemsMetadataResponse.md create mode 100644 docs/Models/Requests/RefreshPlaylistRequest.md create mode 100644 docs/Models/Requests/RefreshPlaylistResponse.md create mode 100644 docs/Models/Requests/RefreshProvidersResponse.md create mode 100644 docs/Models/Requests/RefreshSectionRequest.md create mode 100644 docs/Models/Requests/RefreshSectionResponse.md create mode 100644 docs/Models/Requests/RefreshSectionsMetadataRequest.md create mode 100644 docs/Models/Requests/RefreshSectionsMetadataResponse.md create mode 100644 docs/Models/Requests/ReloadGuideRequest.md create mode 100644 docs/Models/Requests/ReloadGuideResponse.md create mode 100644 docs/Models/Requests/RemoveDeviceFromDVRDVR.md create mode 100644 docs/Models/Requests/RemoveDeviceFromDVRDVRsMediaContainer.md create mode 100644 docs/Models/Requests/RemoveDeviceFromDVRMediaContainer.md create mode 100644 docs/Models/Requests/RemoveDeviceFromDVRRequest.md create mode 100644 docs/Models/Requests/RemoveDeviceFromDVRResponse.md create mode 100644 docs/Models/Requests/RemoveDeviceFromDVRResponseBody.md create mode 100644 docs/Models/Requests/RemoveDeviceMediaContainer.md create mode 100644 docs/Models/Requests/RemoveDeviceRequest.md create mode 100644 docs/Models/Requests/RemoveDeviceResponse.md create mode 100644 docs/Models/Requests/RemoveDeviceResponseBody.md create mode 100644 docs/Models/Requests/RemoveDownloadQueueItemsRequest.md create mode 100644 docs/Models/Requests/RemoveDownloadQueueItemsResponse.md create mode 100644 docs/Models/Requests/ReorderSubscriptionRequest.md create mode 100644 docs/Models/Requests/ReorderSubscriptionResponse.md create mode 100644 docs/Models/Requests/ReportRequest.md create mode 100644 docs/Models/Requests/ReportResponse.md create mode 100644 docs/Models/Requests/ReportResponseBody.md create mode 100644 docs/Models/Requests/ResetPlayQueueRequest.md create mode 100644 docs/Models/Requests/ResetPlayQueueResponse.md create mode 100644 docs/Models/Requests/ResetSectionDefaultsRequest.md create mode 100644 docs/Models/Requests/ResetSectionDefaultsResponse.md delete mode 100644 docs/Models/Requests/ResponseBody.md create mode 100644 docs/Models/Requests/RestartProcessingDownloadQueueItemsRequest.md create mode 100644 docs/Models/Requests/RestartProcessingDownloadQueueItemsResponse.md delete mode 100644 docs/Models/Requests/Restricted.md delete mode 100644 docs/Models/Requests/Role.md create mode 100644 docs/Models/Requests/ScanRequest.md create mode 100644 docs/Models/Requests/ScanResponse.md create mode 100644 docs/Models/Requests/SearchHubsMediaContainer.md create mode 100644 docs/Models/Requests/SearchHubsRequest.md create mode 100644 docs/Models/Requests/SearchHubsResponse.md create mode 100644 docs/Models/Requests/SearchHubsResponseBody.md delete mode 100644 docs/Models/Requests/SearchResult.md delete mode 100644 docs/Models/Requests/SearchTypes.md delete mode 100644 docs/Models/Requests/Server.md delete mode 100644 docs/Models/Requests/Services.md delete mode 100644 docs/Models/Requests/Session.md create mode 100644 docs/Models/Requests/SetChannelmapRequest.md create mode 100644 docs/Models/Requests/SetChannelmapResponse.md create mode 100644 docs/Models/Requests/SetDVRPreferencesDVR.md create mode 100644 docs/Models/Requests/SetDVRPreferencesDVRsMediaContainer.md create mode 100644 docs/Models/Requests/SetDVRPreferencesMediaContainer.md create mode 100644 docs/Models/Requests/SetDVRPreferencesRequest.md create mode 100644 docs/Models/Requests/SetDVRPreferencesResponse.md create mode 100644 docs/Models/Requests/SetDVRPreferencesResponseBody.md create mode 100644 docs/Models/Requests/SetDevicePreferencesRequest.md create mode 100644 docs/Models/Requests/SetDevicePreferencesResponse.md create mode 100644 docs/Models/Requests/SetItemArtworkRequest.md create mode 100644 docs/Models/Requests/SetItemArtworkResponse.md create mode 100644 docs/Models/Requests/SetItemPreferencesRequest.md create mode 100644 docs/Models/Requests/SetItemPreferencesResponse.md create mode 100644 docs/Models/Requests/SetPreferencesRequest.md create mode 100644 docs/Models/Requests/SetPreferencesResponse.md create mode 100644 docs/Models/Requests/SetRatingRequest.md create mode 100644 docs/Models/Requests/SetRatingResponse.md create mode 100644 docs/Models/Requests/SetSectionPreferencesQueryParamPrefs.md create mode 100644 docs/Models/Requests/SetSectionPreferencesRequest.md create mode 100644 docs/Models/Requests/SetSectionPreferencesResponse.md create mode 100644 docs/Models/Requests/SetStreamOffsetRequest.md create mode 100644 docs/Models/Requests/SetStreamOffsetResponse.md create mode 100644 docs/Models/Requests/SetStreamSelectionRequest.md create mode 100644 docs/Models/Requests/SetStreamSelectionResponse.md delete mode 100644 docs/Models/Requests/Setting.md delete mode 100644 docs/Models/Requests/SharedServers.md delete mode 100644 docs/Models/Requests/SharedSources.md delete mode 100644 docs/Models/Requests/ShowOrdering.md create mode 100644 docs/Models/Requests/ShuffleRequest.md create mode 100644 docs/Models/Requests/ShuffleResponse.md delete mode 100644 docs/Models/Requests/Similar.md delete mode 100644 docs/Models/Requests/Skip.md delete mode 100644 docs/Models/Requests/Smart.md delete mode 100644 docs/Models/Requests/Sort.md create mode 100644 docs/Models/Requests/SplitItemRequest.md create mode 100644 docs/Models/Requests/SplitItemResponse.md delete mode 100644 docs/Models/Requests/StartAllTasksResponse.md create mode 100644 docs/Models/Requests/StartAnalysisRequest.md create mode 100644 docs/Models/Requests/StartAnalysisResponse.md create mode 100644 docs/Models/Requests/StartBifGenerationRequest.md create mode 100644 docs/Models/Requests/StartBifGenerationResponse.md create mode 100644 docs/Models/Requests/StartTasksResponse.md create mode 100644 docs/Models/Requests/StartTranscodeSessionQueryParamLocation.md create mode 100644 docs/Models/Requests/StartTranscodeSessionQueryParamProtocol.md create mode 100644 docs/Models/Requests/StartTranscodeSessionQueryParamSubtitles.md create mode 100644 docs/Models/Requests/StartTranscodeSessionRequest.md create mode 100644 docs/Models/Requests/StartTranscodeSessionResponse.md delete mode 100644 docs/Models/Requests/StartUniversalTranscodeRequest.md delete mode 100644 docs/Models/Requests/StartUniversalTranscodeResponse.md delete mode 100644 docs/Models/Requests/StatisticsBandwidth.md delete mode 100644 docs/Models/Requests/StatisticsMedia.md delete mode 100644 docs/Models/Requests/StatisticsResources.md create mode 100644 docs/Models/Requests/StopAllRefreshesResponse.md delete mode 100644 docs/Models/Requests/StopAllTasksResponse.md create mode 100644 docs/Models/Requests/StopDVRReloadRequest.md create mode 100644 docs/Models/Requests/StopDVRReloadResponse.md create mode 100644 docs/Models/Requests/StopScanRequest.md create mode 100644 docs/Models/Requests/StopScanResponse.md create mode 100644 docs/Models/Requests/StopTasksResponse.md delete mode 100644 docs/Models/Requests/StopTranscodeSessionRequest.md delete mode 100644 docs/Models/Requests/StopTranscodeSessionResponse.md delete mode 100644 docs/Models/Requests/Stream.md delete mode 100644 docs/Models/Requests/Subscription.md create mode 100644 docs/Models/Requests/SubscriptionTemplate.md create mode 100644 docs/Models/Requests/Subtitles.md delete mode 100644 docs/Models/Requests/Tag.md create mode 100644 docs/Models/Requests/Task.md delete mode 100644 docs/Models/Requests/TaskName.md create mode 100644 docs/Models/Requests/TerminateSessionRequest.md create mode 100644 docs/Models/Requests/TerminateSessionResponse.md delete mode 100644 docs/Models/Requests/Tonight.md create mode 100644 docs/Models/Requests/Transcode.md create mode 100644 docs/Models/Requests/TranscodeImageRequest.md create mode 100644 docs/Models/Requests/TranscodeImageResponse.md create mode 100644 docs/Models/Requests/TranscodeJob.md delete mode 100644 docs/Models/Requests/TranscodeSession.md create mode 100644 docs/Models/Requests/TranscodeSubtitlesRequest.md create mode 100644 docs/Models/Requests/TranscodeSubtitlesResponse.md delete mode 100644 docs/Models/Requests/Trials.md create mode 100644 docs/Models/Requests/TriggerFallbackRequest.md create mode 100644 docs/Models/Requests/TriggerFallbackResponse.md create mode 100644 docs/Models/Requests/TuneChannelRequest.md create mode 100644 docs/Models/Requests/TuneChannelResponse.md create mode 100644 docs/Models/Requests/UnmatchRequest.md create mode 100644 docs/Models/Requests/UnmatchResponse.md create mode 100644 docs/Models/Requests/UnscrobbleRequest.md create mode 100644 docs/Models/Requests/UnscrobbleResponse.md create mode 100644 docs/Models/Requests/UnshuffleRequest.md create mode 100644 docs/Models/Requests/UnshuffleResponse.md create mode 100644 docs/Models/Requests/UpdateHubVisibilityRequest.md create mode 100644 docs/Models/Requests/UpdateHubVisibilityResponse.md create mode 100644 docs/Models/Requests/UpdateItemArtworkRequest.md create mode 100644 docs/Models/Requests/UpdateItemArtworkResponse.md create mode 100644 docs/Models/Requests/UpdateItemsRequest.md create mode 100644 docs/Models/Requests/UpdateItemsResponse.md delete mode 100644 docs/Models/Requests/UpdatePlayProgressRequest.md delete mode 100644 docs/Models/Requests/UpdatePlayProgressResponse.md delete mode 100644 docs/Models/Requests/Upscale.md delete mode 100644 docs/Models/Requests/User.md delete mode 100644 docs/Models/Requests/UserProfile.md create mode 100644 docs/Models/Requests/VoiceSearchHubsMediaContainer.md create mode 100644 docs/Models/Requests/VoiceSearchHubsRequest.md create mode 100644 docs/Models/Requests/VoiceSearchHubsResponse.md create mode 100644 docs/Models/Requests/VoiceSearchHubsResponseBody.md delete mode 100644 docs/Models/Requests/WatchedIndicator.md create mode 100644 docs/Models/Requests/WriteLogResponse.md create mode 100644 docs/Models/Requests/WriteMessageRequest.md create mode 100644 docs/Models/Requests/WriteMessageResponse.md delete mode 100644 docs/Models/Requests/Writer.md delete mode 100644 docs/sdks/authentication/README.md create mode 100644 docs/sdks/collections/README.md create mode 100644 docs/sdks/content/README.md create mode 100644 docs/sdks/devices/README.md create mode 100644 docs/sdks/downloadqueue/README.md create mode 100644 docs/sdks/dvrs/README.md create mode 100644 docs/sdks/epg/README.md create mode 100644 docs/sdks/events/README.md create mode 100644 docs/sdks/general/README.md create mode 100644 docs/sdks/librarycollections/README.md create mode 100644 docs/sdks/libraryplaylists/README.md create mode 100644 docs/sdks/livetv/README.md delete mode 100644 docs/sdks/media/README.md create mode 100644 docs/sdks/playlist/README.md delete mode 100644 docs/sdks/playlists/README.md create mode 100644 docs/sdks/playqueue/README.md delete mode 100644 docs/sdks/plex/README.md delete mode 100644 docs/sdks/plexapi/README.md create mode 100644 docs/sdks/preferences/README.md create mode 100644 docs/sdks/provider/README.md create mode 100644 docs/sdks/rate/README.md delete mode 100644 docs/sdks/server/README.md delete mode 100644 docs/sdks/sessions/README.md delete mode 100644 docs/sdks/statistics/README.md create mode 100644 docs/sdks/status/README.md create mode 100644 docs/sdks/subscriptions/README.md create mode 100644 docs/sdks/timeline/README.md create mode 100644 docs/sdks/transcoder/README.md create mode 100644 docs/sdks/ultrablur/README.md delete mode 100644 docs/sdks/users/README.md delete mode 100644 docs/sdks/video/README.md delete mode 100644 docs/sdks/watchlist/README.md diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index e5f2f26..0436378 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,974 +1,863 @@ lockVersion: 2.0.0 id: 5a8dbcbc-e0ee-41f0-9d84-b8b50567d1e9 management: - docChecksum: addaf2dfdac23cef2e234b64492b9c90 - docVersion: 0.0.3 - speakeasyVersion: 1.615.2 - generationVersion: 2.698.4 - releaseVersion: 0.17.0 - configChecksum: 7f0dd0408cb0f26d25de26ed646400b6 + docChecksum: 00ad23b8fb2b1d75045b419bb162f542 + docVersion: 1.1.1 + speakeasyVersion: 1.639.3 + generationVersion: 2.730.5 + releaseVersion: 0.18.0 + configChecksum: cdd37c8af5b11d67ab5f35503580fd0c repoURL: https://github.com/LukeHagar/plexcsharp.git repoSubDirectory: . published: true features: csharp: additionalDependencies: 0.1.0 + additionalProperties: 0.0.1 constsAndDefaults: 0.0.1 - core: 3.12.2 - deprecations: 2.81.2 - enums: 2.82.0 - errors: 1.0.0 - flattening: 2.81.3 + core: 3.15.1 + examples: 2.81.6 globalSecurity: 2.83.8 globalSecurityCallbacks: 0.1.0 globalSecurityFlattening: 0.1.0 globalServerURLs: 2.82.4 + globals: 2.82.1 intellisenseMarkdownSupport: 0.1.0 - methodArguments: 0.2.0 - methodServerURLs: 2.82.1 + methodArguments: 0.2.1 nameOverrides: 2.81.2 - nullables: 0.1.1 - openEnums: 0.1.1 responseFormat: 0.0.4 sdkHooks: 0.2.0 - unions: 0.2.2 + unions: 1.1.0 generatedFiles: - .gitattributes - LukeHagar.PlexAPI.SDK.sln - LukeHagar/PlexAPI/SDK/Activities.cs - - LukeHagar/PlexAPI/SDK/Authentication.cs - LukeHagar/PlexAPI/SDK/Butler.cs + - LukeHagar/PlexAPI/SDK/Collections.cs + - LukeHagar/PlexAPI/SDK/Content.cs + - LukeHagar/PlexAPI/SDK/DVRs.cs + - LukeHagar/PlexAPI/SDK/Devices.cs + - LukeHagar/PlexAPI/SDK/DownloadQueue.cs + - LukeHagar/PlexAPI/SDK/Epg.cs + - LukeHagar/PlexAPI/SDK/Events.cs + - LukeHagar/PlexAPI/SDK/General.cs - LukeHagar/PlexAPI/SDK/Hooks/HookTypes.cs - LukeHagar/PlexAPI/SDK/Hooks/SDKHooks.cs - LukeHagar/PlexAPI/SDK/Hubs.cs - LukeHagar/PlexAPI/SDK/Library.cs + - LukeHagar/PlexAPI/SDK/LibraryCollections.cs + - LukeHagar/PlexAPI/SDK/LibraryPlaylists.cs + - LukeHagar/PlexAPI/SDK/LiveTV.cs - LukeHagar/PlexAPI/SDK/Log.cs - LukeHagar/PlexAPI/SDK/LukeHagar.PlexAPI.SDK.csproj - - LukeHagar/PlexAPI/SDK/Media.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Accepts.cs + - LukeHagar/PlexAPI/SDK/Models/Components/AdvancedSubtitles.cs + - LukeHagar/PlexAPI/SDK/Models/Components/AiringsType.cs + - LukeHagar/PlexAPI/SDK/Models/Components/BoolInt.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Channel.cs + - LukeHagar/PlexAPI/SDK/Models/Components/ChannelMapping.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Composite.cs + - LukeHagar/PlexAPI/SDK/Models/Components/CompositeMedia.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Crop.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Decision.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Default.cs + - LukeHagar/PlexAPI/SDK/Models/Components/DefaultDirection.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Device.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Directory.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Dvr.cs + - LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200.cs + - LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Filter.cs + - LukeHagar/PlexAPI/SDK/Models/Components/FilterPivot.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Format.cs + - LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200.cs + - LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200Hub.cs + - LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200MediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200.cs + - LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200MediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200Metadata.cs + - LukeHagar/PlexAPI/SDK/Models/Components/HomeVisibility.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Hub.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Image.cs + - LukeHagar/PlexAPI/SDK/Models/Components/ImageType.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Items.cs + - LukeHagar/PlexAPI/SDK/Models/Components/LibrarySection.cs + - LukeHagar/PlexAPI/SDK/Models/Components/LibrarySectionLocation.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Lineup.cs + - LukeHagar/PlexAPI/SDK/Models/Components/LineupType.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Location.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Media.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtwork.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkMetadata.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkType.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecision.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionDecision.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionLocation.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMedia.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMetadata.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionPart.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionStream.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDevice.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDeviceDevice.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDeviceMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDirectory.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDirectoryMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithHubs.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithHubsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithLineup.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithLineupMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithMetadata.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithMetadataMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithNestedMetadata.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithNestedMetadataMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadata.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadataMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadataMetadata.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSettings.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSettingsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSubscription.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSubscriptionMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaGrabOperation.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaQuery.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MediaSubscription.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Metadata.cs + - LukeHagar/PlexAPI/SDK/Models/Components/MetadataItem.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Part.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Pivot.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Player.cs + - LukeHagar/PlexAPI/SDK/Models/Components/PlaylistType.cs + - LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200.cs + - LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200MediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200Type.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Protocol.cs + - LukeHagar/PlexAPI/SDK/Models/Components/RecommendationsVisibility.cs + - LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200.cs + - LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200Directory.cs + - LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200MediaContainer.cs - LukeHagar/PlexAPI/SDK/Models/Components/Security.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsPlaylistsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesUpdaterErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesActivitiesErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesUpdaterErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsPlaylistsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistPlaylistsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistPlaylistsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailLogErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/Errors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsServerErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsStatisticsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageMediaErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksButlerErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataPlexErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesServerErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataPlexErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsHubsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataPlexErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsHubsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersServerErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountServerErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPinBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPinErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsPlaylistsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistPlaylistsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsPlaylistsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoServerErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsStatisticsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsSearchErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesActivitiesErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerIdentityRequestTimeout.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListServerErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesServerErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesPlexErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistorySessionsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsSessionsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationAuthenticationErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsStatisticsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageMediaErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineVideoErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdPlexErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsAuthenticationErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsSessionsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenAuthenticationErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusUpdaterErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsPlexErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersUsersErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListWatchlistErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/LogLineBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/LogLineErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/LogLineLogErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/LogLineUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineLogErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedMediaErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedMediaErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchSearchErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchSearchErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchUnauthorized.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Session.cs + - LukeHagar/PlexAPI/SDK/Models/Components/SessionLocation.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Setting.cs + - LukeHagar/PlexAPI/SDK/Models/Components/SlashGetResponses200.cs + - LukeHagar/PlexAPI/SDK/Models/Components/SlashGetResponses200MediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Sort.cs + - LukeHagar/PlexAPI/SDK/Models/Components/SortDefault.cs + - LukeHagar/PlexAPI/SDK/Models/Components/SortPivot.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Status.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Stream.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Subtitles.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Tag.cs + - LukeHagar/PlexAPI/SDK/Models/Components/TranscodeSession.cs + - LukeHagar/PlexAPI/SDK/Models/Components/TranscodeType.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Type.cs + - LukeHagar/PlexAPI/SDK/Models/Components/User.cs + - LukeHagar/PlexAPI/SDK/Models/Components/Value.cs - LukeHagar/PlexAPI/SDK/Models/Errors/PlexAPIError.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataAuthenticationErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataUnauthorized.cs - LukeHagar/PlexAPI/SDK/Models/Errors/ResponseValidationException.cs - LukeHagar/PlexAPI/SDK/Models/Errors/SDKException.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksButlerErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskButlerErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeVideoErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksButlerErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskButlerErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionSessionsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressMediaErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistPlaylistsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistPlaylistsErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistUnauthorized.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Account.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Action.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/ActiveDirection.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Activity.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/AllLibraries.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/AllowCameraUpload.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/AllowChannels.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/AllowSubtitleAdmin.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/AllowSync.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/AllowTuners.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddCollectionItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddCollectionItemsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRDVR.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRDVRsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddExtrasRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddExtrasResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupDVR.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupDVRsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistItemsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddProviderRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddProviderResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddSectionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddSectionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddSubtitlesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddSubtitlesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddToPlayQueueRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddToPlayQueueResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AddedQueueItems.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AdvancedSubtitles.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AnalyzeMetadataRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AnalyzeMetadataResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/ApplyUpdatesRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/ApplyUpdatesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Args.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Attributes.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/AutoSelectSubtitle.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Billing.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AutocompleteRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/AutocompleteResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Bandwidth.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Bandwidths.cs - LukeHagar/PlexAPI/SDK/Models/Requests/ButlerTask.cs - LukeHagar/PlexAPI/SDK/Models/Requests/ButlerTasks.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/CancelServerActivitiesRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/CancelServerActivitiesResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Chapter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/CheckForUpdatesRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/CheckForUpdatesResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistContentsRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistContentsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Collection.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Connections.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Context.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CancelActivityRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CancelActivityResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CancelGrabRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CancelGrabResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CancelRefreshRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CancelRefreshResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ChannelMapping.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ChannelMappingByKey.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CheckUpdatesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CheckUpdatesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ChromaSubsampling.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CleanBundlesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlayQueueRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlayQueueResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistItemsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapChannelMapping.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ConnectWebSocketRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ConnectWebSocketResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Connection.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Country.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistQueryParamType.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateCollectionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateCollectionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateCustomHubRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateCustomHubResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateDVRRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateDVRResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerType.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueResponseBody.cs - LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/DefaultDirection.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/DefaultSubtitleAccessibility.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/DefaultSubtitleForced.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibraryRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibraryResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionQueryParamPrefs.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DecisionResult.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCachesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionItemResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCustomHubRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCustomHubResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteDVRRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteDVRResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteHistoryRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteHistoryResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIndexesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIndexesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIntrosRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIntrosResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibrarySectionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibrarySectionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupDVR.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupDVRsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMarkerRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMarkerResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaItemResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaProviderRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaProviderResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMetadataItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMetadataItemResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlayQueueItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlayQueueItemResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistItemResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteStreamRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteStreamResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteSubscriptionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeleteSubscriptionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DetectAdsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DetectAdsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DetectCreditsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DetectCreditsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DetectIntrosRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DetectIntrosResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DetectVoiceActivityRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DetectVoiceActivityResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Device.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Director.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DeviceChannel.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Directory.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Download.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/EnablePaperTrailResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Extras.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DiscoverDevicesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DownloadQueue.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/DownloadQueueItem.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Dvr.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EditMarkerRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EditMarkerResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EditMetadataItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EditMetadataItemResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionQueryParamPrefs.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesQueryParamPrefs.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Element.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EmptyTrashRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EmptyTrashResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EnablePapertrailRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/EnablePapertrailResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Extension.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Feature.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Field.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/FieldType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Filter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/FlattenSeasons.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Force.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Friend.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Genre.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GeoData.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryDirectory.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryQueryParamType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesDirectory.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesLocation.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsAccount.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsDevice.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetBannerImageRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetBannerImageResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetButlerTasksResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetButlerTasksResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetCompanionsDataResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryDirectory.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryQueryParamType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetFileHashRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetFileHashResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryDirectory.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryQueryParamType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGeoDataGeoData.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGeoDataResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetHomeDataResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetHomeDataResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsDirectory.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsField.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsFieldType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsFilter.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Flavor.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Format.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GenerateThumbsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GenerateThumbsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAlbumsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAlbumsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllItemLeavesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllItemLeavesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLeavesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLeavesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllPreferencesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllSubscriptionsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllSubscriptionsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetArtsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetArtsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAugmentationStatusRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAugmentationStatusResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksType.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCategoriesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCategoriesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetChapterImageRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetChapterImageResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetClusterRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetClusterResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionImageRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionImageResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionItemsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCommonRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCommonResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLineupsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLineupsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsCountry.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRDVR.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRDVRsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDeviceDetailsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDeviceDetailsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueDownloadQueue.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsDecisionResult.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsDownloadQueueItem.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsStatus.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsTranscode.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueStatus.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetExtrasRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetExtrasResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetFileRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetFileResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersDirectory.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersDirectory.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetHistoryItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetHistoryItemResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetImageFromBifRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetImageFromBifResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetImageRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetImageResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkPathParamElement.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetItemDecisionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetItemDecisionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetItemTreeRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetItemTreeResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsOperator.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsSort.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsCountry.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsDirector.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsGenre.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsHub.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsPart.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsRole.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsWriter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsActiveDirection.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsCollection.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsCountry.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsDefaultDirection.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsDirector.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsField.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFieldType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFilter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsGenre.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsGuids.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsHasThumbnail.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsImage.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryOptimizedForStreaming.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryResponseType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLocation.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMeta.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOperator.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOptimizedForStreaming.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOptimizedForStreaming1.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsPart.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsProducer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsQueryParamIncludeMeta.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsQueryParamType.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsRole.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsSimilar.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsSort.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsUltraBlurColors.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsWriter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllActiveDirection.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllCollection.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllCountry.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllDefaultDirection.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllDirector.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllField.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllFieldType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllFilter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllGenre.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllGuids.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllHasThumbnail.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllImage.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryOptimizedForStreaming.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryResponseType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMeta.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOperator.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming1.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreamingLibrary1.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllPart.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllQueryParamIncludeMeta.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllQueryParamType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllRole.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllSort.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllStream.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllUltraBlurColors.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllWriter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataAttributes.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataChapter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataCountry.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataDirector.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataExtras.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataGenre.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataGuids.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataHasThumbnail.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataImage.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLocation.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMarker.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming1.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataPart.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataProducer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRatings.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRole.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataSimilar.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataStream.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataUltraBlurColors.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataWriter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersDirectory.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenDirectory.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMyPlexAccountResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetMyPlexAccountResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPinAuthPinContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPinRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPinResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsCountry.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsDirector.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsGenre.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsPart.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsQueryParamType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsRole.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsWriter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistMetadata.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryMatchesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryMatchesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetLiveTVSessionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetLiveTVSessionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPartRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPartResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataHubsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataHubsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataItemResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetNotificationsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetNotificationsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPartIndexRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPartIndexResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlayQueueRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlayQueueResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorDevice.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsMetadata.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorLocation.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorScope.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorState.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorStatus.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorSubtitles.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorType.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsType.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistItemsResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedActiveDirection.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedDefaultDirection.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedField.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedFieldType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedFilter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedHubsResponseType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedHubsType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedImage.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryCountry.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryDirector.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryFilter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryGenre.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryPart.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryRole.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryWriter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOperator.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedSort.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRefreshLibraryMetadataRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetRefreshLibraryMetadataResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetResizedPhotoRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetResizedPhotoResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesCountry.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesDirector.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesDirectory.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesFlattenSeasons.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesGenre.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesGuids.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesHasThumbnail.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesImage.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLibraryOptimizedForStreaming.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLibraryType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLocation.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming1.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreamingLibrary1.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesPart.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesQueryParamIncludeCollections.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesQueryParamIncludeExternalMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesRole.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesShowOrdering.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesUltraBlurColors.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesWriter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryQueryParamType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsCountry.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsDirector.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsGenre.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsPart.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsRole.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsWriter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerCapabilitiesResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerCapabilitiesResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListServer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerResourcesRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerResourcesResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsPart.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPostplayHubsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPostplayHubsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPreferenceRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPreferenceResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetRandomArtworkRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetRandomArtworkResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedHubsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedHubsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionImageRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionImageResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionPreferencesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionPreferencesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsPrefsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsPrefsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerInfoRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetServerInfoResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionPlaylistIndexRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionPlaylistIndexResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionSegmentRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionSegmentResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsStream.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsUser.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicPathRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicPathResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicallySimilarRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicallySimilarResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationMediaContainer.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsDevice.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbImageRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbImageResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTimelineRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTimelineResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdAuthPinContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdGeoData.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsAuthenticationResponseStatus.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsAuthenticationStatus.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsStatus.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsSubscription.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsUserPlexAccount.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentCountry.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentGenre.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentGuids.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentQueryParamIncludeGuids.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentQueryParamType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentRole.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentUser.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenQueryParamType.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsLevel.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLoudnessRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLoudnessResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSubscriptionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetSubscriptionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetTasksResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetTasksResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenMediaContainer.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetUserFriendsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersServer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Guids.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/HasThumbnail.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Hidden.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Home.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusState.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Hints.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/HomeVisibility.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Hub.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Image.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/IncludeAdvanced.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/IncludeCollections.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/IncludeDetails.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/IncludeExternalMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/IncludeGuids.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/IncludeHttps.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/IncludeIPv6.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/IncludeMeta.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/IncludeRelay.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/InternalPaymentMethod.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Index.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/IngestTransientItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/IngestTransientItemResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Item.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Language.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Level.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Libtype.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Lineup.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/LineupType.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListContentRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListContentResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsDVRsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListDevicesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsStatus.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListLineupsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListLineupsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListMatchesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListMatchesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListMomentsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListMomentsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListPersonMediaRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListPersonMediaResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryMetadata.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaylistsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaylistsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListSimilarRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListSimilarResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListSonicallySimilarRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListSonicallySimilarResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersResponseBody.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Location.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/LogLineRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/LogLineResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/LogMultiLineResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/MailingListStatus.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MakeDecisionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MakeDecisionResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/MarkPlayedRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/MarkPlayedResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/MarkUnplayedRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/MarkUnplayedResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Marker.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Media.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MatchItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MatchItemResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/MediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/MediaProvider.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/MediaReviewsVisibility.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Meta.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MediaGrabber.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MediaSettings.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MediaSubscription.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MergeItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MergeItemsResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Metadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/MinSize.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/MyPlex.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/One.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/OnlyTransient.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Operator.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming1.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Owned.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Part.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PastSubscription.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PathParamTaskName.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Pending.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PerformSearchRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PerformSearchResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PerformVoiceSearchRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PerformVoiceSearchResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Pivot.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Player.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MoveCollectionItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MoveCollectionItemResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MoveHubRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MoveHubResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MovePlayQueueItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MovePlayQueueItemResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MovePlaylistItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/MovePlaylistItemResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/OptimizeDatabaseRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/OptimizeDatabaseResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Params.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/PathParamElement.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/PathParamIndex.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/PathParamTask.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/PlayQueueGenerator.cs - LukeHagar/PlexAPI/SDK/Models/Requests/PlaylistType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PlexDevice.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaArtsRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaArtsResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaPosterRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaPosterResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationResponseStatus.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationStatus.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationSubscription.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAutoSelectSubtitle.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataDefaultSubtitleAccessibility.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataDefaultSubtitleForced.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataMailingListStatus.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataMediaReviewsVisibility.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataRequestBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataServices.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataState.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataStatus.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataSubscription.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataUserPlexAccount.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataUserProfile.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataWatchedIndicator.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Producer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Protected.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Policy.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Prefs.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ProcessSubscriptionsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ProcessingState.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ProcessingStateContext.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Protocol.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Provider.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamFilter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamForce.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeCollections.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeExternalMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeGuids.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeMeta.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamOnlyTransient.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamSmart.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamArgs.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamAttributes.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamLocation.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamPrefs.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamProtocol.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamSubtitles.cs - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamType.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Rating.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Ratings.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RecommendationsVisibility.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RefreshItemsMetadataRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RefreshItemsMetadataResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RefreshPlaylistRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RefreshPlaylistResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RefreshProvidersResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionsMetadataRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionsMetadataResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Release.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/ResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Restricted.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Role.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ReloadGuideRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ReloadGuideResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRDVR.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRDVRsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDownloadQueueItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDownloadQueueItemsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ReorderSubscriptionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ReorderSubscriptionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ReportRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ReportResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ReportResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ResetPlayQueueRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ResetPlayQueueResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ResetSectionDefaultsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ResetSectionDefaultsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RestartProcessingDownloadQueueItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/RestartProcessingDownloadQueueItemsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ScanRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ScanResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Scope.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/SearchResult.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/SearchTypes.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Server.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Services.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Session.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Setting.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/SharedServers.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/SharedSources.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/ShowOrdering.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Similar.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Skip.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Smart.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Sort.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/StartAllTasksResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetChannelmapRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetChannelmapResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesDVR.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesDVRsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetDevicePreferencesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetDevicePreferencesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetItemArtworkRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetItemArtworkResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetItemPreferencesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetItemPreferencesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetPreferencesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetPreferencesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetRatingRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetRatingResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesQueryParamPrefs.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamOffsetRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamOffsetResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamSelectionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamSelectionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ShuffleRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/ShuffleResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SplitItemRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SplitItemResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StartAnalysisRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StartAnalysisResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StartBifGenerationRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StartBifGenerationResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/StartTaskRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/StartTaskResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/StartUniversalTranscodeRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/StartUniversalTranscodeResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StartTasksResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamLocation.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamProtocol.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamSubtitles.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/State.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsBandwidth.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsResources.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Status.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/StopAllTasksResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StopAllRefreshesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StopDVRReloadRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StopDVRReloadResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StopScanRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StopScanResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/StopTaskRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/StopTaskResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/StopTranscodeSessionRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/StopTranscodeSessionResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Stream.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Subscription.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Tag.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/TaskName.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Tonight.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSession.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Trials.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/StopTasksResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/SubscriptionTemplate.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Subtitles.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Task.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/TerminateSessionRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/TerminateSessionResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Transcode.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeImageRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeImageResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeJob.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSubtitlesRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSubtitlesResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/TriggerFallbackRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/TriggerFallbackResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/TuneChannelRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/TuneChannelResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Type.cs - LukeHagar/PlexAPI/SDK/Models/Requests/UltraBlurColors.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlayProgressRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlayProgressResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/UnmatchRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/UnmatchResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/UnscrobbleRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/UnscrobbleResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/UnshuffleRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/UnshuffleResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/UpdateHubVisibilityRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/UpdateHubVisibilityResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemArtworkRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemArtworkResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemsResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlaylistRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlaylistResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/UploadPlaylistRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/UploadPlaylistResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Upscale.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/User.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/UserProfile.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/WatchedIndicator.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/Writer.cs - - LukeHagar/PlexAPI/SDK/Playlists.cs - - LukeHagar/PlexAPI/SDK/Plex.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsMediaContainer.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsResponseBody.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/WriteLogResponse.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/WriteMessageRequest.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/WriteMessageResponse.cs + - LukeHagar/PlexAPI/SDK/PlayQueue.cs + - LukeHagar/PlexAPI/SDK/Playlist.cs - LukeHagar/PlexAPI/SDK/PlexAPI.cs + - LukeHagar/PlexAPI/SDK/Preferences.cs + - LukeHagar/PlexAPI/SDK/Provider.cs + - LukeHagar/PlexAPI/SDK/Rate.cs - LukeHagar/PlexAPI/SDK/SDKConfig.cs - LukeHagar/PlexAPI/SDK/Search.cs - - LukeHagar/PlexAPI/SDK/Server.cs - - LukeHagar/PlexAPI/SDK/Sessions.cs - - LukeHagar/PlexAPI/SDK/Statistics.cs + - LukeHagar/PlexAPI/SDK/Status.cs + - LukeHagar/PlexAPI/SDK/Subscriptions.cs + - LukeHagar/PlexAPI/SDK/Timeline.cs + - LukeHagar/PlexAPI/SDK/Transcoder.cs + - LukeHagar/PlexAPI/SDK/UltraBlur.cs - LukeHagar/PlexAPI/SDK/Updater.cs - - LukeHagar/PlexAPI/SDK/Users.cs - LukeHagar/PlexAPI/SDK/Utils/AnyDeserializer.cs - LukeHagar/PlexAPI/SDK/Utils/BigIntStrConverter.cs - LukeHagar/PlexAPI/SDK/Utils/DecimalStrConverter.cs @@ -987,939 +876,827 @@ generatedFiles: - LukeHagar/PlexAPI/SDK/Utils/SpeakeasyMetadata.cs - LukeHagar/PlexAPI/SDK/Utils/URLBuilder.cs - LukeHagar/PlexAPI/SDK/Utils/Utilities.cs - - LukeHagar/PlexAPI/SDK/Video.cs - - LukeHagar/PlexAPI/SDK/Watchlist.cs - NUGET.md - USAGE.md + - docs/Models/Components/Accepts.md + - docs/Models/Components/AdvancedSubtitles.md + - docs/Models/Components/AiringsType.md + - docs/Models/Components/BoolInt.md + - docs/Models/Components/Channel.md + - docs/Models/Components/ChannelMapping.md + - docs/Models/Components/Composite.md + - docs/Models/Components/CompositeMedia.md + - docs/Models/Components/Crop.md + - docs/Models/Components/Decision.md + - docs/Models/Components/Default.md + - docs/Models/Components/DefaultDirection.md + - docs/Models/Components/Device.md + - docs/Models/Components/Directory.md + - docs/Models/Components/Dvr.md + - docs/Models/Components/DvrRequestHandlerSlashGetResponses200.md + - docs/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainer.md + - docs/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer.md + - docs/Models/Components/Filter.md + - docs/Models/Components/FilterPivot.md + - docs/Models/Components/Format.md + - docs/Models/Components/GetResponses200.md + - docs/Models/Components/GetResponses200Hub.md + - docs/Models/Components/GetResponses200MediaContainer.md + - docs/Models/Components/HistoryAllGetResponses200.md + - docs/Models/Components/HistoryAllGetResponses200MediaContainer.md + - docs/Models/Components/HistoryAllGetResponses200Metadata.md + - docs/Models/Components/HomeVisibility.md + - docs/Models/Components/Hub.md + - docs/Models/Components/Image.md + - docs/Models/Components/ImageType.md + - docs/Models/Components/Items.md + - docs/Models/Components/LibrarySection.md + - docs/Models/Components/LibrarySectionLocation.md + - docs/Models/Components/Lineup.md + - docs/Models/Components/LineupType.md + - docs/Models/Components/Location.md + - docs/Models/Components/Media.md + - docs/Models/Components/MediaContainer.md + - docs/Models/Components/MediaContainerWithArtwork.md + - docs/Models/Components/MediaContainerWithArtworkMediaContainer.md + - docs/Models/Components/MediaContainerWithArtworkMetadata.md + - docs/Models/Components/MediaContainerWithArtworkType.md + - docs/Models/Components/MediaContainerWithDecision.md + - docs/Models/Components/MediaContainerWithDecisionDecision.md + - docs/Models/Components/MediaContainerWithDecisionLocation.md + - docs/Models/Components/MediaContainerWithDecisionMedia.md + - docs/Models/Components/MediaContainerWithDecisionMediaContainer.md + - docs/Models/Components/MediaContainerWithDecisionMetadata.md + - docs/Models/Components/MediaContainerWithDecisionPart.md + - docs/Models/Components/MediaContainerWithDecisionStream.md + - docs/Models/Components/MediaContainerWithDevice.md + - docs/Models/Components/MediaContainerWithDeviceDevice.md + - docs/Models/Components/MediaContainerWithDeviceMediaContainer.md + - docs/Models/Components/MediaContainerWithDirectory.md + - docs/Models/Components/MediaContainerWithDirectoryMediaContainer.md + - docs/Models/Components/MediaContainerWithHubs.md + - docs/Models/Components/MediaContainerWithHubsMediaContainer.md + - docs/Models/Components/MediaContainerWithLineup.md + - docs/Models/Components/MediaContainerWithLineupMediaContainer.md + - docs/Models/Components/MediaContainerWithMetadata.md + - docs/Models/Components/MediaContainerWithMetadataMediaContainer.md + - docs/Models/Components/MediaContainerWithNestedMetadata.md + - docs/Models/Components/MediaContainerWithNestedMetadataMediaContainer.md + - docs/Models/Components/MediaContainerWithPlaylistMetadata.md + - docs/Models/Components/MediaContainerWithPlaylistMetadataMediaContainer.md + - docs/Models/Components/MediaContainerWithPlaylistMetadataMetadata.md + - docs/Models/Components/MediaContainerWithSettings.md + - docs/Models/Components/MediaContainerWithSettingsMediaContainer.md + - docs/Models/Components/MediaContainerWithSubscription.md + - docs/Models/Components/MediaContainerWithSubscriptionMediaContainer.md + - docs/Models/Components/MediaGrabOperation.md + - docs/Models/Components/MediaQuery.md + - docs/Models/Components/MediaSubscription.md + - docs/Models/Components/Metadata.md + - docs/Models/Components/MetadataItem.md + - docs/Models/Components/Part.md + - docs/Models/Components/Pivot.md + - docs/Models/Components/Player.md + - docs/Models/Components/PlaylistType.md + - docs/Models/Components/PostResponses200.md + - docs/Models/Components/PostResponses200MediaContainer.md + - docs/Models/Components/PostResponses200Type.md + - docs/Models/Components/Protocol.md + - docs/Models/Components/RecommendationsVisibility.md + - docs/Models/Components/RequestHandlerSlashGetResponses200.md + - docs/Models/Components/RequestHandlerSlashGetResponses200Directory.md + - docs/Models/Components/RequestHandlerSlashGetResponses200MediaContainer.md - docs/Models/Components/Security.md - - docs/Models/Errors/AddPlaylistContentsBadRequest.md - - docs/Models/Errors/AddPlaylistContentsErrors.md - - docs/Models/Errors/AddPlaylistContentsPlaylistsErrors.md - - docs/Models/Errors/AddPlaylistContentsUnauthorized.md - - docs/Models/Errors/ApplyUpdatesBadRequest.md - - docs/Models/Errors/ApplyUpdatesErrors.md - - docs/Models/Errors/ApplyUpdatesUnauthorized.md - - docs/Models/Errors/ApplyUpdatesUpdaterErrors.md - - docs/Models/Errors/CancelServerActivitiesActivitiesErrors.md - - docs/Models/Errors/CancelServerActivitiesBadRequest.md - - docs/Models/Errors/CancelServerActivitiesErrors.md - - docs/Models/Errors/CancelServerActivitiesUnauthorized.md - - docs/Models/Errors/CheckForUpdatesBadRequest.md - - docs/Models/Errors/CheckForUpdatesErrors.md - - docs/Models/Errors/CheckForUpdatesUnauthorized.md - - docs/Models/Errors/CheckForUpdatesUpdaterErrors.md - - docs/Models/Errors/ClearPlaylistContentsBadRequest.md - - docs/Models/Errors/ClearPlaylistContentsErrors.md - - docs/Models/Errors/ClearPlaylistContentsPlaylistsErrors.md - - docs/Models/Errors/ClearPlaylistContentsUnauthorized.md - - docs/Models/Errors/CreatePlaylistBadRequest.md - - docs/Models/Errors/CreatePlaylistErrors.md - - docs/Models/Errors/CreatePlaylistPlaylistsErrors.md - - docs/Models/Errors/CreatePlaylistUnauthorized.md - - docs/Models/Errors/DeleteLibraryBadRequest.md - - docs/Models/Errors/DeleteLibraryErrors.md - - docs/Models/Errors/DeleteLibraryLibraryErrors.md - - docs/Models/Errors/DeleteLibraryUnauthorized.md - - docs/Models/Errors/DeletePlaylistBadRequest.md - - docs/Models/Errors/DeletePlaylistErrors.md - - docs/Models/Errors/DeletePlaylistPlaylistsErrors.md - - docs/Models/Errors/DeletePlaylistUnauthorized.md - - docs/Models/Errors/EnablePaperTrailBadRequest.md - - docs/Models/Errors/EnablePaperTrailErrors.md - - docs/Models/Errors/EnablePaperTrailLogErrors.md - - docs/Models/Errors/EnablePaperTrailUnauthorized.md - - docs/Models/Errors/Errors.md - - docs/Models/Errors/GetActorsLibraryBadRequest.md - - docs/Models/Errors/GetActorsLibraryErrors.md - - docs/Models/Errors/GetActorsLibraryLibraryErrors.md - - docs/Models/Errors/GetActorsLibraryUnauthorized.md - - docs/Models/Errors/GetAllLibrariesBadRequest.md - - docs/Models/Errors/GetAllLibrariesErrors.md - - docs/Models/Errors/GetAllLibrariesLibraryErrors.md - - docs/Models/Errors/GetAllLibrariesUnauthorized.md - - docs/Models/Errors/GetAvailableClientsBadRequest.md - - docs/Models/Errors/GetAvailableClientsErrors.md - - docs/Models/Errors/GetAvailableClientsServerErrors.md - - docs/Models/Errors/GetAvailableClientsUnauthorized.md - - docs/Models/Errors/GetBandwidthStatisticsBadRequest.md - - docs/Models/Errors/GetBandwidthStatisticsErrors.md - - docs/Models/Errors/GetBandwidthStatisticsStatisticsErrors.md - - docs/Models/Errors/GetBandwidthStatisticsUnauthorized.md - - docs/Models/Errors/GetBannerImageBadRequest.md - - docs/Models/Errors/GetBannerImageErrors.md - - docs/Models/Errors/GetBannerImageMediaErrors.md - - docs/Models/Errors/GetBannerImageUnauthorized.md - - docs/Models/Errors/GetButlerTasksBadRequest.md - - docs/Models/Errors/GetButlerTasksButlerErrors.md - - docs/Models/Errors/GetButlerTasksErrors.md - - docs/Models/Errors/GetButlerTasksUnauthorized.md - - docs/Models/Errors/GetCompanionsDataBadRequest.md - - docs/Models/Errors/GetCompanionsDataErrors.md - - docs/Models/Errors/GetCompanionsDataPlexErrors.md - - docs/Models/Errors/GetCompanionsDataUnauthorized.md - - docs/Models/Errors/GetCountriesLibraryBadRequest.md - - docs/Models/Errors/GetCountriesLibraryErrors.md - - docs/Models/Errors/GetCountriesLibraryLibraryErrors.md - - docs/Models/Errors/GetCountriesLibraryUnauthorized.md - - docs/Models/Errors/GetDevicesBadRequest.md - - docs/Models/Errors/GetDevicesErrors.md - - docs/Models/Errors/GetDevicesServerErrors.md - - docs/Models/Errors/GetDevicesUnauthorized.md - - docs/Models/Errors/GetFileHashBadRequest.md - - docs/Models/Errors/GetFileHashErrors.md - - docs/Models/Errors/GetFileHashLibraryErrors.md - - docs/Models/Errors/GetFileHashUnauthorized.md - - docs/Models/Errors/GetGenresLibraryBadRequest.md - - docs/Models/Errors/GetGenresLibraryErrors.md - - docs/Models/Errors/GetGenresLibraryLibraryErrors.md - - docs/Models/Errors/GetGenresLibraryUnauthorized.md - - docs/Models/Errors/GetGeoDataBadRequest.md - - docs/Models/Errors/GetGeoDataErrors.md - - docs/Models/Errors/GetGeoDataPlexErrors.md - - docs/Models/Errors/GetGeoDataUnauthorized.md - - docs/Models/Errors/GetGlobalHubsBadRequest.md - - docs/Models/Errors/GetGlobalHubsErrors.md - - docs/Models/Errors/GetGlobalHubsHubsErrors.md - - docs/Models/Errors/GetGlobalHubsUnauthorized.md - - docs/Models/Errors/GetHomeDataBadRequest.md - - docs/Models/Errors/GetHomeDataErrors.md - - docs/Models/Errors/GetHomeDataPlexErrors.md - - docs/Models/Errors/GetHomeDataUnauthorized.md - - docs/Models/Errors/GetLibraryDetailsBadRequest.md - - docs/Models/Errors/GetLibraryDetailsErrors.md - - docs/Models/Errors/GetLibraryDetailsLibraryErrors.md - - docs/Models/Errors/GetLibraryDetailsUnauthorized.md - - docs/Models/Errors/GetLibraryHubsBadRequest.md - - docs/Models/Errors/GetLibraryHubsErrors.md - - docs/Models/Errors/GetLibraryHubsHubsErrors.md - - docs/Models/Errors/GetLibraryHubsUnauthorized.md - - docs/Models/Errors/GetLibraryItemsBadRequest.md - - docs/Models/Errors/GetLibraryItemsErrors.md - - docs/Models/Errors/GetLibraryItemsLibraryErrors.md - - docs/Models/Errors/GetLibraryItemsUnauthorized.md - - docs/Models/Errors/GetLibrarySectionsAllBadRequest.md - - docs/Models/Errors/GetLibrarySectionsAllErrors.md - - docs/Models/Errors/GetLibrarySectionsAllLibraryErrors.md - - docs/Models/Errors/GetLibrarySectionsAllUnauthorized.md - - docs/Models/Errors/GetMediaMetaDataBadRequest.md - - docs/Models/Errors/GetMediaMetaDataErrors.md - - docs/Models/Errors/GetMediaMetaDataLibraryErrors.md - - docs/Models/Errors/GetMediaMetaDataUnauthorized.md - - docs/Models/Errors/GetMediaProvidersBadRequest.md - - docs/Models/Errors/GetMediaProvidersErrors.md - - docs/Models/Errors/GetMediaProvidersServerErrors.md - - docs/Models/Errors/GetMediaProvidersUnauthorized.md - - docs/Models/Errors/GetMetadataChildrenBadRequest.md - - docs/Models/Errors/GetMetadataChildrenErrors.md - - docs/Models/Errors/GetMetadataChildrenLibraryErrors.md - - docs/Models/Errors/GetMetadataChildrenUnauthorized.md - - docs/Models/Errors/GetMyPlexAccountBadRequest.md - - docs/Models/Errors/GetMyPlexAccountErrors.md - - docs/Models/Errors/GetMyPlexAccountServerErrors.md - - docs/Models/Errors/GetMyPlexAccountUnauthorized.md - - docs/Models/Errors/GetPinBadRequest.md - - docs/Models/Errors/GetPinErrors.md - - docs/Models/Errors/GetPlaylistBadRequest.md - - docs/Models/Errors/GetPlaylistContentsBadRequest.md - - docs/Models/Errors/GetPlaylistContentsErrors.md - - docs/Models/Errors/GetPlaylistContentsPlaylistsErrors.md - - docs/Models/Errors/GetPlaylistContentsUnauthorized.md - - docs/Models/Errors/GetPlaylistErrors.md - - docs/Models/Errors/GetPlaylistPlaylistsErrors.md - - docs/Models/Errors/GetPlaylistUnauthorized.md - - docs/Models/Errors/GetPlaylistsBadRequest.md - - docs/Models/Errors/GetPlaylistsErrors.md - - docs/Models/Errors/GetPlaylistsPlaylistsErrors.md - - docs/Models/Errors/GetPlaylistsUnauthorized.md - - docs/Models/Errors/GetRecentlyAddedLibraryBadRequest.md - - docs/Models/Errors/GetRecentlyAddedLibraryErrors.md - - docs/Models/Errors/GetRecentlyAddedLibraryLibraryErrors.md - - docs/Models/Errors/GetRecentlyAddedLibraryUnauthorized.md - - docs/Models/Errors/GetRefreshLibraryMetadataBadRequest.md - - docs/Models/Errors/GetRefreshLibraryMetadataErrors.md - - docs/Models/Errors/GetRefreshLibraryMetadataLibraryErrors.md - - docs/Models/Errors/GetRefreshLibraryMetadataUnauthorized.md - - docs/Models/Errors/GetResizedPhotoBadRequest.md - - docs/Models/Errors/GetResizedPhotoErrors.md - - docs/Models/Errors/GetResizedPhotoServerErrors.md - - docs/Models/Errors/GetResizedPhotoUnauthorized.md - - docs/Models/Errors/GetResourcesStatisticsBadRequest.md - - docs/Models/Errors/GetResourcesStatisticsErrors.md - - docs/Models/Errors/GetResourcesStatisticsStatisticsErrors.md - - docs/Models/Errors/GetResourcesStatisticsUnauthorized.md - - docs/Models/Errors/GetSearchAllLibrariesBadRequest.md - - docs/Models/Errors/GetSearchAllLibrariesErrors.md - - docs/Models/Errors/GetSearchAllLibrariesLibraryErrors.md - - docs/Models/Errors/GetSearchAllLibrariesUnauthorized.md - - docs/Models/Errors/GetSearchLibraryBadRequest.md - - docs/Models/Errors/GetSearchLibraryErrors.md - - docs/Models/Errors/GetSearchLibraryLibraryErrors.md - - docs/Models/Errors/GetSearchLibraryUnauthorized.md - - docs/Models/Errors/GetSearchResultsBadRequest.md - - docs/Models/Errors/GetSearchResultsErrors.md - - docs/Models/Errors/GetSearchResultsSearchErrors.md - - docs/Models/Errors/GetSearchResultsUnauthorized.md - - docs/Models/Errors/GetServerActivitiesActivitiesErrors.md - - docs/Models/Errors/GetServerActivitiesBadRequest.md - - docs/Models/Errors/GetServerActivitiesErrors.md - - docs/Models/Errors/GetServerActivitiesUnauthorized.md - - docs/Models/Errors/GetServerCapabilitiesBadRequest.md - - docs/Models/Errors/GetServerCapabilitiesErrors.md - - docs/Models/Errors/GetServerCapabilitiesUnauthorized.md - - docs/Models/Errors/GetServerIdentityRequestTimeout.md - - docs/Models/Errors/GetServerListBadRequest.md - - docs/Models/Errors/GetServerListErrors.md - - docs/Models/Errors/GetServerListServerErrors.md - - docs/Models/Errors/GetServerListUnauthorized.md - - docs/Models/Errors/GetServerPreferencesBadRequest.md - - docs/Models/Errors/GetServerPreferencesErrors.md - - docs/Models/Errors/GetServerPreferencesServerErrors.md - - docs/Models/Errors/GetServerPreferencesUnauthorized.md - - docs/Models/Errors/GetServerResourcesBadRequest.md - - docs/Models/Errors/GetServerResourcesErrors.md - - docs/Models/Errors/GetServerResourcesPlexErrors.md - - docs/Models/Errors/GetServerResourcesUnauthorized.md - - docs/Models/Errors/GetSessionHistoryBadRequest.md - - docs/Models/Errors/GetSessionHistoryErrors.md - - docs/Models/Errors/GetSessionHistorySessionsErrors.md - - docs/Models/Errors/GetSessionHistoryUnauthorized.md - - docs/Models/Errors/GetSessionsBadRequest.md - - docs/Models/Errors/GetSessionsErrors.md - - docs/Models/Errors/GetSessionsSessionsErrors.md - - docs/Models/Errors/GetSessionsUnauthorized.md - - docs/Models/Errors/GetSourceConnectionInformationAuthenticationErrors.md - - docs/Models/Errors/GetSourceConnectionInformationBadRequest.md - - docs/Models/Errors/GetSourceConnectionInformationErrors.md - - docs/Models/Errors/GetSourceConnectionInformationUnauthorized.md - - docs/Models/Errors/GetStatisticsBadRequest.md - - docs/Models/Errors/GetStatisticsErrors.md - - docs/Models/Errors/GetStatisticsStatisticsErrors.md - - docs/Models/Errors/GetStatisticsUnauthorized.md - - docs/Models/Errors/GetThumbImageBadRequest.md - - docs/Models/Errors/GetThumbImageErrors.md - - docs/Models/Errors/GetThumbImageMediaErrors.md - - docs/Models/Errors/GetThumbImageUnauthorized.md - - docs/Models/Errors/GetTimelineBadRequest.md - - docs/Models/Errors/GetTimelineErrors.md - - docs/Models/Errors/GetTimelineUnauthorized.md - - docs/Models/Errors/GetTimelineVideoErrors.md - - docs/Models/Errors/GetTokenByPinIdBadRequest.md - - docs/Models/Errors/GetTokenByPinIdErrors.md - - docs/Models/Errors/GetTokenByPinIdPlexErrors.md - - docs/Models/Errors/GetTokenByPinIdResponseBody.md - - docs/Models/Errors/GetTokenDetailsAuthenticationErrors.md - - docs/Models/Errors/GetTokenDetailsBadRequest.md - - docs/Models/Errors/GetTokenDetailsErrors.md - - docs/Models/Errors/GetTokenDetailsUnauthorized.md - - docs/Models/Errors/GetTopWatchedContentBadRequest.md - - docs/Models/Errors/GetTopWatchedContentErrors.md - - docs/Models/Errors/GetTopWatchedContentLibraryErrors.md - - docs/Models/Errors/GetTopWatchedContentUnauthorized.md - - docs/Models/Errors/GetTranscodeSessionsBadRequest.md - - docs/Models/Errors/GetTranscodeSessionsErrors.md - - docs/Models/Errors/GetTranscodeSessionsSessionsErrors.md - - docs/Models/Errors/GetTranscodeSessionsUnauthorized.md - - docs/Models/Errors/GetTransientTokenAuthenticationErrors.md - - docs/Models/Errors/GetTransientTokenBadRequest.md - - docs/Models/Errors/GetTransientTokenErrors.md - - docs/Models/Errors/GetTransientTokenUnauthorized.md - - docs/Models/Errors/GetUpdateStatusBadRequest.md - - docs/Models/Errors/GetUpdateStatusErrors.md - - docs/Models/Errors/GetUpdateStatusUnauthorized.md - - docs/Models/Errors/GetUpdateStatusUpdaterErrors.md - - docs/Models/Errors/GetUserFriendsBadRequest.md - - docs/Models/Errors/GetUserFriendsErrors.md - - docs/Models/Errors/GetUserFriendsPlexErrors.md - - docs/Models/Errors/GetUserFriendsUnauthorized.md - - docs/Models/Errors/GetUsersBadRequest.md - - docs/Models/Errors/GetUsersErrors.md - - docs/Models/Errors/GetUsersUnauthorized.md - - docs/Models/Errors/GetUsersUsersErrors.md - - docs/Models/Errors/GetWatchListBadRequest.md - - docs/Models/Errors/GetWatchListErrors.md - - docs/Models/Errors/GetWatchListUnauthorized.md - - docs/Models/Errors/GetWatchListWatchlistErrors.md - - docs/Models/Errors/LogLineBadRequest.md - - docs/Models/Errors/LogLineErrors.md - - docs/Models/Errors/LogLineLogErrors.md - - docs/Models/Errors/LogLineUnauthorized.md - - docs/Models/Errors/LogMultiLineBadRequest.md - - docs/Models/Errors/LogMultiLineErrors.md - - docs/Models/Errors/LogMultiLineLogErrors.md - - docs/Models/Errors/LogMultiLineUnauthorized.md - - docs/Models/Errors/MarkPlayedBadRequest.md - - docs/Models/Errors/MarkPlayedErrors.md - - docs/Models/Errors/MarkPlayedMediaErrors.md - - docs/Models/Errors/MarkPlayedUnauthorized.md - - docs/Models/Errors/MarkUnplayedBadRequest.md - - docs/Models/Errors/MarkUnplayedErrors.md - - docs/Models/Errors/MarkUnplayedMediaErrors.md - - docs/Models/Errors/MarkUnplayedUnauthorized.md - - docs/Models/Errors/PerformSearchBadRequest.md - - docs/Models/Errors/PerformSearchErrors.md - - docs/Models/Errors/PerformSearchSearchErrors.md - - docs/Models/Errors/PerformSearchUnauthorized.md - - docs/Models/Errors/PerformVoiceSearchBadRequest.md - - docs/Models/Errors/PerformVoiceSearchErrors.md - - docs/Models/Errors/PerformVoiceSearchSearchErrors.md - - docs/Models/Errors/PerformVoiceSearchUnauthorized.md - - docs/Models/Errors/PostUsersSignInDataAuthenticationErrors.md - - docs/Models/Errors/PostUsersSignInDataBadRequest.md - - docs/Models/Errors/PostUsersSignInDataErrors.md - - docs/Models/Errors/PostUsersSignInDataUnauthorized.md - - docs/Models/Errors/StartAllTasksBadRequest.md - - docs/Models/Errors/StartAllTasksButlerErrors.md - - docs/Models/Errors/StartAllTasksErrors.md - - docs/Models/Errors/StartAllTasksUnauthorized.md - - docs/Models/Errors/StartTaskBadRequest.md - - docs/Models/Errors/StartTaskButlerErrors.md - - docs/Models/Errors/StartTaskErrors.md - - docs/Models/Errors/StartTaskUnauthorized.md - - docs/Models/Errors/StartUniversalTranscodeBadRequest.md - - docs/Models/Errors/StartUniversalTranscodeErrors.md - - docs/Models/Errors/StartUniversalTranscodeUnauthorized.md - - docs/Models/Errors/StartUniversalTranscodeVideoErrors.md - - docs/Models/Errors/StopAllTasksBadRequest.md - - docs/Models/Errors/StopAllTasksButlerErrors.md - - docs/Models/Errors/StopAllTasksErrors.md - - docs/Models/Errors/StopAllTasksUnauthorized.md - - docs/Models/Errors/StopTaskBadRequest.md - - docs/Models/Errors/StopTaskButlerErrors.md - - docs/Models/Errors/StopTaskErrors.md - - docs/Models/Errors/StopTaskUnauthorized.md - - docs/Models/Errors/StopTranscodeSessionBadRequest.md - - docs/Models/Errors/StopTranscodeSessionErrors.md - - docs/Models/Errors/StopTranscodeSessionSessionsErrors.md - - docs/Models/Errors/StopTranscodeSessionUnauthorized.md - - docs/Models/Errors/UpdatePlayProgressBadRequest.md - - docs/Models/Errors/UpdatePlayProgressErrors.md - - docs/Models/Errors/UpdatePlayProgressMediaErrors.md - - docs/Models/Errors/UpdatePlayProgressUnauthorized.md - - docs/Models/Errors/UpdatePlaylistBadRequest.md - - docs/Models/Errors/UpdatePlaylistErrors.md - - docs/Models/Errors/UpdatePlaylistPlaylistsErrors.md - - docs/Models/Errors/UpdatePlaylistUnauthorized.md - - docs/Models/Errors/UploadPlaylistBadRequest.md - - docs/Models/Errors/UploadPlaylistErrors.md - - docs/Models/Errors/UploadPlaylistPlaylistsErrors.md - - docs/Models/Errors/UploadPlaylistUnauthorized.md + - docs/Models/Components/Session.md + - docs/Models/Components/SessionLocation.md + - docs/Models/Components/Setting.md + - docs/Models/Components/SlashGetResponses200.md + - docs/Models/Components/SlashGetResponses200MediaContainer.md + - docs/Models/Components/Sort.md + - docs/Models/Components/SortDefault.md + - docs/Models/Components/SortPivot.md + - docs/Models/Components/Status.md + - docs/Models/Components/Stream.md + - docs/Models/Components/Subtitles.md + - docs/Models/Components/Tag.md + - docs/Models/Components/TranscodeSession.md + - docs/Models/Components/TranscodeType.md + - docs/Models/Components/Type.md + - docs/Models/Components/User.md + - docs/Models/Components/Value.md - docs/Models/Requests/Account.md - docs/Models/Requests/Action.md - - docs/Models/Requests/ActiveDirection.md - docs/Models/Requests/Activity.md - - docs/Models/Requests/AddPlaylistContentsMediaContainer.md - - docs/Models/Requests/AddPlaylistContentsMetadata.md - - docs/Models/Requests/AddPlaylistContentsRequest.md - - docs/Models/Requests/AddPlaylistContentsResponse.md - - docs/Models/Requests/AddPlaylistContentsResponseBody.md - - docs/Models/Requests/AllLibraries.md - - docs/Models/Requests/AllowCameraUpload.md - - docs/Models/Requests/AllowChannels.md - - docs/Models/Requests/AllowSubtitleAdmin.md - - docs/Models/Requests/AllowSync.md - - docs/Models/Requests/AllowTuners.md + - docs/Models/Requests/AddCollectionItemsRequest.md + - docs/Models/Requests/AddCollectionItemsResponse.md + - docs/Models/Requests/AddDeviceRequest.md + - docs/Models/Requests/AddDeviceResponse.md + - docs/Models/Requests/AddDeviceToDVRDVR.md + - docs/Models/Requests/AddDeviceToDVRDVRsMediaContainer.md + - docs/Models/Requests/AddDeviceToDVRMediaContainer.md + - docs/Models/Requests/AddDeviceToDVRRequest.md + - docs/Models/Requests/AddDeviceToDVRResponse.md + - docs/Models/Requests/AddDeviceToDVRResponseBody.md + - docs/Models/Requests/AddDownloadQueueItemsMediaContainer.md + - docs/Models/Requests/AddDownloadQueueItemsRequest.md + - docs/Models/Requests/AddDownloadQueueItemsResponse.md + - docs/Models/Requests/AddDownloadQueueItemsResponseBody.md + - docs/Models/Requests/AddExtrasRequest.md + - docs/Models/Requests/AddExtrasResponse.md + - docs/Models/Requests/AddLineupDVR.md + - docs/Models/Requests/AddLineupDVRsMediaContainer.md + - docs/Models/Requests/AddLineupMediaContainer.md + - docs/Models/Requests/AddLineupRequest.md + - docs/Models/Requests/AddLineupResponse.md + - docs/Models/Requests/AddLineupResponseBody.md + - docs/Models/Requests/AddPlaylistItemsRequest.md + - docs/Models/Requests/AddPlaylistItemsResponse.md + - docs/Models/Requests/AddProviderRequest.md + - docs/Models/Requests/AddProviderResponse.md + - docs/Models/Requests/AddSectionRequest.md + - docs/Models/Requests/AddSectionResponse.md + - docs/Models/Requests/AddSubtitlesRequest.md + - docs/Models/Requests/AddSubtitlesResponse.md + - docs/Models/Requests/AddToPlayQueueRequest.md + - docs/Models/Requests/AddToPlayQueueResponse.md + - docs/Models/Requests/AddedQueueItems.md + - docs/Models/Requests/AdvancedSubtitles.md + - docs/Models/Requests/AnalyzeMetadataRequest.md + - docs/Models/Requests/AnalyzeMetadataResponse.md - docs/Models/Requests/ApplyUpdatesRequest.md - docs/Models/Requests/ApplyUpdatesResponse.md + - docs/Models/Requests/Args.md - docs/Models/Requests/Attributes.md - - docs/Models/Requests/AutoSelectSubtitle.md - - docs/Models/Requests/Billing.md + - docs/Models/Requests/AutocompleteRequest.md + - docs/Models/Requests/AutocompleteResponse.md + - docs/Models/Requests/Bandwidth.md + - docs/Models/Requests/Bandwidths.md - docs/Models/Requests/ButlerTask.md - docs/Models/Requests/ButlerTasks.md - - docs/Models/Requests/CancelServerActivitiesRequest.md - - docs/Models/Requests/CancelServerActivitiesResponse.md - - docs/Models/Requests/Chapter.md - - docs/Models/Requests/CheckForUpdatesRequest.md - - docs/Models/Requests/CheckForUpdatesResponse.md - - docs/Models/Requests/ClearPlaylistContentsRequest.md - - docs/Models/Requests/ClearPlaylistContentsResponse.md - - docs/Models/Requests/Collection.md - - docs/Models/Requests/Connections.md - - docs/Models/Requests/Context.md + - docs/Models/Requests/CancelActivityRequest.md + - docs/Models/Requests/CancelActivityResponse.md + - docs/Models/Requests/CancelGrabRequest.md + - docs/Models/Requests/CancelGrabResponse.md + - docs/Models/Requests/CancelRefreshRequest.md + - docs/Models/Requests/CancelRefreshResponse.md + - docs/Models/Requests/ChannelMapping.md + - docs/Models/Requests/ChannelMappingByKey.md + - docs/Models/Requests/CheckUpdatesRequest.md + - docs/Models/Requests/CheckUpdatesResponse.md + - docs/Models/Requests/ChromaSubsampling.md + - docs/Models/Requests/CleanBundlesResponse.md + - docs/Models/Requests/ClearPlayQueueRequest.md + - docs/Models/Requests/ClearPlayQueueResponse.md + - docs/Models/Requests/ClearPlaylistItemsRequest.md + - docs/Models/Requests/ClearPlaylistItemsResponse.md + - docs/Models/Requests/ComputeChannelMapChannelMapping.md + - docs/Models/Requests/ComputeChannelMapMediaContainer.md + - docs/Models/Requests/ComputeChannelMapRequest.md + - docs/Models/Requests/ComputeChannelMapResponse.md + - docs/Models/Requests/ComputeChannelMapResponseBody.md + - docs/Models/Requests/ConnectWebSocketRequest.md + - docs/Models/Requests/ConnectWebSocketResponse.md + - docs/Models/Requests/Connection.md - docs/Models/Requests/Country.md - - docs/Models/Requests/CreatePlaylistMediaContainer.md - - docs/Models/Requests/CreatePlaylistMetadata.md - - docs/Models/Requests/CreatePlaylistQueryParamType.md + - docs/Models/Requests/CreateCollectionRequest.md + - docs/Models/Requests/CreateCollectionResponse.md + - docs/Models/Requests/CreateCustomHubRequest.md + - docs/Models/Requests/CreateCustomHubResponse.md + - docs/Models/Requests/CreateDVRRequest.md + - docs/Models/Requests/CreateDVRResponse.md + - docs/Models/Requests/CreateDownloadQueueMediaContainer.md + - docs/Models/Requests/CreateDownloadQueueResponse.md + - docs/Models/Requests/CreateDownloadQueueResponseBody.md + - docs/Models/Requests/CreateMarkerMediaContainer.md + - docs/Models/Requests/CreateMarkerRequest.md + - docs/Models/Requests/CreateMarkerResponse.md + - docs/Models/Requests/CreateMarkerResponseBody.md + - docs/Models/Requests/CreateMarkerType.md + - docs/Models/Requests/CreatePlayQueueMediaContainer.md + - docs/Models/Requests/CreatePlayQueueRequest.md + - docs/Models/Requests/CreatePlayQueueResponse.md + - docs/Models/Requests/CreatePlayQueueResponseBody.md - docs/Models/Requests/CreatePlaylistRequest.md - docs/Models/Requests/CreatePlaylistResponse.md - - docs/Models/Requests/CreatePlaylistResponseBody.md - - docs/Models/Requests/DefaultDirection.md - - docs/Models/Requests/DefaultSubtitleAccessibility.md - - docs/Models/Requests/DefaultSubtitleForced.md - - docs/Models/Requests/DeleteLibraryRequest.md - - docs/Models/Requests/DeleteLibraryResponse.md + - docs/Models/Requests/CreateSubscriptionMediaContainer.md + - docs/Models/Requests/CreateSubscriptionQueryParamPrefs.md + - docs/Models/Requests/CreateSubscriptionRequest.md + - docs/Models/Requests/CreateSubscriptionResponse.md + - docs/Models/Requests/CreateSubscriptionResponseBody.md + - docs/Models/Requests/DecisionResult.md + - docs/Models/Requests/DeleteCachesResponse.md + - docs/Models/Requests/DeleteCollectionItemRequest.md + - docs/Models/Requests/DeleteCollectionItemResponse.md + - docs/Models/Requests/DeleteCollectionRequest.md + - docs/Models/Requests/DeleteCollectionResponse.md + - docs/Models/Requests/DeleteCustomHubRequest.md + - docs/Models/Requests/DeleteCustomHubResponse.md + - docs/Models/Requests/DeleteDVRRequest.md + - docs/Models/Requests/DeleteDVRResponse.md + - docs/Models/Requests/DeleteHistoryRequest.md + - docs/Models/Requests/DeleteHistoryResponse.md + - docs/Models/Requests/DeleteIndexesRequest.md + - docs/Models/Requests/DeleteIndexesResponse.md + - docs/Models/Requests/DeleteIntrosRequest.md + - docs/Models/Requests/DeleteIntrosResponse.md + - docs/Models/Requests/DeleteLibrarySectionRequest.md + - docs/Models/Requests/DeleteLibrarySectionResponse.md + - docs/Models/Requests/DeleteLineupDVR.md + - docs/Models/Requests/DeleteLineupDVRsMediaContainer.md + - docs/Models/Requests/DeleteLineupMediaContainer.md + - docs/Models/Requests/DeleteLineupRequest.md + - docs/Models/Requests/DeleteLineupResponse.md + - docs/Models/Requests/DeleteLineupResponseBody.md + - docs/Models/Requests/DeleteMarkerRequest.md + - docs/Models/Requests/DeleteMarkerResponse.md + - docs/Models/Requests/DeleteMediaItemRequest.md + - docs/Models/Requests/DeleteMediaItemResponse.md + - docs/Models/Requests/DeleteMediaProviderRequest.md + - docs/Models/Requests/DeleteMediaProviderResponse.md + - docs/Models/Requests/DeleteMetadataItemRequest.md + - docs/Models/Requests/DeleteMetadataItemResponse.md + - docs/Models/Requests/DeletePlayQueueItemRequest.md + - docs/Models/Requests/DeletePlayQueueItemResponse.md + - docs/Models/Requests/DeletePlaylistItemRequest.md + - docs/Models/Requests/DeletePlaylistItemResponse.md - docs/Models/Requests/DeletePlaylistRequest.md - docs/Models/Requests/DeletePlaylistResponse.md + - docs/Models/Requests/DeleteStreamRequest.md + - docs/Models/Requests/DeleteStreamResponse.md + - docs/Models/Requests/DeleteSubscriptionRequest.md + - docs/Models/Requests/DeleteSubscriptionResponse.md + - docs/Models/Requests/DetectAdsRequest.md + - docs/Models/Requests/DetectAdsResponse.md + - docs/Models/Requests/DetectCreditsRequest.md + - docs/Models/Requests/DetectCreditsResponse.md + - docs/Models/Requests/DetectIntrosRequest.md + - docs/Models/Requests/DetectIntrosResponse.md + - docs/Models/Requests/DetectVoiceActivityRequest.md + - docs/Models/Requests/DetectVoiceActivityResponse.md - docs/Models/Requests/Device.md - - docs/Models/Requests/Director.md + - docs/Models/Requests/DeviceChannel.md - docs/Models/Requests/Directory.md - - docs/Models/Requests/Download.md - - docs/Models/Requests/EnablePaperTrailResponse.md - - docs/Models/Requests/Extras.md + - docs/Models/Requests/DiscoverDevicesResponse.md + - docs/Models/Requests/DownloadQueue.md + - docs/Models/Requests/DownloadQueueItem.md + - docs/Models/Requests/Dvr.md + - docs/Models/Requests/EditMarkerRequest.md + - docs/Models/Requests/EditMarkerResponse.md + - docs/Models/Requests/EditMetadataItemRequest.md + - docs/Models/Requests/EditMetadataItemResponse.md + - docs/Models/Requests/EditSectionQueryParamPrefs.md + - docs/Models/Requests/EditSectionRequest.md + - docs/Models/Requests/EditSectionResponse.md + - docs/Models/Requests/EditSubscriptionPreferencesQueryParamPrefs.md + - docs/Models/Requests/EditSubscriptionPreferencesRequest.md + - docs/Models/Requests/EditSubscriptionPreferencesResponse.md + - docs/Models/Requests/Element.md + - docs/Models/Requests/EmptyTrashRequest.md + - docs/Models/Requests/EmptyTrashResponse.md + - docs/Models/Requests/EnablePapertrailRequest.md + - docs/Models/Requests/EnablePapertrailResponse.md + - docs/Models/Requests/Extension.md - docs/Models/Requests/Feature.md - - docs/Models/Requests/Field.md - - docs/Models/Requests/FieldType.md - - docs/Models/Requests/Filter.md - - docs/Models/Requests/FlattenSeasons.md - - docs/Models/Requests/Force.md - - docs/Models/Requests/Friend.md - - docs/Models/Requests/Genre.md - - docs/Models/Requests/GeoData.md - - docs/Models/Requests/GetActorsLibraryDirectory.md - - docs/Models/Requests/GetActorsLibraryMediaContainer.md - - docs/Models/Requests/GetActorsLibraryQueryParamType.md - - docs/Models/Requests/GetActorsLibraryRequest.md - - docs/Models/Requests/GetActorsLibraryResponse.md - - docs/Models/Requests/GetActorsLibraryResponseBody.md - - docs/Models/Requests/GetAllLibrariesDirectory.md - - docs/Models/Requests/GetAllLibrariesLocation.md - - docs/Models/Requests/GetAllLibrariesMediaContainer.md - - docs/Models/Requests/GetAllLibrariesResponse.md - - docs/Models/Requests/GetAllLibrariesResponseBody.md - - docs/Models/Requests/GetAllLibrariesType.md - - docs/Models/Requests/GetAvailableClientsMediaContainer.md - - docs/Models/Requests/GetAvailableClientsResponse.md - - docs/Models/Requests/GetAvailableClientsResponseBody.md - - docs/Models/Requests/GetBandwidthStatisticsAccount.md - - docs/Models/Requests/GetBandwidthStatisticsDevice.md - - docs/Models/Requests/GetBandwidthStatisticsMediaContainer.md - - docs/Models/Requests/GetBandwidthStatisticsRequest.md - - docs/Models/Requests/GetBandwidthStatisticsResponse.md - - docs/Models/Requests/GetBandwidthStatisticsResponseBody.md - - docs/Models/Requests/GetBannerImageRequest.md - - docs/Models/Requests/GetBannerImageResponse.md - - docs/Models/Requests/GetButlerTasksResponse.md - - docs/Models/Requests/GetButlerTasksResponseBody.md - - docs/Models/Requests/GetCompanionsDataResponse.md - - docs/Models/Requests/GetCountriesLibraryDirectory.md - - docs/Models/Requests/GetCountriesLibraryMediaContainer.md - - docs/Models/Requests/GetCountriesLibraryQueryParamType.md - - docs/Models/Requests/GetCountriesLibraryRequest.md - - docs/Models/Requests/GetCountriesLibraryResponse.md - - docs/Models/Requests/GetCountriesLibraryResponseBody.md - - docs/Models/Requests/GetDevicesMediaContainer.md - - docs/Models/Requests/GetDevicesResponse.md - - docs/Models/Requests/GetDevicesResponseBody.md - - docs/Models/Requests/GetFileHashRequest.md - - docs/Models/Requests/GetFileHashResponse.md - - docs/Models/Requests/GetGenresLibraryDirectory.md - - docs/Models/Requests/GetGenresLibraryMediaContainer.md - - docs/Models/Requests/GetGenresLibraryQueryParamType.md - - docs/Models/Requests/GetGenresLibraryRequest.md - - docs/Models/Requests/GetGenresLibraryResponse.md - - docs/Models/Requests/GetGenresLibraryResponseBody.md - - docs/Models/Requests/GetGeoDataGeoData.md - - docs/Models/Requests/GetGeoDataResponse.md - - docs/Models/Requests/GetGlobalHubsMediaContainer.md - - docs/Models/Requests/GetGlobalHubsMetadata.md - - docs/Models/Requests/GetGlobalHubsRequest.md - - docs/Models/Requests/GetGlobalHubsResponse.md - - docs/Models/Requests/GetGlobalHubsResponseBody.md - - docs/Models/Requests/GetHomeDataResponse.md - - docs/Models/Requests/GetHomeDataResponseBody.md - - docs/Models/Requests/GetLibraryDetailsDirectory.md - - docs/Models/Requests/GetLibraryDetailsField.md - - docs/Models/Requests/GetLibraryDetailsFieldType.md - - docs/Models/Requests/GetLibraryDetailsFilter.md + - docs/Models/Requests/Flavor.md + - docs/Models/Requests/Format.md + - docs/Models/Requests/GenerateThumbsRequest.md + - docs/Models/Requests/GenerateThumbsResponse.md + - docs/Models/Requests/GetAlbumsRequest.md + - docs/Models/Requests/GetAlbumsResponse.md + - docs/Models/Requests/GetAllHubsMediaContainer.md + - docs/Models/Requests/GetAllHubsRequest.md + - docs/Models/Requests/GetAllHubsResponse.md + - docs/Models/Requests/GetAllHubsResponseBody.md + - docs/Models/Requests/GetAllItemLeavesRequest.md + - docs/Models/Requests/GetAllItemLeavesResponse.md + - docs/Models/Requests/GetAllLanguagesMediaContainer.md + - docs/Models/Requests/GetAllLanguagesResponse.md + - docs/Models/Requests/GetAllLanguagesResponseBody.md + - docs/Models/Requests/GetAllLeavesRequest.md + - docs/Models/Requests/GetAllLeavesResponse.md + - docs/Models/Requests/GetAllPreferencesResponse.md + - docs/Models/Requests/GetAllSubscriptionsRequest.md + - docs/Models/Requests/GetAllSubscriptionsResponse.md + - docs/Models/Requests/GetArtsRequest.md + - docs/Models/Requests/GetArtsResponse.md + - docs/Models/Requests/GetAugmentationStatusRequest.md + - docs/Models/Requests/GetAugmentationStatusResponse.md + - docs/Models/Requests/GetAvailableGrabbersMediaContainer.md + - docs/Models/Requests/GetAvailableGrabbersRequest.md + - docs/Models/Requests/GetAvailableGrabbersResponse.md + - docs/Models/Requests/GetAvailableGrabbersResponseBody.md + - docs/Models/Requests/GetAvailableSortsMediaContainer.md + - docs/Models/Requests/GetAvailableSortsRequest.md + - docs/Models/Requests/GetAvailableSortsResponse.md + - docs/Models/Requests/GetAvailableSortsResponseBody.md + - docs/Models/Requests/GetBackgroundTasksMediaContainer.md + - docs/Models/Requests/GetBackgroundTasksResponse.md + - docs/Models/Requests/GetBackgroundTasksResponseBody.md + - docs/Models/Requests/GetBackgroundTasksType.md + - docs/Models/Requests/GetCategoriesRequest.md + - docs/Models/Requests/GetCategoriesResponse.md + - docs/Models/Requests/GetChannelsMediaContainer.md + - docs/Models/Requests/GetChannelsRequest.md + - docs/Models/Requests/GetChannelsResponse.md + - docs/Models/Requests/GetChannelsResponseBody.md + - docs/Models/Requests/GetChapterImageRequest.md + - docs/Models/Requests/GetChapterImageResponse.md + - docs/Models/Requests/GetClusterRequest.md + - docs/Models/Requests/GetClusterResponse.md + - docs/Models/Requests/GetCollectionImageRequest.md + - docs/Models/Requests/GetCollectionImageResponse.md + - docs/Models/Requests/GetCollectionItemsRequest.md + - docs/Models/Requests/GetCollectionItemsResponse.md + - docs/Models/Requests/GetCollectionsRequest.md + - docs/Models/Requests/GetCollectionsResponse.md + - docs/Models/Requests/GetColorsMediaContainer.md + - docs/Models/Requests/GetColorsRequest.md + - docs/Models/Requests/GetColorsResponse.md + - docs/Models/Requests/GetColorsResponseBody.md + - docs/Models/Requests/GetCommonRequest.md + - docs/Models/Requests/GetCommonResponse.md + - docs/Models/Requests/GetContinueWatchingMediaContainer.md + - docs/Models/Requests/GetContinueWatchingRequest.md + - docs/Models/Requests/GetContinueWatchingResponse.md + - docs/Models/Requests/GetContinueWatchingResponseBody.md + - docs/Models/Requests/GetCountriesLineupsRequest.md + - docs/Models/Requests/GetCountriesLineupsResponse.md + - docs/Models/Requests/GetCountriesMediaContainer.md + - docs/Models/Requests/GetCountriesResponse.md + - docs/Models/Requests/GetCountriesResponseBody.md + - docs/Models/Requests/GetCountryRegionsCountry.md + - docs/Models/Requests/GetCountryRegionsMediaContainer.md + - docs/Models/Requests/GetCountryRegionsRequest.md + - docs/Models/Requests/GetCountryRegionsResponse.md + - docs/Models/Requests/GetCountryRegionsResponseBody.md + - docs/Models/Requests/GetDVRDVR.md + - docs/Models/Requests/GetDVRDVRsMediaContainer.md + - docs/Models/Requests/GetDVRMediaContainer.md + - docs/Models/Requests/GetDVRRequest.md + - docs/Models/Requests/GetDVRResponse.md + - docs/Models/Requests/GetDVRResponseBody.md + - docs/Models/Requests/GetDeviceDetailsRequest.md + - docs/Models/Requests/GetDeviceDetailsResponse.md + - docs/Models/Requests/GetDevicesChannelsMediaContainer.md + - docs/Models/Requests/GetDevicesChannelsRequest.md + - docs/Models/Requests/GetDevicesChannelsResponse.md + - docs/Models/Requests/GetDevicesChannelsResponseBody.md + - docs/Models/Requests/GetDownloadQueueDownloadQueue.md + - docs/Models/Requests/GetDownloadQueueItemsDecisionResult.md + - docs/Models/Requests/GetDownloadQueueItemsDownloadQueueItem.md + - docs/Models/Requests/GetDownloadQueueItemsMediaContainer.md + - docs/Models/Requests/GetDownloadQueueItemsRequest.md + - docs/Models/Requests/GetDownloadQueueItemsResponse.md + - docs/Models/Requests/GetDownloadQueueItemsResponseBody.md + - docs/Models/Requests/GetDownloadQueueItemsStatus.md + - docs/Models/Requests/GetDownloadQueueItemsTranscode.md + - docs/Models/Requests/GetDownloadQueueMediaContainer.md + - docs/Models/Requests/GetDownloadQueueMediaRequest.md + - docs/Models/Requests/GetDownloadQueueMediaResponse.md + - docs/Models/Requests/GetDownloadQueueRequest.md + - docs/Models/Requests/GetDownloadQueueResponse.md + - docs/Models/Requests/GetDownloadQueueResponseBody.md + - docs/Models/Requests/GetDownloadQueueStatus.md + - docs/Models/Requests/GetExtrasRequest.md + - docs/Models/Requests/GetExtrasResponse.md + - docs/Models/Requests/GetFileRequest.md + - docs/Models/Requests/GetFileResponse.md + - docs/Models/Requests/GetFirstCharactersDirectory.md + - docs/Models/Requests/GetFirstCharactersMediaContainer.md + - docs/Models/Requests/GetFirstCharactersRequest.md + - docs/Models/Requests/GetFirstCharactersResponse.md + - docs/Models/Requests/GetFirstCharactersResponseBody.md + - docs/Models/Requests/GetFoldersDirectory.md + - docs/Models/Requests/GetFoldersMediaContainer.md + - docs/Models/Requests/GetFoldersRequest.md + - docs/Models/Requests/GetFoldersResponse.md + - docs/Models/Requests/GetFoldersResponseBody.md + - docs/Models/Requests/GetHistoryItemRequest.md + - docs/Models/Requests/GetHistoryItemResponse.md + - docs/Models/Requests/GetHubItemsRequest.md + - docs/Models/Requests/GetHubItemsResponse.md + - docs/Models/Requests/GetHubItemsResponseBody.md + - docs/Models/Requests/GetIdentityMediaContainer.md + - docs/Models/Requests/GetIdentityResponse.md + - docs/Models/Requests/GetIdentityResponseBody.md + - docs/Models/Requests/GetImageFromBifRequest.md + - docs/Models/Requests/GetImageFromBifResponse.md + - docs/Models/Requests/GetImageRequest.md + - docs/Models/Requests/GetImageResponse.md + - docs/Models/Requests/GetItemArtworkPathParamElement.md + - docs/Models/Requests/GetItemArtworkRequest.md + - docs/Models/Requests/GetItemArtworkResponse.md + - docs/Models/Requests/GetItemDecisionRequest.md + - docs/Models/Requests/GetItemDecisionResponse.md + - docs/Models/Requests/GetItemTreeRequest.md + - docs/Models/Requests/GetItemTreeResponse.md - docs/Models/Requests/GetLibraryDetailsMediaContainer.md - - docs/Models/Requests/GetLibraryDetailsOperator.md - docs/Models/Requests/GetLibraryDetailsRequest.md - docs/Models/Requests/GetLibraryDetailsResponse.md - docs/Models/Requests/GetLibraryDetailsResponseBody.md - - docs/Models/Requests/GetLibraryDetailsSort.md - - docs/Models/Requests/GetLibraryDetailsType.md - - docs/Models/Requests/GetLibraryHubsCountry.md - - docs/Models/Requests/GetLibraryHubsDirector.md - - docs/Models/Requests/GetLibraryHubsGenre.md - - docs/Models/Requests/GetLibraryHubsHub.md - - docs/Models/Requests/GetLibraryHubsMedia.md - - docs/Models/Requests/GetLibraryHubsMediaContainer.md - - docs/Models/Requests/GetLibraryHubsMetadata.md - - docs/Models/Requests/GetLibraryHubsPart.md - - docs/Models/Requests/GetLibraryHubsRequest.md - - docs/Models/Requests/GetLibraryHubsResponse.md - - docs/Models/Requests/GetLibraryHubsResponseBody.md - - docs/Models/Requests/GetLibraryHubsRole.md - - docs/Models/Requests/GetLibraryHubsWriter.md - - docs/Models/Requests/GetLibraryItemsActiveDirection.md - - docs/Models/Requests/GetLibraryItemsCollection.md - - docs/Models/Requests/GetLibraryItemsCountry.md - - docs/Models/Requests/GetLibraryItemsDefaultDirection.md - - docs/Models/Requests/GetLibraryItemsDirector.md - - docs/Models/Requests/GetLibraryItemsField.md - - docs/Models/Requests/GetLibraryItemsFieldType.md - - docs/Models/Requests/GetLibraryItemsFilter.md - - docs/Models/Requests/GetLibraryItemsGenre.md - - docs/Models/Requests/GetLibraryItemsGuids.md - - docs/Models/Requests/GetLibraryItemsHasThumbnail.md - - docs/Models/Requests/GetLibraryItemsImage.md - - docs/Models/Requests/GetLibraryItemsLibraryOptimizedForStreaming.md - - docs/Models/Requests/GetLibraryItemsLibraryResponseType.md - - docs/Models/Requests/GetLibraryItemsLibraryType.md - - docs/Models/Requests/GetLibraryItemsLocation.md - - docs/Models/Requests/GetLibraryItemsMedia.md - - docs/Models/Requests/GetLibraryItemsMediaContainer.md - - docs/Models/Requests/GetLibraryItemsMeta.md - - docs/Models/Requests/GetLibraryItemsMetadata.md - - docs/Models/Requests/GetLibraryItemsOperator.md - - docs/Models/Requests/GetLibraryItemsOptimizedForStreaming.md - - docs/Models/Requests/GetLibraryItemsOptimizedForStreaming1.md - - docs/Models/Requests/GetLibraryItemsPart.md - - docs/Models/Requests/GetLibraryItemsProducer.md - - docs/Models/Requests/GetLibraryItemsQueryParamIncludeMeta.md - - docs/Models/Requests/GetLibraryItemsQueryParamType.md - docs/Models/Requests/GetLibraryItemsRequest.md - docs/Models/Requests/GetLibraryItemsResponse.md - - docs/Models/Requests/GetLibraryItemsResponseBody.md - - docs/Models/Requests/GetLibraryItemsRole.md - - docs/Models/Requests/GetLibraryItemsSimilar.md - - docs/Models/Requests/GetLibraryItemsSort.md - - docs/Models/Requests/GetLibraryItemsType.md - - docs/Models/Requests/GetLibraryItemsUltraBlurColors.md - - docs/Models/Requests/GetLibraryItemsWriter.md - - docs/Models/Requests/GetLibrarySectionsAllActiveDirection.md - - docs/Models/Requests/GetLibrarySectionsAllCollection.md - - docs/Models/Requests/GetLibrarySectionsAllCountry.md - - docs/Models/Requests/GetLibrarySectionsAllDefaultDirection.md - - docs/Models/Requests/GetLibrarySectionsAllDirector.md - - docs/Models/Requests/GetLibrarySectionsAllField.md - - docs/Models/Requests/GetLibrarySectionsAllFieldType.md - - docs/Models/Requests/GetLibrarySectionsAllFilter.md - - docs/Models/Requests/GetLibrarySectionsAllGenre.md - - docs/Models/Requests/GetLibrarySectionsAllGuids.md - - docs/Models/Requests/GetLibrarySectionsAllHasThumbnail.md - - docs/Models/Requests/GetLibrarySectionsAllImage.md - - docs/Models/Requests/GetLibrarySectionsAllLibraryOptimizedForStreaming.md - - docs/Models/Requests/GetLibrarySectionsAllLibraryResponseType.md - - docs/Models/Requests/GetLibrarySectionsAllLibraryType.md - - docs/Models/Requests/GetLibrarySectionsAllMedia.md - - docs/Models/Requests/GetLibrarySectionsAllMediaContainer.md - - docs/Models/Requests/GetLibrarySectionsAllMeta.md - - docs/Models/Requests/GetLibrarySectionsAllMetadata.md - - docs/Models/Requests/GetLibrarySectionsAllOperator.md - - docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming.md - - docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming1.md - - docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreamingLibrary1.md - - docs/Models/Requests/GetLibrarySectionsAllPart.md - - docs/Models/Requests/GetLibrarySectionsAllQueryParamIncludeMeta.md - - docs/Models/Requests/GetLibrarySectionsAllQueryParamType.md - - docs/Models/Requests/GetLibrarySectionsAllRequest.md - - docs/Models/Requests/GetLibrarySectionsAllResponse.md - - docs/Models/Requests/GetLibrarySectionsAllResponseBody.md - - docs/Models/Requests/GetLibrarySectionsAllRole.md - - docs/Models/Requests/GetLibrarySectionsAllSort.md - - docs/Models/Requests/GetLibrarySectionsAllStream.md - - docs/Models/Requests/GetLibrarySectionsAllType.md - - docs/Models/Requests/GetLibrarySectionsAllUltraBlurColors.md - - docs/Models/Requests/GetLibrarySectionsAllWriter.md - - docs/Models/Requests/GetMediaArtsMediaContainer.md - - docs/Models/Requests/GetMediaArtsMetadata.md - - docs/Models/Requests/GetMediaArtsRequest.md - - docs/Models/Requests/GetMediaArtsResponse.md - - docs/Models/Requests/GetMediaArtsResponseBody.md - - docs/Models/Requests/GetMediaMetaDataAttributes.md - - docs/Models/Requests/GetMediaMetaDataChapter.md - - docs/Models/Requests/GetMediaMetaDataCountry.md - - docs/Models/Requests/GetMediaMetaDataDirector.md - - docs/Models/Requests/GetMediaMetaDataExtras.md - - docs/Models/Requests/GetMediaMetaDataGenre.md - - docs/Models/Requests/GetMediaMetaDataGuids.md - - docs/Models/Requests/GetMediaMetaDataHasThumbnail.md - - docs/Models/Requests/GetMediaMetaDataImage.md - - docs/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.md - - docs/Models/Requests/GetMediaMetaDataLibraryType.md - - docs/Models/Requests/GetMediaMetaDataLocation.md - - docs/Models/Requests/GetMediaMetaDataMarker.md - - docs/Models/Requests/GetMediaMetaDataMedia.md - - docs/Models/Requests/GetMediaMetaDataMediaContainer.md - - docs/Models/Requests/GetMediaMetaDataMetadata.md - - docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming.md - - docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming1.md - - docs/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.md - - docs/Models/Requests/GetMediaMetaDataPart.md - - docs/Models/Requests/GetMediaMetaDataProducer.md - - docs/Models/Requests/GetMediaMetaDataRatings.md - - docs/Models/Requests/GetMediaMetaDataRequest.md - - docs/Models/Requests/GetMediaMetaDataResponse.md - - docs/Models/Requests/GetMediaMetaDataResponseBody.md - - docs/Models/Requests/GetMediaMetaDataRole.md - - docs/Models/Requests/GetMediaMetaDataSimilar.md - - docs/Models/Requests/GetMediaMetaDataStream.md - - docs/Models/Requests/GetMediaMetaDataType.md - - docs/Models/Requests/GetMediaMetaDataUltraBlurColors.md - - docs/Models/Requests/GetMediaMetaDataWriter.md - - docs/Models/Requests/GetMediaPostersMediaContainer.md - - docs/Models/Requests/GetMediaPostersMetadata.md - - docs/Models/Requests/GetMediaPostersRequest.md - - docs/Models/Requests/GetMediaPostersResponse.md - - docs/Models/Requests/GetMediaPostersResponseBody.md - - docs/Models/Requests/GetMediaProvidersDirectory.md - - docs/Models/Requests/GetMediaProvidersMediaContainer.md - - docs/Models/Requests/GetMediaProvidersRequest.md - - docs/Models/Requests/GetMediaProvidersResponse.md - - docs/Models/Requests/GetMediaProvidersResponseBody.md - - docs/Models/Requests/GetMetadataChildrenDirectory.md - - docs/Models/Requests/GetMetadataChildrenMediaContainer.md - - docs/Models/Requests/GetMetadataChildrenMetadata.md - - docs/Models/Requests/GetMetadataChildrenRequest.md - - docs/Models/Requests/GetMetadataChildrenResponse.md - - docs/Models/Requests/GetMetadataChildrenResponseBody.md - - docs/Models/Requests/GetMyPlexAccountResponse.md - - docs/Models/Requests/GetMyPlexAccountResponseBody.md - - docs/Models/Requests/GetPinAuthPinContainer.md - - docs/Models/Requests/GetPinRequest.md - - docs/Models/Requests/GetPinResponse.md - - docs/Models/Requests/GetPlaylistContentsCountry.md - - docs/Models/Requests/GetPlaylistContentsDirector.md - - docs/Models/Requests/GetPlaylistContentsGenre.md - - docs/Models/Requests/GetPlaylistContentsMedia.md - - docs/Models/Requests/GetPlaylistContentsMediaContainer.md - - docs/Models/Requests/GetPlaylistContentsMetadata.md - - docs/Models/Requests/GetPlaylistContentsPart.md - - docs/Models/Requests/GetPlaylistContentsQueryParamType.md - - docs/Models/Requests/GetPlaylistContentsRequest.md - - docs/Models/Requests/GetPlaylistContentsResponse.md - - docs/Models/Requests/GetPlaylistContentsResponseBody.md - - docs/Models/Requests/GetPlaylistContentsRole.md - - docs/Models/Requests/GetPlaylistContentsWriter.md - - docs/Models/Requests/GetPlaylistMediaContainer.md - - docs/Models/Requests/GetPlaylistMetadata.md + - docs/Models/Requests/GetLibraryMatchesRequest.md + - docs/Models/Requests/GetLibraryMatchesResponse.md + - docs/Models/Requests/GetLineupChannelsMediaContainer.md + - docs/Models/Requests/GetLineupChannelsRequest.md + - docs/Models/Requests/GetLineupChannelsResponse.md + - docs/Models/Requests/GetLineupChannelsResponseBody.md + - docs/Models/Requests/GetLineupRequest.md + - docs/Models/Requests/GetLineupResponse.md + - docs/Models/Requests/GetLiveTVSessionRequest.md + - docs/Models/Requests/GetLiveTVSessionResponse.md + - docs/Models/Requests/GetMediaPartRequest.md + - docs/Models/Requests/GetMediaPartResponse.md + - docs/Models/Requests/GetMetadataHubsRequest.md + - docs/Models/Requests/GetMetadataHubsResponse.md + - docs/Models/Requests/GetMetadataItemRequest.md + - docs/Models/Requests/GetMetadataItemResponse.md + - docs/Models/Requests/GetNotificationsRequest.md + - docs/Models/Requests/GetNotificationsResponse.md + - docs/Models/Requests/GetPartIndexRequest.md + - docs/Models/Requests/GetPartIndexResponse.md + - docs/Models/Requests/GetPersonMediaContainer.md + - docs/Models/Requests/GetPersonRequest.md + - docs/Models/Requests/GetPersonResponse.md + - docs/Models/Requests/GetPersonResponseBody.md + - docs/Models/Requests/GetPlayQueueRequest.md + - docs/Models/Requests/GetPlayQueueResponse.md + - docs/Models/Requests/GetPlaylistGeneratorDevice.md + - docs/Models/Requests/GetPlaylistGeneratorItemsMediaContainer.md + - docs/Models/Requests/GetPlaylistGeneratorItemsMetadata.md + - docs/Models/Requests/GetPlaylistGeneratorItemsRequest.md + - docs/Models/Requests/GetPlaylistGeneratorItemsResponse.md + - docs/Models/Requests/GetPlaylistGeneratorItemsResponseBody.md + - docs/Models/Requests/GetPlaylistGeneratorLocation.md + - docs/Models/Requests/GetPlaylistGeneratorMediaContainer.md + - docs/Models/Requests/GetPlaylistGeneratorRequest.md + - docs/Models/Requests/GetPlaylistGeneratorResponse.md + - docs/Models/Requests/GetPlaylistGeneratorResponseBody.md + - docs/Models/Requests/GetPlaylistGeneratorScope.md + - docs/Models/Requests/GetPlaylistGeneratorState.md + - docs/Models/Requests/GetPlaylistGeneratorStatus.md + - docs/Models/Requests/GetPlaylistGeneratorSubtitles.md + - docs/Models/Requests/GetPlaylistGeneratorType.md + - docs/Models/Requests/GetPlaylistGeneratorsMediaContainer.md + - docs/Models/Requests/GetPlaylistGeneratorsRequest.md + - docs/Models/Requests/GetPlaylistGeneratorsResponse.md + - docs/Models/Requests/GetPlaylistGeneratorsResponseBody.md + - docs/Models/Requests/GetPlaylistGeneratorsType.md + - docs/Models/Requests/GetPlaylistItemsRequest.md + - docs/Models/Requests/GetPlaylistItemsResponse.md - docs/Models/Requests/GetPlaylistRequest.md - docs/Models/Requests/GetPlaylistResponse.md - - docs/Models/Requests/GetPlaylistResponseBody.md - - docs/Models/Requests/GetPlaylistsMediaContainer.md - - docs/Models/Requests/GetPlaylistsMetadata.md - - docs/Models/Requests/GetPlaylistsRequest.md - - docs/Models/Requests/GetPlaylistsResponse.md - - docs/Models/Requests/GetPlaylistsResponseBody.md - - docs/Models/Requests/GetRecentlyAddedActiveDirection.md - - docs/Models/Requests/GetRecentlyAddedDefaultDirection.md - - docs/Models/Requests/GetRecentlyAddedField.md - - docs/Models/Requests/GetRecentlyAddedFieldType.md - - docs/Models/Requests/GetRecentlyAddedFilter.md - - docs/Models/Requests/GetRecentlyAddedHubsResponseType.md - - docs/Models/Requests/GetRecentlyAddedHubsType.md - - docs/Models/Requests/GetRecentlyAddedImage.md - - docs/Models/Requests/GetRecentlyAddedLibraryCountry.md - - docs/Models/Requests/GetRecentlyAddedLibraryDirector.md - - docs/Models/Requests/GetRecentlyAddedLibraryFilter.md - - docs/Models/Requests/GetRecentlyAddedLibraryGenre.md - - docs/Models/Requests/GetRecentlyAddedLibraryMedia.md - - docs/Models/Requests/GetRecentlyAddedLibraryMediaContainer.md - - docs/Models/Requests/GetRecentlyAddedLibraryMetadata.md - - docs/Models/Requests/GetRecentlyAddedLibraryPart.md - - docs/Models/Requests/GetRecentlyAddedLibraryRequest.md - - docs/Models/Requests/GetRecentlyAddedLibraryResponse.md - - docs/Models/Requests/GetRecentlyAddedLibraryResponseBody.md - - docs/Models/Requests/GetRecentlyAddedLibraryRole.md - - docs/Models/Requests/GetRecentlyAddedLibraryType.md - - docs/Models/Requests/GetRecentlyAddedLibraryWriter.md - - docs/Models/Requests/GetRecentlyAddedMediaContainer.md - - docs/Models/Requests/GetRecentlyAddedMetadata.md - - docs/Models/Requests/GetRecentlyAddedOperator.md - - docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming.md - - docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.md - - docs/Models/Requests/GetRecentlyAddedRequest.md - - docs/Models/Requests/GetRecentlyAddedResponse.md - - docs/Models/Requests/GetRecentlyAddedResponseBody.md - - docs/Models/Requests/GetRecentlyAddedSort.md - - docs/Models/Requests/GetRecentlyAddedType.md - - docs/Models/Requests/GetRefreshLibraryMetadataRequest.md - - docs/Models/Requests/GetRefreshLibraryMetadataResponse.md - - docs/Models/Requests/GetResizedPhotoRequest.md - - docs/Models/Requests/GetResizedPhotoResponse.md - - docs/Models/Requests/GetResourcesStatisticsMediaContainer.md - - docs/Models/Requests/GetResourcesStatisticsRequest.md - - docs/Models/Requests/GetResourcesStatisticsResponse.md - - docs/Models/Requests/GetResourcesStatisticsResponseBody.md - - docs/Models/Requests/GetSearchAllLibrariesCountry.md - - docs/Models/Requests/GetSearchAllLibrariesDirector.md - - docs/Models/Requests/GetSearchAllLibrariesDirectory.md - - docs/Models/Requests/GetSearchAllLibrariesFlattenSeasons.md - - docs/Models/Requests/GetSearchAllLibrariesGenre.md - - docs/Models/Requests/GetSearchAllLibrariesGuids.md - - docs/Models/Requests/GetSearchAllLibrariesHasThumbnail.md - - docs/Models/Requests/GetSearchAllLibrariesImage.md - - docs/Models/Requests/GetSearchAllLibrariesLibraryOptimizedForStreaming.md - - docs/Models/Requests/GetSearchAllLibrariesLibraryType.md - - docs/Models/Requests/GetSearchAllLibrariesLocation.md - - docs/Models/Requests/GetSearchAllLibrariesMedia.md - - docs/Models/Requests/GetSearchAllLibrariesMediaContainer.md - - docs/Models/Requests/GetSearchAllLibrariesMetadata.md - - docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming.md - - docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming1.md - - docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreamingLibrary1.md - - docs/Models/Requests/GetSearchAllLibrariesPart.md - - docs/Models/Requests/GetSearchAllLibrariesQueryParamIncludeCollections.md - - docs/Models/Requests/GetSearchAllLibrariesQueryParamIncludeExternalMedia.md - - docs/Models/Requests/GetSearchAllLibrariesRequest.md - - docs/Models/Requests/GetSearchAllLibrariesResponse.md - - docs/Models/Requests/GetSearchAllLibrariesResponseBody.md - - docs/Models/Requests/GetSearchAllLibrariesRole.md - - docs/Models/Requests/GetSearchAllLibrariesShowOrdering.md - - docs/Models/Requests/GetSearchAllLibrariesType.md - - docs/Models/Requests/GetSearchAllLibrariesUltraBlurColors.md - - docs/Models/Requests/GetSearchAllLibrariesWriter.md - - docs/Models/Requests/GetSearchLibraryMediaContainer.md - - docs/Models/Requests/GetSearchLibraryMetadata.md - - docs/Models/Requests/GetSearchLibraryQueryParamType.md - - docs/Models/Requests/GetSearchLibraryRequest.md - - docs/Models/Requests/GetSearchLibraryResponse.md - - docs/Models/Requests/GetSearchLibraryResponseBody.md - - docs/Models/Requests/GetSearchResultsCountry.md - - docs/Models/Requests/GetSearchResultsDirector.md - - docs/Models/Requests/GetSearchResultsGenre.md - - docs/Models/Requests/GetSearchResultsMedia.md - - docs/Models/Requests/GetSearchResultsMediaContainer.md - - docs/Models/Requests/GetSearchResultsMetadata.md - - docs/Models/Requests/GetSearchResultsPart.md - - docs/Models/Requests/GetSearchResultsRequest.md - - docs/Models/Requests/GetSearchResultsResponse.md - - docs/Models/Requests/GetSearchResultsResponseBody.md - - docs/Models/Requests/GetSearchResultsRole.md - - docs/Models/Requests/GetSearchResultsWriter.md - - docs/Models/Requests/GetServerActivitiesMediaContainer.md - - docs/Models/Requests/GetServerActivitiesResponse.md - - docs/Models/Requests/GetServerActivitiesResponseBody.md - - docs/Models/Requests/GetServerCapabilitiesResponse.md - - docs/Models/Requests/GetServerCapabilitiesResponseBody.md - - docs/Models/Requests/GetServerIdentityMediaContainer.md - - docs/Models/Requests/GetServerIdentityResponse.md - - docs/Models/Requests/GetServerIdentityResponseBody.md - - docs/Models/Requests/GetServerListMediaContainer.md - - docs/Models/Requests/GetServerListResponse.md - - docs/Models/Requests/GetServerListResponseBody.md - - docs/Models/Requests/GetServerListServer.md - - docs/Models/Requests/GetServerPreferencesMediaContainer.md - - docs/Models/Requests/GetServerPreferencesResponse.md - - docs/Models/Requests/GetServerPreferencesResponseBody.md - - docs/Models/Requests/GetServerResourcesRequest.md - - docs/Models/Requests/GetServerResourcesResponse.md - - docs/Models/Requests/GetSessionHistoryMediaContainer.md - - docs/Models/Requests/GetSessionHistoryMetadata.md - - docs/Models/Requests/GetSessionHistoryRequest.md - - docs/Models/Requests/GetSessionHistoryResponse.md - - docs/Models/Requests/GetSessionHistoryResponseBody.md - - docs/Models/Requests/GetSessionsMedia.md - - docs/Models/Requests/GetSessionsMediaContainer.md - - docs/Models/Requests/GetSessionsMetadata.md - - docs/Models/Requests/GetSessionsPart.md + - docs/Models/Requests/GetPostplayHubsRequest.md + - docs/Models/Requests/GetPostplayHubsResponse.md + - docs/Models/Requests/GetPreferenceRequest.md + - docs/Models/Requests/GetPreferenceResponse.md + - docs/Models/Requests/GetPromotedHubsMediaContainer.md + - docs/Models/Requests/GetPromotedHubsRequest.md + - docs/Models/Requests/GetPromotedHubsResponse.md + - docs/Models/Requests/GetPromotedHubsResponseBody.md + - docs/Models/Requests/GetRandomArtworkRequest.md + - docs/Models/Requests/GetRandomArtworkResponse.md + - docs/Models/Requests/GetRelatedHubsRequest.md + - docs/Models/Requests/GetRelatedHubsResponse.md + - docs/Models/Requests/GetRelatedItemsMediaContainer.md + - docs/Models/Requests/GetRelatedItemsRequest.md + - docs/Models/Requests/GetRelatedItemsResponse.md + - docs/Models/Requests/GetRelatedItemsResponseBody.md + - docs/Models/Requests/GetScheduledRecordingsMediaContainer.md + - docs/Models/Requests/GetScheduledRecordingsResponse.md + - docs/Models/Requests/GetScheduledRecordingsResponseBody.md + - docs/Models/Requests/GetSectionFiltersMediaContainer.md + - docs/Models/Requests/GetSectionFiltersRequest.md + - docs/Models/Requests/GetSectionFiltersResponse.md + - docs/Models/Requests/GetSectionFiltersResponseBody.md + - docs/Models/Requests/GetSectionHubsMediaContainer.md + - docs/Models/Requests/GetSectionHubsRequest.md + - docs/Models/Requests/GetSectionHubsResponse.md + - docs/Models/Requests/GetSectionHubsResponseBody.md + - docs/Models/Requests/GetSectionImageRequest.md + - docs/Models/Requests/GetSectionImageResponse.md + - docs/Models/Requests/GetSectionPreferencesRequest.md + - docs/Models/Requests/GetSectionPreferencesResponse.md + - docs/Models/Requests/GetSectionsMediaContainer.md + - docs/Models/Requests/GetSectionsPrefsRequest.md + - docs/Models/Requests/GetSectionsPrefsResponse.md + - docs/Models/Requests/GetSectionsResponse.md + - docs/Models/Requests/GetSectionsResponseBody.md + - docs/Models/Requests/GetServerInfoRequest.md + - docs/Models/Requests/GetServerInfoResponse.md + - docs/Models/Requests/GetSessionPlaylistIndexRequest.md + - docs/Models/Requests/GetSessionPlaylistIndexResponse.md + - docs/Models/Requests/GetSessionSegmentRequest.md + - docs/Models/Requests/GetSessionSegmentResponse.md - docs/Models/Requests/GetSessionsResponse.md - - docs/Models/Requests/GetSessionsResponseBody.md - - docs/Models/Requests/GetSessionsStream.md - - docs/Models/Requests/GetSessionsUser.md + - docs/Models/Requests/GetSonicPathRequest.md + - docs/Models/Requests/GetSonicPathResponse.md + - docs/Models/Requests/GetSonicallySimilarRequest.md + - docs/Models/Requests/GetSonicallySimilarResponse.md + - docs/Models/Requests/GetSourceConnectionInformationMediaContainer.md - docs/Models/Requests/GetSourceConnectionInformationRequest.md - docs/Models/Requests/GetSourceConnectionInformationResponse.md - - docs/Models/Requests/GetStatisticsDevice.md - - docs/Models/Requests/GetStatisticsMediaContainer.md - - docs/Models/Requests/GetStatisticsRequest.md - - docs/Models/Requests/GetStatisticsResponse.md - - docs/Models/Requests/GetStatisticsResponseBody.md - - docs/Models/Requests/GetThumbImageRequest.md - - docs/Models/Requests/GetThumbImageResponse.md - - docs/Models/Requests/GetTimelineRequest.md - - docs/Models/Requests/GetTimelineResponse.md - - docs/Models/Requests/GetTokenByPinIdAuthPinContainer.md - - docs/Models/Requests/GetTokenByPinIdGeoData.md - - docs/Models/Requests/GetTokenByPinIdRequest.md - - docs/Models/Requests/GetTokenByPinIdResponse.md - - docs/Models/Requests/GetTokenDetailsAuthenticationResponseStatus.md - - docs/Models/Requests/GetTokenDetailsAuthenticationStatus.md - - docs/Models/Requests/GetTokenDetailsResponse.md - - docs/Models/Requests/GetTokenDetailsStatus.md - - docs/Models/Requests/GetTokenDetailsSubscription.md - - docs/Models/Requests/GetTokenDetailsUserPlexAccount.md - - docs/Models/Requests/GetTopWatchedContentCountry.md - - docs/Models/Requests/GetTopWatchedContentGenre.md - - docs/Models/Requests/GetTopWatchedContentGuids.md - - docs/Models/Requests/GetTopWatchedContentMediaContainer.md - - docs/Models/Requests/GetTopWatchedContentMetadata.md - - docs/Models/Requests/GetTopWatchedContentQueryParamIncludeGuids.md - - docs/Models/Requests/GetTopWatchedContentQueryParamType.md - - docs/Models/Requests/GetTopWatchedContentRequest.md - - docs/Models/Requests/GetTopWatchedContentResponse.md - - docs/Models/Requests/GetTopWatchedContentResponseBody.md - - docs/Models/Requests/GetTopWatchedContentRole.md - - docs/Models/Requests/GetTopWatchedContentUser.md - - docs/Models/Requests/GetTranscodeSessionsMediaContainer.md - - docs/Models/Requests/GetTranscodeSessionsResponse.md - - docs/Models/Requests/GetTranscodeSessionsResponseBody.md - - docs/Models/Requests/GetTransientTokenQueryParamType.md + - docs/Models/Requests/GetSourceConnectionInformationResponseBody.md + - docs/Models/Requests/GetStreamLevelsLevel.md + - docs/Models/Requests/GetStreamLevelsMediaContainer.md + - docs/Models/Requests/GetStreamLevelsRequest.md + - docs/Models/Requests/GetStreamLevelsResponse.md + - docs/Models/Requests/GetStreamLevelsResponseBody.md + - docs/Models/Requests/GetStreamLoudnessRequest.md + - docs/Models/Requests/GetStreamLoudnessResponse.md + - docs/Models/Requests/GetStreamRequest.md + - docs/Models/Requests/GetStreamResponse.md + - docs/Models/Requests/GetSubscriptionRequest.md + - docs/Models/Requests/GetSubscriptionResponse.md + - docs/Models/Requests/GetTagsMediaContainer.md + - docs/Models/Requests/GetTagsRequest.md + - docs/Models/Requests/GetTagsResponse.md + - docs/Models/Requests/GetTagsResponseBody.md + - docs/Models/Requests/GetTasksResponse.md + - docs/Models/Requests/GetTasksResponseBody.md + - docs/Models/Requests/GetTemplateMediaContainer.md + - docs/Models/Requests/GetTemplateRequest.md + - docs/Models/Requests/GetTemplateResponse.md + - docs/Models/Requests/GetTemplateResponseBody.md + - docs/Models/Requests/GetThumbRequest.md + - docs/Models/Requests/GetThumbResponse.md + - docs/Models/Requests/GetTransientTokenMediaContainer.md - docs/Models/Requests/GetTransientTokenRequest.md - docs/Models/Requests/GetTransientTokenResponse.md - - docs/Models/Requests/GetUpdateStatusMediaContainer.md - - docs/Models/Requests/GetUpdateStatusResponse.md - - docs/Models/Requests/GetUpdateStatusResponseBody.md - - docs/Models/Requests/GetUserFriendsResponse.md - - docs/Models/Requests/GetUsersMediaContainer.md - - docs/Models/Requests/GetUsersRequest.md - - docs/Models/Requests/GetUsersResponse.md - - docs/Models/Requests/GetUsersResponseBody.md - - docs/Models/Requests/GetUsersServer.md - - docs/Models/Requests/GetWatchListRequest.md - - docs/Models/Requests/GetWatchListResponse.md - - docs/Models/Requests/GetWatchListResponseBody.md - - docs/Models/Requests/Guids.md - - docs/Models/Requests/HasThumbnail.md - - docs/Models/Requests/Hidden.md - - docs/Models/Requests/Home.md + - docs/Models/Requests/GetTransientTokenResponseBody.md + - docs/Models/Requests/GetUpdatesStatusMediaContainer.md + - docs/Models/Requests/GetUpdatesStatusResponse.md + - docs/Models/Requests/GetUpdatesStatusResponseBody.md + - docs/Models/Requests/GetUpdatesStatusState.md + - docs/Models/Requests/Hints.md + - docs/Models/Requests/HomeVisibility.md - docs/Models/Requests/Hub.md - - docs/Models/Requests/Image.md - - docs/Models/Requests/IncludeAdvanced.md - - docs/Models/Requests/IncludeCollections.md - - docs/Models/Requests/IncludeDetails.md - - docs/Models/Requests/IncludeExternalMedia.md - - docs/Models/Requests/IncludeGuids.md - - docs/Models/Requests/IncludeHttps.md - - docs/Models/Requests/IncludeIPv6.md - - docs/Models/Requests/IncludeMeta.md - - docs/Models/Requests/IncludeRelay.md - - docs/Models/Requests/InternalPaymentMethod.md + - docs/Models/Requests/Index.md + - docs/Models/Requests/IngestTransientItemRequest.md + - docs/Models/Requests/IngestTransientItemResponse.md + - docs/Models/Requests/Item.md + - docs/Models/Requests/Language.md - docs/Models/Requests/Level.md - - docs/Models/Requests/Libtype.md + - docs/Models/Requests/Lineup.md + - docs/Models/Requests/LineupType.md + - docs/Models/Requests/ListActivitiesMediaContainer.md + - docs/Models/Requests/ListActivitiesResponse.md + - docs/Models/Requests/ListActivitiesResponseBody.md + - docs/Models/Requests/ListContentRequest.md + - docs/Models/Requests/ListContentResponse.md + - docs/Models/Requests/ListDVRsDVRsMediaContainer.md + - docs/Models/Requests/ListDVRsMediaContainer.md + - docs/Models/Requests/ListDVRsResponse.md + - docs/Models/Requests/ListDVRsResponseBody.md + - docs/Models/Requests/ListDevicesResponse.md + - docs/Models/Requests/ListDownloadQueueItemsMediaContainer.md + - docs/Models/Requests/ListDownloadQueueItemsRequest.md + - docs/Models/Requests/ListDownloadQueueItemsResponse.md + - docs/Models/Requests/ListDownloadQueueItemsResponseBody.md + - docs/Models/Requests/ListDownloadQueueItemsStatus.md + - docs/Models/Requests/ListHubsMediaContainer.md + - docs/Models/Requests/ListHubsRequest.md + - docs/Models/Requests/ListHubsResponse.md + - docs/Models/Requests/ListHubsResponseBody.md + - docs/Models/Requests/ListLineupsRequest.md + - docs/Models/Requests/ListLineupsResponse.md + - docs/Models/Requests/ListMatchesRequest.md + - docs/Models/Requests/ListMatchesResponse.md + - docs/Models/Requests/ListMomentsRequest.md + - docs/Models/Requests/ListMomentsResponse.md + - docs/Models/Requests/ListPersonMediaRequest.md + - docs/Models/Requests/ListPersonMediaResponse.md + - docs/Models/Requests/ListPlaybackHistoryMediaContainer.md + - docs/Models/Requests/ListPlaybackHistoryMetadata.md + - docs/Models/Requests/ListPlaybackHistoryRequest.md + - docs/Models/Requests/ListPlaybackHistoryResponse.md + - docs/Models/Requests/ListPlaybackHistoryResponseBody.md + - docs/Models/Requests/ListPlaylistsRequest.md + - docs/Models/Requests/ListPlaylistsResponse.md + - docs/Models/Requests/ListProvidersMediaContainer.md + - docs/Models/Requests/ListProvidersResponse.md + - docs/Models/Requests/ListProvidersResponseBody.md + - docs/Models/Requests/ListSessionsMediaContainer.md + - docs/Models/Requests/ListSessionsResponse.md + - docs/Models/Requests/ListSessionsResponseBody.md + - docs/Models/Requests/ListSimilarRequest.md + - docs/Models/Requests/ListSimilarResponse.md + - docs/Models/Requests/ListSonicallySimilarRequest.md + - docs/Models/Requests/ListSonicallySimilarResponse.md + - docs/Models/Requests/ListTopUsersMediaContainer.md + - docs/Models/Requests/ListTopUsersRequest.md + - docs/Models/Requests/ListTopUsersResponse.md + - docs/Models/Requests/ListTopUsersResponseBody.md - docs/Models/Requests/Location.md - - docs/Models/Requests/LogLineRequest.md - - docs/Models/Requests/LogLineResponse.md - - docs/Models/Requests/LogMultiLineResponse.md - - docs/Models/Requests/MailingListStatus.md + - docs/Models/Requests/MakeDecisionRequest.md + - docs/Models/Requests/MakeDecisionResponse.md - docs/Models/Requests/MarkPlayedRequest.md - docs/Models/Requests/MarkPlayedResponse.md - - docs/Models/Requests/MarkUnplayedRequest.md - - docs/Models/Requests/MarkUnplayedResponse.md - - docs/Models/Requests/Marker.md - - docs/Models/Requests/Media.md + - docs/Models/Requests/MatchItemRequest.md + - docs/Models/Requests/MatchItemResponse.md - docs/Models/Requests/MediaContainer.md - - docs/Models/Requests/MediaProvider.md - - docs/Models/Requests/MediaReviewsVisibility.md - - docs/Models/Requests/Meta.md + - docs/Models/Requests/MediaGrabber.md + - docs/Models/Requests/MediaSettings.md + - docs/Models/Requests/MediaSubscription.md + - docs/Models/Requests/MergeItemsRequest.md + - docs/Models/Requests/MergeItemsResponse.md - docs/Models/Requests/Metadata.md - - docs/Models/Requests/MinSize.md - - docs/Models/Requests/MyPlex.md - - docs/Models/Requests/One.md - - docs/Models/Requests/OnlyTransient.md - - docs/Models/Requests/Operator.md - - docs/Models/Requests/OptimizedForStreaming.md - - docs/Models/Requests/OptimizedForStreaming1.md - - docs/Models/Requests/Owned.md - - docs/Models/Requests/Part.md - - docs/Models/Requests/PastSubscription.md - - docs/Models/Requests/PathParamTaskName.md - - docs/Models/Requests/Pending.md - - docs/Models/Requests/PerformSearchRequest.md - - docs/Models/Requests/PerformSearchResponse.md - - docs/Models/Requests/PerformVoiceSearchRequest.md - - docs/Models/Requests/PerformVoiceSearchResponse.md - - docs/Models/Requests/Pivot.md - - docs/Models/Requests/Player.md + - docs/Models/Requests/ModifyDeviceMediaContainer.md + - docs/Models/Requests/ModifyDeviceRequest.md + - docs/Models/Requests/ModifyDeviceResponse.md + - docs/Models/Requests/ModifyDeviceResponseBody.md + - docs/Models/Requests/MoveCollectionItemRequest.md + - docs/Models/Requests/MoveCollectionItemResponse.md + - docs/Models/Requests/MoveHubRequest.md + - docs/Models/Requests/MoveHubResponse.md + - docs/Models/Requests/MovePlayQueueItemRequest.md + - docs/Models/Requests/MovePlayQueueItemResponse.md + - docs/Models/Requests/MovePlaylistItemRequest.md + - docs/Models/Requests/MovePlaylistItemResponse.md + - docs/Models/Requests/OptimizeDatabaseRequest.md + - docs/Models/Requests/OptimizeDatabaseResponse.md + - docs/Models/Requests/Params.md + - docs/Models/Requests/PathParamElement.md + - docs/Models/Requests/PathParamIndex.md + - docs/Models/Requests/PathParamTask.md + - docs/Models/Requests/PlayQueueGenerator.md - docs/Models/Requests/PlaylistType.md - - docs/Models/Requests/PlexDevice.md - - docs/Models/Requests/PostMediaArtsRequest.md - - docs/Models/Requests/PostMediaArtsResponse.md - - docs/Models/Requests/PostMediaPosterRequest.md - - docs/Models/Requests/PostMediaPosterResponse.md - - docs/Models/Requests/PostUsersSignInDataAuthenticationResponseStatus.md - - docs/Models/Requests/PostUsersSignInDataAuthenticationStatus.md - - docs/Models/Requests/PostUsersSignInDataAuthenticationSubscription.md - - docs/Models/Requests/PostUsersSignInDataAutoSelectSubtitle.md - - docs/Models/Requests/PostUsersSignInDataDefaultSubtitleAccessibility.md - - docs/Models/Requests/PostUsersSignInDataDefaultSubtitleForced.md - - docs/Models/Requests/PostUsersSignInDataMailingListStatus.md - - docs/Models/Requests/PostUsersSignInDataMediaReviewsVisibility.md - - docs/Models/Requests/PostUsersSignInDataRequest.md - - docs/Models/Requests/PostUsersSignInDataRequestBody.md - - docs/Models/Requests/PostUsersSignInDataResponse.md - - docs/Models/Requests/PostUsersSignInDataServices.md - - docs/Models/Requests/PostUsersSignInDataState.md - - docs/Models/Requests/PostUsersSignInDataStatus.md - - docs/Models/Requests/PostUsersSignInDataSubscription.md - - docs/Models/Requests/PostUsersSignInDataUserPlexAccount.md - - docs/Models/Requests/PostUsersSignInDataUserProfile.md - - docs/Models/Requests/PostUsersSignInDataWatchedIndicator.md - - docs/Models/Requests/Producer.md - - docs/Models/Requests/Protected.md + - docs/Models/Requests/Policy.md + - docs/Models/Requests/Prefs.md + - docs/Models/Requests/ProcessSubscriptionsResponse.md + - docs/Models/Requests/ProcessingState.md + - docs/Models/Requests/ProcessingStateContext.md - docs/Models/Requests/Protocol.md - - docs/Models/Requests/Provider.md - - docs/Models/Requests/QueryParamFilter.md - - docs/Models/Requests/QueryParamForce.md - - docs/Models/Requests/QueryParamIncludeCollections.md - - docs/Models/Requests/QueryParamIncludeExternalMedia.md - - docs/Models/Requests/QueryParamIncludeGuids.md - - docs/Models/Requests/QueryParamIncludeMeta.md - - docs/Models/Requests/QueryParamOnlyTransient.md - - docs/Models/Requests/QueryParamSmart.md + - docs/Models/Requests/QueryParamArgs.md + - docs/Models/Requests/QueryParamAttributes.md + - docs/Models/Requests/QueryParamLocation.md + - docs/Models/Requests/QueryParamPrefs.md + - docs/Models/Requests/QueryParamProtocol.md + - docs/Models/Requests/QueryParamSubtitles.md - docs/Models/Requests/QueryParamType.md - - docs/Models/Requests/Rating.md - - docs/Models/Requests/Ratings.md + - docs/Models/Requests/RecommendationsVisibility.md + - docs/Models/Requests/RefreshItemsMetadataRequest.md + - docs/Models/Requests/RefreshItemsMetadataResponse.md + - docs/Models/Requests/RefreshPlaylistRequest.md + - docs/Models/Requests/RefreshPlaylistResponse.md + - docs/Models/Requests/RefreshProvidersResponse.md + - docs/Models/Requests/RefreshSectionRequest.md + - docs/Models/Requests/RefreshSectionResponse.md + - docs/Models/Requests/RefreshSectionsMetadataRequest.md + - docs/Models/Requests/RefreshSectionsMetadataResponse.md - docs/Models/Requests/Release.md - - docs/Models/Requests/ResponseBody.md - - docs/Models/Requests/Restricted.md - - docs/Models/Requests/Role.md + - docs/Models/Requests/ReloadGuideRequest.md + - docs/Models/Requests/ReloadGuideResponse.md + - docs/Models/Requests/RemoveDeviceFromDVRDVR.md + - docs/Models/Requests/RemoveDeviceFromDVRDVRsMediaContainer.md + - docs/Models/Requests/RemoveDeviceFromDVRMediaContainer.md + - docs/Models/Requests/RemoveDeviceFromDVRRequest.md + - docs/Models/Requests/RemoveDeviceFromDVRResponse.md + - docs/Models/Requests/RemoveDeviceFromDVRResponseBody.md + - docs/Models/Requests/RemoveDeviceMediaContainer.md + - docs/Models/Requests/RemoveDeviceRequest.md + - docs/Models/Requests/RemoveDeviceResponse.md + - docs/Models/Requests/RemoveDeviceResponseBody.md + - docs/Models/Requests/RemoveDownloadQueueItemsRequest.md + - docs/Models/Requests/RemoveDownloadQueueItemsResponse.md + - docs/Models/Requests/ReorderSubscriptionRequest.md + - docs/Models/Requests/ReorderSubscriptionResponse.md + - docs/Models/Requests/ReportRequest.md + - docs/Models/Requests/ReportResponse.md + - docs/Models/Requests/ReportResponseBody.md + - docs/Models/Requests/ResetPlayQueueRequest.md + - docs/Models/Requests/ResetPlayQueueResponse.md + - docs/Models/Requests/ResetSectionDefaultsRequest.md + - docs/Models/Requests/ResetSectionDefaultsResponse.md + - docs/Models/Requests/RestartProcessingDownloadQueueItemsRequest.md + - docs/Models/Requests/RestartProcessingDownloadQueueItemsResponse.md + - docs/Models/Requests/ScanRequest.md + - docs/Models/Requests/ScanResponse.md - docs/Models/Requests/Scope.md - - docs/Models/Requests/SearchResult.md - - docs/Models/Requests/SearchTypes.md - - docs/Models/Requests/Server.md - - docs/Models/Requests/Services.md - - docs/Models/Requests/Session.md - - docs/Models/Requests/Setting.md - - docs/Models/Requests/SharedServers.md - - docs/Models/Requests/SharedSources.md - - docs/Models/Requests/ShowOrdering.md - - docs/Models/Requests/Similar.md - - docs/Models/Requests/Skip.md - - docs/Models/Requests/Smart.md - - docs/Models/Requests/Sort.md - - docs/Models/Requests/StartAllTasksResponse.md + - docs/Models/Requests/SearchHubsMediaContainer.md + - docs/Models/Requests/SearchHubsRequest.md + - docs/Models/Requests/SearchHubsResponse.md + - docs/Models/Requests/SearchHubsResponseBody.md + - docs/Models/Requests/SetChannelmapRequest.md + - docs/Models/Requests/SetChannelmapResponse.md + - docs/Models/Requests/SetDVRPreferencesDVR.md + - docs/Models/Requests/SetDVRPreferencesDVRsMediaContainer.md + - docs/Models/Requests/SetDVRPreferencesMediaContainer.md + - docs/Models/Requests/SetDVRPreferencesRequest.md + - docs/Models/Requests/SetDVRPreferencesResponse.md + - docs/Models/Requests/SetDVRPreferencesResponseBody.md + - docs/Models/Requests/SetDevicePreferencesRequest.md + - docs/Models/Requests/SetDevicePreferencesResponse.md + - docs/Models/Requests/SetItemArtworkRequest.md + - docs/Models/Requests/SetItemArtworkResponse.md + - docs/Models/Requests/SetItemPreferencesRequest.md + - docs/Models/Requests/SetItemPreferencesResponse.md + - docs/Models/Requests/SetPreferencesRequest.md + - docs/Models/Requests/SetPreferencesResponse.md + - docs/Models/Requests/SetRatingRequest.md + - docs/Models/Requests/SetRatingResponse.md + - docs/Models/Requests/SetSectionPreferencesQueryParamPrefs.md + - docs/Models/Requests/SetSectionPreferencesRequest.md + - docs/Models/Requests/SetSectionPreferencesResponse.md + - docs/Models/Requests/SetStreamOffsetRequest.md + - docs/Models/Requests/SetStreamOffsetResponse.md + - docs/Models/Requests/SetStreamSelectionRequest.md + - docs/Models/Requests/SetStreamSelectionResponse.md + - docs/Models/Requests/ShuffleRequest.md + - docs/Models/Requests/ShuffleResponse.md + - docs/Models/Requests/SplitItemRequest.md + - docs/Models/Requests/SplitItemResponse.md + - docs/Models/Requests/StartAnalysisRequest.md + - docs/Models/Requests/StartAnalysisResponse.md + - docs/Models/Requests/StartBifGenerationRequest.md + - docs/Models/Requests/StartBifGenerationResponse.md - docs/Models/Requests/StartTaskRequest.md - docs/Models/Requests/StartTaskResponse.md - - docs/Models/Requests/StartUniversalTranscodeRequest.md - - docs/Models/Requests/StartUniversalTranscodeResponse.md + - docs/Models/Requests/StartTasksResponse.md + - docs/Models/Requests/StartTranscodeSessionQueryParamLocation.md + - docs/Models/Requests/StartTranscodeSessionQueryParamProtocol.md + - docs/Models/Requests/StartTranscodeSessionQueryParamSubtitles.md + - docs/Models/Requests/StartTranscodeSessionRequest.md + - docs/Models/Requests/StartTranscodeSessionResponse.md - docs/Models/Requests/State.md - - docs/Models/Requests/StatisticsBandwidth.md - - docs/Models/Requests/StatisticsMedia.md - - docs/Models/Requests/StatisticsResources.md - docs/Models/Requests/Status.md - - docs/Models/Requests/StopAllTasksResponse.md + - docs/Models/Requests/StopAllRefreshesResponse.md + - docs/Models/Requests/StopDVRReloadRequest.md + - docs/Models/Requests/StopDVRReloadResponse.md + - docs/Models/Requests/StopScanRequest.md + - docs/Models/Requests/StopScanResponse.md - docs/Models/Requests/StopTaskRequest.md - docs/Models/Requests/StopTaskResponse.md - - docs/Models/Requests/StopTranscodeSessionRequest.md - - docs/Models/Requests/StopTranscodeSessionResponse.md - - docs/Models/Requests/Stream.md - - docs/Models/Requests/Subscription.md - - docs/Models/Requests/Tag.md - - docs/Models/Requests/TaskName.md - - docs/Models/Requests/Tonight.md - - docs/Models/Requests/TranscodeSession.md - - docs/Models/Requests/Trials.md + - docs/Models/Requests/StopTasksResponse.md + - docs/Models/Requests/SubscriptionTemplate.md + - docs/Models/Requests/Subtitles.md + - docs/Models/Requests/Task.md + - docs/Models/Requests/TerminateSessionRequest.md + - docs/Models/Requests/TerminateSessionResponse.md + - docs/Models/Requests/Transcode.md + - docs/Models/Requests/TranscodeImageRequest.md + - docs/Models/Requests/TranscodeImageResponse.md + - docs/Models/Requests/TranscodeJob.md + - docs/Models/Requests/TranscodeSubtitlesRequest.md + - docs/Models/Requests/TranscodeSubtitlesResponse.md + - docs/Models/Requests/TriggerFallbackRequest.md + - docs/Models/Requests/TriggerFallbackResponse.md + - docs/Models/Requests/TuneChannelRequest.md + - docs/Models/Requests/TuneChannelResponse.md - docs/Models/Requests/Type.md - docs/Models/Requests/UltraBlurColors.md - - docs/Models/Requests/UpdatePlayProgressRequest.md - - docs/Models/Requests/UpdatePlayProgressResponse.md + - docs/Models/Requests/UnmatchRequest.md + - docs/Models/Requests/UnmatchResponse.md + - docs/Models/Requests/UnscrobbleRequest.md + - docs/Models/Requests/UnscrobbleResponse.md + - docs/Models/Requests/UnshuffleRequest.md + - docs/Models/Requests/UnshuffleResponse.md + - docs/Models/Requests/UpdateHubVisibilityRequest.md + - docs/Models/Requests/UpdateHubVisibilityResponse.md + - docs/Models/Requests/UpdateItemArtworkRequest.md + - docs/Models/Requests/UpdateItemArtworkResponse.md + - docs/Models/Requests/UpdateItemsRequest.md + - docs/Models/Requests/UpdateItemsResponse.md - docs/Models/Requests/UpdatePlaylistRequest.md - docs/Models/Requests/UpdatePlaylistResponse.md - docs/Models/Requests/UploadPlaylistRequest.md - docs/Models/Requests/UploadPlaylistResponse.md - - docs/Models/Requests/Upscale.md - - docs/Models/Requests/User.md - - docs/Models/Requests/UserProfile.md - - docs/Models/Requests/WatchedIndicator.md - - docs/Models/Requests/Writer.md + - docs/Models/Requests/VoiceSearchHubsMediaContainer.md + - docs/Models/Requests/VoiceSearchHubsRequest.md + - docs/Models/Requests/VoiceSearchHubsResponse.md + - docs/Models/Requests/VoiceSearchHubsResponseBody.md + - docs/Models/Requests/WriteLogResponse.md + - docs/Models/Requests/WriteMessageRequest.md + - docs/Models/Requests/WriteMessageResponse.md - docs/sdks/activities/README.md - - docs/sdks/authentication/README.md - docs/sdks/butler/README.md + - docs/sdks/collections/README.md + - docs/sdks/content/README.md + - docs/sdks/devices/README.md + - docs/sdks/downloadqueue/README.md + - docs/sdks/dvrs/README.md + - docs/sdks/epg/README.md + - docs/sdks/events/README.md + - docs/sdks/general/README.md - docs/sdks/hubs/README.md - docs/sdks/library/README.md + - docs/sdks/librarycollections/README.md + - docs/sdks/libraryplaylists/README.md + - docs/sdks/livetv/README.md - docs/sdks/log/README.md - - docs/sdks/media/README.md - - docs/sdks/playlists/README.md - - docs/sdks/plex/README.md - - docs/sdks/plexapi/README.md + - docs/sdks/playlist/README.md + - docs/sdks/playqueue/README.md + - docs/sdks/preferences/README.md + - docs/sdks/provider/README.md + - docs/sdks/rate/README.md - docs/sdks/search/README.md - - docs/sdks/server/README.md - - docs/sdks/sessions/README.md - - docs/sdks/statistics/README.md + - docs/sdks/status/README.md + - docs/sdks/subscriptions/README.md + - docs/sdks/timeline/README.md + - docs/sdks/transcoder/README.md + - docs/sdks/ultrablur/README.md - docs/sdks/updater/README.md - - docs/sdks/users/README.md - - docs/sdks/video/README.md - - docs/sdks/watchlist/README.md - global.json examples: getServerCapabilities: @@ -2016,6 +1793,19 @@ examples: parameters: query: key: 59398 + identifier: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -2234,6 +2024,19 @@ examples: parameters: path: taskName: "RefreshPeriodicMetadata" + task: "RefreshLocalMedia" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -2244,6 +2047,19 @@ examples: parameters: path: taskName: "CleanOldCacheFiles" + task: "CleanOldBundles" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -2810,9 +2626,21 @@ examples: type: "audio" smart: 1 uri: "https://short-term-disconnection.name/" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "200": - application/json: {"MediaContainer": {"size": 7, "Metadata": [{"ratingKey": "96", "key": "/playlists/96/items", "guid": "com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55", "type": "playlist", "title": "A Great Playlist", "summary": "What a great playlist", "smart": false, "playlistType": "video", "icon": "playlist://image.smart", "viewCount": 1, "lastViewedAt": 1705719589, "leafCount": 1, "addedAt": 1705719589, "updatedAt": 1705724593, "composite": "/playlists/96/composite/1705724593", "duration": 141000}]}} + application/json: {"MediaContainer": {"Metadata": [{"composite": "/playlists/96/composite/1705724593", "duration": 141000, "key": "/playlists/96/items", "leafCount": 1, "playlistType": "video", "smart": false, "title": "A Great Playlist", "type": "playlist", "addedAt": 1705719589, "lastViewedAt": 1705719589, "ratingKey": "96", "summary": "What a great playlist", "updatedAt": 1705724593, "viewCount": 1, "guid": "com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55", "icon": "playlist://image.smart"}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2831,9 +2659,22 @@ examples: parameters: path: playlistID: 8419.53 + playlistId: 841953 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "200": - application/json: {"MediaContainer": {"size": 1, "Metadata": [{"content": "library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1", "ratingKey": "95", "key": "/playlists/95/items", "guid": "com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91", "type": "playlist", "title": "Smart Movie Playlist", "summary": "", "smart": true, "playlistType": "video", "composite": "/playlists/95/composite/1705717387", "icon": "playlist://image.smart", "duration": 282000, "leafCount": 2, "addedAt": 1705716493, "updatedAt": 1705717387}]}} + application/json: {"MediaContainer": {"Metadata": [{"composite": "/playlists/95/composite/1705717387", "duration": 282000, "key": "/playlists/95/items", "leafCount": 2, "playlistType": "video", "smart": true, "title": "Smart Movie Playlist", "type": "playlist", "addedAt": 1705716493, "ratingKey": "95", "summary": "", "updatedAt": 1705717387, "content": "library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1", "guid": "com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91", "icon": "playlist://image.smart"}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2843,6 +2684,19 @@ examples: parameters: path: playlistID: 3432.93 + playlistId: 343293 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -2853,6 +2707,19 @@ examples: parameters: path: playlistID: 1579.66 + playlistId: 157966 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -2904,6 +2771,18 @@ examples: path: "/home/barkley/playlist.m3u" force: 1 sectionID: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -2915,21 +2794,50 @@ examples: query: type: "delegation" scope: "all" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} + "200": + application/json: {} getSourceConnectionInformation: speakeasy-default-get-source-connection-information: parameters: query: source: "server://client-identifier" + refresh: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} + "200": + application/json: {} getTokenDetails: speakeasy-default-get-token-details: responses: @@ -3047,7 +2955,7 @@ examples: speakeasy-default-get-sessions: responses: "200": - application/json: {"MediaContainer": {"size": 1, "Metadata": [{"addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "guid": "plex://track/6535834f71f22f36f71a8e8f", "index": 1, "key": "/library/metadata/67085", "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "originalTitle": "The American Dream Is Killing Me", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentStudio": "Reprise Records", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "parentYear": 2024, "ratingCount": 45885, "ratingKey": "67085", "sessionKey": "203", "thumb": "/library/metadata/67084/thumb/1705543314", "title": "The American Dream Is Killing Me", "titleSort": "American Dream Is Killing Me", "type": "track", "updatedAt": 1705543314, "viewOffset": 1000, "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}], "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "The American Dream Is Killing Me", "type": "track", "addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "index": 1, "key": "/library/metadata/67085", "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": 130355, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}], "selected": true}], "originalTitle": "The American Dream Is Killing Me", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "ratingCount": 45885, "ratingKey": "67085", "thumb": "/library/metadata/67084/thumb/1705543314", "titleSort": "American Dream Is Killing Me", "updatedAt": 1705543314, "viewOffset": 1000, "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "guid": "plex://track/6535834f71f22f36f71a8e8f", "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentStudio": "Reprise Records", "parentYear": 2024, "sessionKey": "203", "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -3211,6 +3119,18 @@ examples: query: tonight: 1 skip: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -3263,5 +3183,4200 @@ examples: application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} + getServerInfo: + speakeasy-default-get-server-info: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getIdentity: + speakeasy-default-get-identity: + responses: + "200": + application/json: {} + getNotifications: + speakeasy-default-get-notifications: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/octet-stream: "0xEbc2765119" + connectWebSocket: + speakeasy-default-connect-web-socket: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/octet-stream: "0xF4Fad790AA" + getAllPreferences: + speakeasy-default-get-all-preferences: + responses: + "200": + application/json: {} + setPreferences: + speakeasy-default-set-preferences: + parameters: + query: + prefs: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getPreference: + speakeasy-default-get-preference: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + setRating: + speakeasy-default-set-rating: + parameters: + query: + identifier: "" + key: "" + rating: 8722.46 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + report: + speakeasy-default-report: + parameters: + query: + key: "/foo" + ratingKey: "xyz" + state: "playing" + playQueueItemID: "123" + time: 0 + duration: 10000 + continuing: 1 + updated: 14200000 + offline: 1 + timeToFirstFrame: 1000 + timeStalled: 1000 + bandwidth: 100 + bufferedTime: 100 + bufferedSize: 1024 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"livetv": 7, "machineIdentifier": "0123456789abcdef0123456789abcdef012345678", "musicAnalysis": 2, "myPlexMappingState": "mapped", "myPlexSigninState": "ok", "offlineTranscode": 1}} + unscrobble: + speakeasy-default-unscrobble: + parameters: + query: + identifier: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + listActivities: + speakeasy-default-list-activities: + responses: + "200": + application/json: {} + cancelActivity: + speakeasy-default-cancel-activity: + parameters: + path: + activityId: "d6199ba1-fb5e-4cae-bf17-1a5369c1cf1e" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + stopTasks: {} + getTasks: + speakeasy-default-get-tasks: + responses: + "200": + application/json: {} + startTasks: {} + createDownloadQueue: + speakeasy-default-create-download-queue: + responses: + "200": + application/json: {} + getDownloadQueue: + speakeasy-default-get-download-queue: + parameters: + path: + queueId: 922802 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + addDownloadQueueItems: + speakeasy-default-add-download-queue-items: + parameters: + path: + queueId: 984925 + query: + keys: ["/library/metadata/3", "/library/metadata/6"] + advancedSubtitles: "burn" + audioBoost: 50 + audioChannelCount: 5 + autoAdjustQuality: 1 + autoAdjustSubtitle: 1 + directPlay: 1 + directStream: 1 + directStreamAudio: 1 + disableResolutionRotation: 1 + hasMDE: 1 + location: "wan" + mediaBufferSize: 102400 + mediaIndex: 0 + musicBitrate: 5000 + offset: 90.5 + partIndex: 0 + path: "/library/metadata/151671" + peakBitrate: 12000 + photoResolution: "1080x1080" + protocol: "dash" + secondsPerSegment: 5 + subtitleSize: 50 + subtitles: "segmented" + videoBitrate: 12000 + videoQuality: 50 + videoResolution: "1080x1080" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + listDownloadQueueItems: + speakeasy-default-list-download-queue-items: + parameters: + path: + queueId: 524138 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getItemDecision: + speakeasy-default-get-item-decision: + parameters: + path: + queueId: 231605 + itemId: 32 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getDownloadQueueMedia: + speakeasy-default-get-download-queue-media: + parameters: + path: + queueId: 663184 + itemId: 32 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + removeDownloadQueueItems: + speakeasy-default-remove-download-queue-items: + parameters: + path: + queueId: 946275 + itemId: [32, 345, 23] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getDownloadQueueItems: + speakeasy-default-get-download-queue-items: + parameters: + path: + queueId: 809886 + itemId: [32, 345, 23] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + restartProcessingDownloadQueueItems: + speakeasy-default-restart-processing-download-queue-items: + parameters: + path: + queueId: 713001 + itemId: [32, 345, 23] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getAllHubs: + speakeasy-default-get-all-hubs: + parameters: + query: + onlyTransient: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getContinueWatching: + speakeasy-default-get-continue-watching: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getHubItems: + speakeasy-default-get-hub-items: + parameters: + query: + identifier: ["", "", ""] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getPromotedHubs: + speakeasy-default-get-promoted-hubs: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getMetadataHubs: + speakeasy-default-get-metadata-hubs: + parameters: + path: + metadataId: 605482 + query: + onlyTransient: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getPostplayHubs: + speakeasy-default-get-postplay-hubs: + parameters: + path: + metadataId: 441419 + query: + onlyTransient: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getRelatedHubs: + speakeasy-default-get-related-hubs: + parameters: + path: + metadataId: 8858 + query: + onlyTransient: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getSectionHubs: + speakeasy-default-get-section-hubs: + parameters: + path: + sectionId: 336924 + query: + onlyTransient: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + resetSectionDefaults: + speakeasy-default-reset-section-defaults: + parameters: + path: + sectionId: 383022 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + listHubs: + speakeasy-default-list-hubs: + parameters: + path: + sectionId: 442546 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + createCustomHub: + speakeasy-default-create-custom-hub: + parameters: + path: + sectionId: 869922 + query: + metadataItemId: 703843 + promotedToRecommended: 1 + promotedToOwnHome: 1 + promotedToSharedHome: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + moveHub: + speakeasy-default-move-hub: + parameters: + path: + sectionId: 755710 + query: + identifier: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + deleteCustomHub: + speakeasy-default-delete-custom-hub: + parameters: + path: + sectionId: 625677 + identifier: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + updateHubVisibility: + speakeasy-default-update-hub-visibility: + parameters: + path: + sectionId: 341650 + identifier: "" + query: + promotedToRecommended: 1 + promotedToOwnHome: 1 + promotedToSharedHome: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + searchHubs: + speakeasy-default-search-hubs: + parameters: + query: + query: "" + sectionId: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + voiceSearchHubs: + speakeasy-default-voice-search-hubs: + parameters: + query: + query: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getLibraryItems: + speakeasy-default-get-library-items: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + deleteCaches: {} + cleanBundles: {} + ingestTransientItem: + speakeasy-default-ingest-transient-item: + parameters: + query: + url: "file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv" + virtualFilePath: "/Avatar.mkv" + computeHashes: 1 + ingestNonMatches: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getLibraryMatches: + speakeasy-default-get-library-matches: + parameters: + query: + includeFullMetadata: 1 + includeAncestorMetadata: 1 + includeAlternateMetadataSources: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + optimizeDatabase: + speakeasy-default-optimize-database: + parameters: + query: + async: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getRandomArtwork: + speakeasy-default-get-random-artwork: + parameters: + query: + sections: [5, 6] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getSections: + speakeasy-default-get-sections: + responses: + "200": + application/json: {} + addSection: + speakeasy-default-add-section: + parameters: + query: + name: "" + type: 39544 + agent: "" + language: "" + locations: ["O:\\fatboy\\Media\\Ripped\\Music", "O:\\fatboy\\Media\\My Music"] + prefs: {} + relative: 1 + importFromiTunes: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Directory": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + stopAllRefreshes: + speakeasy-default-stop-all-refreshes: + responses: + "200": + application/json: {"MediaContainer": {"livetv": 7, "machineIdentifier": "0123456789abcdef0123456789abcdef012345678", "musicAnalysis": 2, "myPlexMappingState": "mapped", "myPlexSigninState": "ok", "offlineTranscode": 1}} + getSectionsPrefs: + speakeasy-default-get-sections-prefs: + parameters: + query: + type: 460221 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"livetv": 7, "machineIdentifier": "0123456789abcdef0123456789abcdef012345678", "musicAnalysis": 2, "myPlexMappingState": "mapped", "myPlexSigninState": "ok", "offlineTranscode": 1}} + refreshSectionsMetadata: + speakeasy-default-refresh-sections-metadata: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getTags: + speakeasy-default-get-tags: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + deleteMetadataItem: + speakeasy-default-delete-metadata-item: + parameters: + path: + ids: "" + query: + proxy: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + editMetadataItem: + speakeasy-default-edit-metadata-item: + parameters: + path: + ids: ["", ""] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + detectAds: + speakeasy-default-detect-ads: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getAllItemLeaves: + speakeasy-default-get-all-item-leaves: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + analyzeMetadata: + speakeasy-default-analyze-metadata: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + generateThumbs: + speakeasy-default-generate-thumbs: + parameters: + path: + ids: "" + query: + force: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + detectCredits: + speakeasy-default-detect-credits: + parameters: + path: + ids: "" + query: + force: 1 + manual: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getExtras: + speakeasy-default-get-extras: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + addExtras: + speakeasy-default-add-extras: + parameters: + path: + ids: "" + query: + url: "https://super-mortise.biz/" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getFile: + speakeasy-default-get-file: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + audio/mpeg3: "0xDfa038cA28" + image/jpeg: "0x0a8797d7Ae" + startBifGeneration: + speakeasy-default-start-bif-generation: + parameters: + path: + ids: "" + query: + force: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + detectIntros: + speakeasy-default-detect-intros: + parameters: + path: + ids: "" + query: + force: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + createMarker: + speakeasy-default-create-marker: + parameters: + path: + ids: "" + query: + type: 248391 + startTimeOffset: 535191 + attributes: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + matchItem: + speakeasy-default-match-item: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + listMatches: + speakeasy-default-list-matches: + parameters: + path: + ids: "" + query: + manual: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + mergeItems: + speakeasy-default-merge-items: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + listSonicallySimilar: + speakeasy-default-list-sonically-similar: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + setItemPreferences: + speakeasy-default-set-item-preferences: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + refreshItemsMetadata: + speakeasy-default-refresh-items-metadata: + parameters: + path: + ids: "" + query: + markUpdated: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getRelatedItems: + speakeasy-default-get-related-items: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + listSimilar: + speakeasy-default-list-similar: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + splitItem: + speakeasy-default-split-item: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + addSubtitles: + speakeasy-default-add-subtitles: + parameters: + path: + ids: "" + query: + forced: 1 + hearingImpaired: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getItemTree: + speakeasy-default-get-item-tree: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"MetadataItem": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "MetadataItem": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}]}} + unmatch: + speakeasy-default-unmatch: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + listTopUsers: + speakeasy-default-list-top-users: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + detectVoiceActivity: + speakeasy-default-detect-voice-activity: + parameters: + path: + ids: "" + query: + force: 1 + manual: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getAugmentationStatus: + speakeasy-default-get-augmentation-status: + parameters: + path: + augmentationId: "" + query: + wait: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + setStreamSelection: + speakeasy-default-set-stream-selection: + parameters: + path: + partId: 360489 + query: + allParts: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getPerson: + speakeasy-default-get-person: + parameters: + path: + personId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Directory": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}} + listPersonMedia: + speakeasy-default-list-person-media: + parameters: + path: + personId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + deleteLibrarySection: + speakeasy-default-delete-library-section: + parameters: + path: + sectionId: "" + query: + async: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getLibraryDetails: + speakeasy-default-get-library-details: + parameters: + path: + sectionId: "" + query: + includeDetails: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Directory": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + editSection: + speakeasy-default-edit-section: + parameters: + path: + sectionId: "" + query: + agent: "" + locations: ["O:\\fatboy\\Media\\Ripped\\Music", "O:\\fatboy\\Media\\My Music"] + prefs: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + updateItems: + speakeasy-default-update-items: + parameters: + path: + sectionId: "" + query: + field.locked: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + startAnalysis: + speakeasy-default-start-analysis: + parameters: + path: + sectionId: 158829 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + autocomplete: + speakeasy-default-autocomplete: + parameters: + path: + sectionId: 942007 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getCollections: + speakeasy-default-get-collections: + parameters: + path: + sectionId: 348838 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getCommon: + speakeasy-default-get-common: + parameters: + path: + sectionId: 298154 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + emptyTrash: + speakeasy-default-empty-trash: + parameters: + path: + sectionId: 30052 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getSectionFilters: + speakeasy-default-get-section-filters: + parameters: + path: + sectionId: 380557 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getFirstCharacters: + speakeasy-default-get-first-characters: + parameters: + path: + sectionId: 3947 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + deleteIndexes: + speakeasy-default-delete-indexes: + parameters: + path: + sectionId: 588437 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + deleteIntros: + speakeasy-default-delete-intros: + parameters: + path: + sectionId: 498656 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getSectionPreferences: + speakeasy-default-get-section-preferences: + parameters: + path: + sectionId: 754869 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + setSectionPreferences: + speakeasy-default-set-section-preferences: + parameters: + path: + sectionId: 349936 + query: + prefs: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + cancelRefresh: + speakeasy-default-cancel-refresh: + parameters: + path: + sectionId: 326852 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + refreshSection: + speakeasy-default-refresh-section: + parameters: + path: + sectionId: 450300 + query: + force: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getAvailableSorts: + speakeasy-default-get-available-sorts: + parameters: + path: + sectionId: 212498 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getStreamLevels: + speakeasy-default-get-stream-levels: + parameters: + path: + streamId: 447611 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getStreamLoudness: + speakeasy-default-get-stream-loudness: + parameters: + path: + streamId: 277271 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + text/plain: "" + getChapterImage: + speakeasy-default-get-chapter-image: + parameters: + path: + mediaId: 892563 + chapter: 48348 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + image/jpeg: "0x6ea38cd6Bb" + setItemArtwork: + speakeasy-default-set-item-artwork: + parameters: + path: + ids: "" + element: "banner" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + updateItemArtwork: + speakeasy-default-update-item-artwork: + parameters: + path: + ids: "" + element: "clearLogo" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + deleteMarker: + speakeasy-default-delete-marker: + parameters: + path: + ids: "" + marker: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + editMarker: + speakeasy-default-edit-marker: + parameters: + path: + ids: "" + marker: "" + query: + type: 884347 + startTimeOffset: 517251 + attributes: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + deleteMediaItem: + speakeasy-default-delete-media-item: + parameters: + path: + ids: "" + mediaItem: "" + query: + proxy: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getPartIndex: + speakeasy-default-get-part-index: + parameters: + path: + partId: 724750 + index: "sd" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/octet-stream: "0x47e1bbeDB2" + deleteCollection: + speakeasy-default-delete-collection: + parameters: + path: + sectionId: 283619 + collectionId: 680895 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getSectionImage: + speakeasy-default-get-section-image: + parameters: + path: + sectionId: 925611 + updatedAt: 117413 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + deleteStream: + speakeasy-default-delete-stream: + parameters: + path: + streamId: 841510 + ext: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getStream: + speakeasy-default-get-stream: + parameters: + path: + streamId: 314506 + ext: "" + query: + autoAdjustSubtitle: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + setStreamOffset: + speakeasy-default-set-stream-offset: + parameters: + path: + streamId: 606295 + ext: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getItemArtwork: + speakeasy-default-get-item-artwork: + parameters: + path: + ids: "" + element: "poster" + timestamp: 999555 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + audio/mpeg3: "0xED8e454DA3" + image/jpeg: "0xB15361077C" + getMediaPart: + speakeasy-default-get-media-part: + parameters: + path: + partId: 877105 + changestamp: 970622 + filename: "example.file" + query: + download: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getImageFromBif: + speakeasy-default-get-image-from-bif: + parameters: + path: + partId: 304273 + index: "sd" + offset: 939569 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + image/jpeg: "0x9DE38cdDea" + createCollection: + speakeasy-default-create-collection: + parameters: + query: + sectionId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + listDVRs: + speakeasy-default-list-DV-rs: + responses: + "200": + application/json: {} + createDVR: + speakeasy-default-create-DVR: + parameters: + query: + lineup: "lineup://tv.plex.providers.epg.onconnect/USA-HI51418-DEFAULT" + device: ["device[]=device://tv.plex.grabbers.hdhomerun/1053C0CA"] + language: "eng" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + deleteDVR: + speakeasy-default-delete-DVR: + parameters: + path: + dvrId: 855088 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getDVR: + speakeasy-default-get-DVR: + parameters: + path: + dvrId: 973518 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + deleteLineup: + speakeasy-default-delete-lineup: + parameters: + path: + dvrId: 454470 + query: + lineup: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + addLineup: + speakeasy-default-add-lineup: + parameters: + path: + dvrId: 945235 + query: + lineup: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + setDVRPreferences: + speakeasy-default-set-DVR-preferences: + parameters: + path: + dvrId: 116357 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + stopDVRReload: + speakeasy-default-stop-DVR-reload: + parameters: + path: + dvrId: 348053 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + reloadGuide: + speakeasy-default-reload-guide: + parameters: + path: + dvrId: 140753 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + tuneChannel: + speakeasy-default-tune-channel: + parameters: + path: + dvrId: 834281 + channel: "2.1" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + removeDeviceFromDVR: + speakeasy-default-remove-device-from-DVR: + parameters: + path: + dvrId: 945416 + deviceId: 260761 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + addDeviceToDVR: + speakeasy-default-add-device-to-DVR: + parameters: + path: + dvrId: 334755 + deviceId: 852930 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + computeChannelMap: + speakeasy-default-compute-channel-map: + parameters: + query: + device: "" + lineup: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getChannels: + speakeasy-default-get-channels: + parameters: + query: + lineup: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getCountries: + speakeasy-default-get-countries: + responses: + "200": + application/json: {} + getAllLanguages: + speakeasy-default-get-all-languages: + responses: + "200": + application/json: {} + getLineup: + speakeasy-default-get-lineup: + parameters: + query: + device: "" + lineupGroup: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getLineupChannels: + speakeasy-default-get-lineup-channels: + parameters: + query: + lineup: ["", ""] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getCountriesLineups: + speakeasy-default-get-countries-lineups: + parameters: + path: + country: "Malawi" + epgId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getCountryRegions: + speakeasy-default-get-country-regions: + parameters: + path: + country: "Morocco" + epgId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + listLineups: + speakeasy-default-list-lineups: + parameters: + path: + country: "Vanuatu" + epgId: "" + region: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getLiveTVSession: + speakeasy-default-get-live-TV-session: + parameters: + path: + sessionId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getSessionPlaylistIndex: + speakeasy-default-get-session-playlist-index: + parameters: + path: + sessionId: "" + consumerId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getSessionSegment: + speakeasy-default-get-session-segment: + parameters: + path: + sessionId: "" + consumerId: "" + segmentId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + writeLog: + speakeasy-default-write-log: + requestBody: + text/plain: "0x0Ce2fFcEBF" + writeMessage: + speakeasy-default-write-message: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + enablePapertrail: + speakeasy-default-enable-papertrail: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getAvailableGrabbers: + speakeasy-default-get-available-grabbers: + parameters: + query: + protocol: "livetv" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + listDevices: + speakeasy-default-list-devices: + responses: + "200": + application/json: {} + addDevice: + speakeasy-default-add-device: + parameters: + query: + uri: "http://10.0.0.5" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + discoverDevices: + speakeasy-default-discover-devices: + responses: + "200": + application/json: {} + removeDevice: + speakeasy-default-remove-device: + parameters: + path: + deviceId: 685908 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getDeviceDetails: + speakeasy-default-get-device-details: + parameters: + path: + deviceId: 170949 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + modifyDevice: + speakeasy-default-modify-device: + parameters: + path: + deviceId: 879135 + query: + enabled: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + setChannelmap: + speakeasy-default-set-channelmap: + parameters: + path: + deviceId: 937661 + query: + channelMapping: {} + channelMappingByKey: {} + channelsEnabled: ["46.1,44.1,45.1"] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getDevicesChannels: + speakeasy-default-get-devices-channels: + parameters: + path: + deviceId: 517209 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + setDevicePreferences: + speakeasy-default-set-device-preferences: + parameters: + path: + deviceId: 420973 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + stopScan: + speakeasy-default-stop-scan: + parameters: + path: + deviceId: 576494 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + scan: + speakeasy-default-scan: + parameters: + path: + deviceId: 57391 + query: + source: "Cable" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getThumb: + speakeasy-default-get-thumb: + parameters: + path: + deviceId: 960617 + version: 1025 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + listProviders: + speakeasy-default-list-providers: + responses: + "200": + application/json: {"MediaContainer": {"livetv": 7, "machineIdentifier": "0123456789abcdef0123456789abcdef012345678", "musicAnalysis": 2, "myPlexMappingState": "mapped", "myPlexSigninState": "ok", "offlineTranscode": 1}} + addProvider: + speakeasy-default-add-provider: + parameters: + query: + url: "https://steep-obedience.name/" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + refreshProviders: {} + deleteMediaProvider: + speakeasy-default-delete-media-provider: + parameters: + path: + provider: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getAllSubscriptions: + speakeasy-default-get-all-subscriptions: + parameters: + query: + includeGrabs: 1 + includeStorage: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + createSubscription: + speakeasy-default-create-subscription: + parameters: + query: + targetLibrarySectionID: 1 + targetSectionLocationID: 3 + type: 2 + hints: {} + prefs: {} + params: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + processSubscriptions: {} + getScheduledRecordings: + speakeasy-default-get-scheduled-recordings: + responses: + "200": + application/json: {"MediaContainer": {"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}} + getTemplate: + speakeasy-default-get-template: + parameters: + query: + guid: "plex://episode/5fc70265c40548002d539d23" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"SubscriptionTemplate": [{"MediaSubscription": [{"title": "This Episode", "MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}]}} + cancelGrab: + speakeasy-default-cancel-grab: + parameters: + path: + operationId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + deleteSubscription: + speakeasy-default-delete-subscription: + parameters: + path: + subscriptionId: 974618 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getSubscription: + speakeasy-default-get-subscription: + parameters: + path: + subscriptionId: 186713 + query: + includeGrabs: 1 + includeStorage: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + editSubscriptionPreferences: + speakeasy-default-edit-subscription-preferences: + parameters: + path: + subscriptionId: 673918 + query: + prefs: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + reorderSubscription: + speakeasy-default-reorder-subscription: + parameters: + path: + subscriptionId: 440634 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + transcodeImage: + speakeasy-default-transcode-image: + parameters: + query: + url: "/library/metadata/265/thumb/1715112705" + background: "#ff5522" + upscale: 1 + minSize: 1 + rotate: 1 + blendColor: "#ff5522" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + image/jpeg: "0xCAFEcb8e7d" + image/png: "0x1dACcc3E76" + image/x-portable-pixmap: "0x3F3CCC0DFB" + makeDecision: + speakeasy-default-make-decision: + parameters: + path: + transcodeType: "music" + query: + advancedSubtitles: "burn" + audioBoost: 50 + audioChannelCount: 5 + autoAdjustQuality: 1 + autoAdjustSubtitle: 1 + directPlay: 1 + directStream: 1 + directStreamAudio: 1 + disableResolutionRotation: 1 + hasMDE: 1 + location: "wan" + mediaBufferSize: 102400 + mediaIndex: 0 + musicBitrate: 5000 + offset: 90.5 + partIndex: 0 + path: "/library/metadata/151671" + peakBitrate: 12000 + photoResolution: "1080x1080" + protocol: "dash" + secondsPerSegment: 5 + subtitleSize: 50 + subtitles: "none" + videoBitrate: 12000 + videoQuality: 50 + videoResolution: "1080x1080" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + X-Plex-Client-Profile-Extra: "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)" + X-Plex-Client-Profile-Name: "generic" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + triggerFallback: + speakeasy-default-trigger-fallback: + parameters: + path: + transcodeType: "audio" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + transcodeSubtitles: + speakeasy-default-transcode-subtitles: + parameters: + path: + transcodeType: "audio" + query: + advancedSubtitles: "burn" + audioBoost: 50 + audioChannelCount: 5 + autoAdjustQuality: 1 + autoAdjustSubtitle: 1 + directPlay: 1 + directStream: 1 + directStreamAudio: 1 + disableResolutionRotation: 1 + hasMDE: 1 + location: "wan" + mediaBufferSize: 102400 + mediaIndex: 0 + musicBitrate: 5000 + offset: 90.5 + partIndex: 0 + path: "/library/metadata/151671" + peakBitrate: 12000 + photoResolution: "1080x1080" + protocol: "dash" + secondsPerSegment: 5 + subtitleSize: 50 + subtitles: "embedded" + videoBitrate: 12000 + videoQuality: 50 + videoResolution: "1080x1080" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + X-Plex-Client-Profile-Extra: "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)" + X-Plex-Client-Profile-Name: "generic" + startTranscodeSession: + speakeasy-default-start-transcode-session: + parameters: + path: + transcodeType: "music" + extension: "mpd" + query: + advancedSubtitles: "burn" + audioBoost: 50 + audioChannelCount: 5 + autoAdjustQuality: 1 + autoAdjustSubtitle: 1 + directPlay: 1 + directStream: 1 + directStreamAudio: 1 + disableResolutionRotation: 1 + hasMDE: 1 + location: "wan" + mediaBufferSize: 102400 + mediaIndex: 0 + musicBitrate: 5000 + offset: 90.5 + partIndex: 0 + path: "/library/metadata/151671" + peakBitrate: 12000 + photoResolution: "1080x1080" + protocol: "dash" + secondsPerSegment: 5 + subtitleSize: 50 + subtitles: "none" + videoBitrate: 12000 + videoQuality: 50 + videoResolution: "1080x1080" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + X-Plex-Client-Profile-Extra: "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)" + X-Plex-Client-Profile-Name: "generic" + responses: + "200": + video/x-matroska: "0xCC2c3d9BDB" + listPlaylists: + speakeasy-default-list-playlists: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getPlaylistItems: + speakeasy-default-get-playlist-items: + parameters: + path: + playlistId: 118195 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getPlaylistGenerators: + speakeasy-default-get-playlist-generators: + parameters: + path: + playlistId: 162342 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + clearPlaylistItems: + speakeasy-default-clear-playlist-items: + parameters: + path: + playlistId: 552140 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + addPlaylistItems: + speakeasy-default-add-playlist-items: + parameters: + path: + playlistId: 533723 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + deletePlaylistItem: + speakeasy-default-delete-playlist-item: + parameters: + path: + playlistId: 981646 + generatorId: 194010 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getPlaylistGenerator: + speakeasy-default-get-playlist-generator: + parameters: + path: + playlistId: 744880 + generatorId: 322168 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getPlaylistGeneratorItems: + speakeasy-default-get-playlist-generator-items: + parameters: + path: + playlistId: 77230 + generatorId: 979714 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}} + movePlaylistItem: + speakeasy-default-move-playlist-item: + parameters: + path: + playlistId: 940298 + playlistItemId: 375626 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + refreshPlaylist: + speakeasy-default-refresh-playlist: + parameters: + path: + playlistId: 895314 + generatorId: 629742 + metadataId: 724422 + action: "disable" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + createPlayQueue: + speakeasy-default-create-play-queue: + parameters: + query: + type: "audio" + shuffle: 1 + repeat: 1 + continuous: 1 + recursive: 1 + onDeck: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getPlayQueue: + speakeasy-default-get-play-queue: + parameters: + path: + playQueueId: 210646 + query: + own: 1 + includeBefore: 1 + includeAfter: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + addToPlayQueue: + speakeasy-default-add-to-play-queue: + parameters: + path: + playQueueId: 919248 + query: + next: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + clearPlayQueue: + speakeasy-default-clear-play-queue: + parameters: + path: + playQueueId: 86357 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + resetPlayQueue: + speakeasy-default-reset-play-queue: + parameters: + path: + playQueueId: 581891 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + shuffle: + speakeasy-default-shuffle: + parameters: + path: + playQueueId: 316150 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + unshuffle: + speakeasy-default-unshuffle: + parameters: + path: + playQueueId: 484388 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + deletePlayQueueItem: + speakeasy-default-delete-play-queue-item: + parameters: + path: + playQueueId: 285738 + playQueueItemId: 464354 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + movePlayQueueItem: + speakeasy-default-move-play-queue-item: + parameters: + path: + playQueueId: 31341 + playQueueItemId: 495865 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getColors: + speakeasy-default-get-colors: + parameters: + query: + url: "/library/metadata/217745/art/1718931408" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getImage: + speakeasy-default-get-image: + parameters: + query: + topLeft: "3f280a" + topRight: "6b4713" + bottomRight: "0f2a43" + bottomLeft: "1c425d" + width: 1920 + height: 1080 + noise: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + image/png: "0x7681Ab419e" + listSessions: + speakeasy-default-list-sessions: + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getBackgroundTasks: + speakeasy-default-get-background-tasks: + responses: + "200": + application/json: {} + listPlaybackHistory: + speakeasy-default-list-playback-history: + parameters: + query: + sort: ["viewedAt:desc,accountID"] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + terminateSession: + speakeasy-default-terminate-session: + parameters: + query: + sessionId: "cdefghijklmnopqrstuvwxyz" + reason: "Stop Playing" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + deleteHistory: + speakeasy-default-delete-history: + parameters: + path: + historyId: 953579 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getHistoryItem: + speakeasy-default-get-history-item: + parameters: + path: + historyId: 832213 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + checkUpdates: + speakeasy-default-check-updates: + parameters: + query: + download: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getUpdatesStatus: + speakeasy-default-get-updates-status: + responses: + "200": + application/json: {} + getCollectionItems: + speakeasy-default-get-collection-items: + parameters: + path: + collectionId: 314585 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getMetadataItem: + speakeasy-default-get-metadata-item: + parameters: + path: + ids: [] + query: + asyncCheckFiles: 1 + asyncRefreshLocalMediaAgent: 1 + asyncRefreshAnalysis: 1 + checkFiles: 1 + skipRefresh: 1 + checkFileAvailability: 1 + asyncAugmentMetadata: 1 + augmentCount: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getAlbums: + speakeasy-default-get-albums: + parameters: + path: + sectionId: 817133 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + listContent: + speakeasy-default-list-content: + parameters: + path: + sectionId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getAllLeaves: + speakeasy-default-get-all-leaves: + parameters: + path: + sectionId: 633197 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getArts: + speakeasy-default-get-arts: + parameters: + path: + sectionId: 859200 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getCategories: + speakeasy-default-get-categories: + parameters: + path: + sectionId: 21841 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getCluster: + speakeasy-default-get-cluster: + parameters: + path: + sectionId: 138560 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getSonicPath: + speakeasy-default-get-sonic-path: + parameters: + path: + sectionId: 914549 + query: + startID: 629990 + endID: 687740 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getFolders: + speakeasy-default-get-folders: + parameters: + path: + sectionId: 892532 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + listMoments: + speakeasy-default-list-moments: + parameters: + path: + sectionId: 403239 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getSonicallySimilar: + speakeasy-default-get-sonically-similar: + parameters: + path: + sectionId: 525956 + query: + values: [] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getCollectionImage: + speakeasy-default-get-collection-image: + parameters: + path: + collectionId: 474227 + updatedAt: 759379 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + image/jpeg: "0x157f15f093" + addCollectionItems: + speakeasy-default-add-collection-items: + parameters: + path: + collectionId: 338144 + query: + uri: "https://expensive-bakeware.com" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + deleteCollectionItem: + speakeasy-default-delete-collection-item: + parameters: + path: + collectionId: 320928 + itemId: 406983 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + moveCollectionItem: + speakeasy-default-move-collection-item: + parameters: + path: + collectionId: 239532 + itemId: 513864 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} examplesVersion: 1.0.2 generatedTests: {} +releaseNotes: "## Csharp SDK Changes Detected:\n* `PlexApi.Butler.StartTask()`: \n * `request` **Changed** **Breaking** :warning:\n * `error` **Changed** **Breaking** :warning:\n* `PlexApi.Butler.StopTask()`: \n * `request` **Changed** **Breaking** :warning:\n * `error` **Changed** **Breaking** :warning:\n* `PlexApi.Updater.ApplyUpdates()`: \n * `request` **Changed** **Breaking** :warning:\n * `error` **Changed** **Breaking** :warning:\n* `PlexApi.General.GetServerInfo()`: **Added**\n* `PlexApi.General.GetIdentity()`: **Added**\n* `PlexApi.General.GetSourceConnectionInformation()`: **Added**\n* `PlexApi.General.GetTransientToken()`: **Added**\n* `PlexApi.Events.GetNotifications()`: **Added**\n* `PlexApi.Events.ConnectWebSocket()`: **Added**\n* `PlexApi.Preferences.GetAllPreferences()`: **Added**\n* `PlexApi.Preferences.SetPreferences()`: **Added**\n* `PlexApi.Preferences.GetPreference()`: **Added**\n* `PlexApi.Rate.SetRating()`: **Added**\n* `PlexApi.Timeline.MarkPlayed()`: **Added**\n* `PlexApi.Timeline.Report()`: **Added**\n* `PlexApi.Timeline.Unscrobble()`: **Added**\n* `PlexApi.Activities.ListActivities()`: **Added**\n* `PlexApi.Activities.CancelActivity()`: **Added**\n* `PlexApi.Butler.StopTasks()`: **Added**\n* `PlexApi.Butler.GetTasks()`: **Added**\n* `PlexApi.Butler.StartTasks()`: **Added**\n* `PlexApi.DownloadQueue.CreateDownloadQueue()`: **Added**\n* `PlexApi.DownloadQueue.GetDownloadQueue()`: **Added**\n* `PlexApi.DownloadQueue.AddDownloadQueueItems()`: **Added**\n* `PlexApi.DownloadQueue.ListDownloadQueueItems()`: **Added**\n* `PlexApi.DownloadQueue.GetItemDecision()`: **Added**\n* `PlexApi.DownloadQueue.GetDownloadQueueMedia()`: **Added**\n* `PlexApi.DownloadQueue.RemoveDownloadQueueItems()`: **Added**\n* `PlexApi.DownloadQueue.GetDownloadQueueItems()`: **Added**\n* `PlexApi.DownloadQueue.RestartProcessingDownloadQueueItems()`: **Added**\n* `PlexApi.Hubs.GetAllHubs()`: **Added**\n* `PlexApi.Hubs.GetContinueWatching()`: **Added**\n* `PlexApi.Hubs.GetHubItems()`: **Added**\n* `PlexApi.Hubs.GetPromotedHubs()`: **Added**\n* `PlexApi.Hubs.GetMetadataHubs()`: **Added**\n* `PlexApi.Hubs.GetPostplayHubs()`: **Added**\n* `PlexApi.Hubs.GetRelatedHubs()`: **Added**\n* `PlexApi.Hubs.GetSectionHubs()`: **Added**\n* `PlexApi.Hubs.ResetSectionDefaults()`: **Added**\n* `PlexApi.Hubs.ListHubs()`: **Added**\n* `PlexApi.Hubs.CreateCustomHub()`: **Added**\n* `PlexApi.Hubs.MoveHub()`: **Added**\n* `PlexApi.Hubs.DeleteCustomHub()`: **Added**\n* `PlexApi.Hubs.UpdateHubVisibility()`: **Added**\n* `PlexApi.Search.SearchHubs()`: **Added**\n* `PlexApi.Search.VoiceSearchHubs()`: **Added**\n* `PlexApi.Library.GetLibraryItems()`: **Added**\n* `PlexApi.Library.DeleteCaches()`: **Added**\n* `PlexApi.Library.CleanBundles()`: **Added**\n* `PlexApi.Library.IngestTransientItem()`: **Added**\n* `PlexApi.Library.GetLibraryMatches()`: **Added**\n* `PlexApi.Library.OptimizeDatabase()`: **Added**\n* `PlexApi.Library.GetRandomArtwork()`: **Added**\n* `PlexApi.Library.GetSections()`: **Added**\n* `PlexApi.Library.AddSection()`: **Added**\n* `PlexApi.Library.StopAllRefreshes()`: **Added**\n* `PlexApi.Library.GetSectionsPrefs()`: **Added**\n* `PlexApi.Library.RefreshSectionsMetadata()`: **Added**\n* `PlexApi.Library.GetTags()`: **Added**\n* `PlexApi.Library.DeleteMetadataItem()`: **Added**\n* `PlexApi.Library.EditMetadataItem()`: **Added**\n* `PlexApi.Library.DetectAds()`: **Added**\n* `PlexApi.Library.GetAllItemLeaves()`: **Added**\n* `PlexApi.Library.AnalyzeMetadata()`: **Added**\n* `PlexApi.Library.GenerateThumbs()`: **Added**\n* `PlexApi.Library.DetectCredits()`: **Added**\n* `PlexApi.Library.GetExtras()`: **Added**\n* `PlexApi.Library.AddExtras()`: **Added**\n* `PlexApi.Library.GetFile()`: **Added**\n* `PlexApi.Library.StartBifGeneration()`: **Added**\n* `PlexApi.Library.DetectIntros()`: **Added**\n* `PlexApi.Library.CreateMarker()`: **Added**\n* `PlexApi.Library.MatchItem()`: **Added**\n* `PlexApi.Library.ListMatches()`: **Added**\n* `PlexApi.Library.MergeItems()`: **Added**\n* `PlexApi.Library.ListSonicallySimilar()`: **Added**\n* `PlexApi.Library.SetItemPreferences()`: **Added**\n* `PlexApi.Library.RefreshItemsMetadata()`: **Added**\n* `PlexApi.Library.GetRelatedItems()`: **Added**\n* `PlexApi.Library.ListSimilar()`: **Added**\n* `PlexApi.Library.SplitItem()`: **Added**\n* `PlexApi.Library.AddSubtitles()`: **Added**\n* `PlexApi.Library.GetItemTree()`: **Added**\n* `PlexApi.Library.Unmatch()`: **Added**\n* `PlexApi.Library.ListTopUsers()`: **Added**\n* `PlexApi.Library.DetectVoiceActivity()`: **Added**\n* `PlexApi.Library.GetAugmentationStatus()`: **Added**\n* `PlexApi.Library.SetStreamSelection()`: **Added**\n* `PlexApi.Library.GetPerson()`: **Added**\n* `PlexApi.Library.ListPersonMedia()`: **Added**\n* `PlexApi.Library.DeleteLibrarySection()`: **Added**\n* `PlexApi.Library.GetLibraryDetails()`: **Added**\n* `PlexApi.Library.EditSection()`: **Added**\n* `PlexApi.Library.UpdateItems()`: **Added**\n* `PlexApi.Library.StartAnalysis()`: **Added**\n* `PlexApi.Library.Autocomplete()`: **Added**\n* `PlexApi.Library.GetCollections()`: **Added**\n* `PlexApi.Library.GetCommon()`: **Added**\n* `PlexApi.Library.EmptyTrash()`: **Added**\n* `PlexApi.Library.GetSectionFilters()`: **Added**\n* `PlexApi.Library.GetFirstCharacters()`: **Added**\n* `PlexApi.Library.DeleteIndexes()`: **Added**\n* `PlexApi.Library.DeleteIntros()`: **Added**\n* `PlexApi.Library.GetSectionPreferences()`: **Added**\n* `PlexApi.Library.SetSectionPreferences()`: **Added**\n* `PlexApi.Library.CancelRefresh()`: **Added**\n* `PlexApi.Library.RefreshSection()`: **Added**\n* `PlexApi.Library.GetAvailableSorts()`: **Added**\n* `PlexApi.Library.GetStreamLevels()`: **Added**\n* `PlexApi.Library.GetStreamLoudness()`: **Added**\n* `PlexApi.Library.GetChapterImage()`: **Added**\n* `PlexApi.Library.SetItemArtwork()`: **Added**\n* `PlexApi.Library.UpdateItemArtwork()`: **Added**\n* `PlexApi.Library.DeleteMarker()`: **Added**\n* `PlexApi.Library.EditMarker()`: **Added**\n* `PlexApi.Library.DeleteMediaItem()`: **Added**\n* `PlexApi.Library.GetPartIndex()`: **Added**\n* `PlexApi.Library.DeleteCollection()`: **Added**\n* `PlexApi.Library.GetSectionImage()`: **Added**\n* `PlexApi.Library.DeleteStream()`: **Added**\n* `PlexApi.Library.GetStream()`: **Added**\n* `PlexApi.Library.SetStreamOffset()`: **Added**\n* `PlexApi.Library.GetItemArtwork()`: **Added**\n* `PlexApi.Library.GetMediaPart()`: **Added**\n* `PlexApi.Library.GetImageFromBif()`: **Added**\n* `PlexApi.Collections.CreateCollection()`: **Added**\n* `PlexApi.DvRs.ListDvRs()`: **Added**\n* `PlexApi.DvRs.CreateDvr()`: **Added**\n* `PlexApi.DvRs.DeleteDvr()`: **Added**\n* `PlexApi.DvRs.GetDvr()`: **Added**\n* `PlexApi.DvRs.DeleteLineup()`: **Added**\n* `PlexApi.DvRs.AddLineup()`: **Added**\n* `PlexApi.DvRs.SetDvrPreferences()`: **Added**\n* `PlexApi.DvRs.StopDvrReload()`: **Added**\n* `PlexApi.DvRs.ReloadGuide()`: **Added**\n* `PlexApi.DvRs.TuneChannel()`: **Added**\n* `PlexApi.DvRs.RemoveDeviceFromDvr()`: **Added**\n* `PlexApi.DvRs.AddDeviceToDvr()`: **Added**\n* `PlexApi.Epg.ComputeChannelMap()`: **Added**\n* `PlexApi.Epg.GetChannels()`: **Added**\n* `PlexApi.Epg.GetCountries()`: **Added**\n* `PlexApi.Epg.GetAllLanguages()`: **Added**\n* `PlexApi.Epg.GetLineup()`: **Added**\n* `PlexApi.Epg.GetLineupChannels()`: **Added**\n* `PlexApi.Epg.GetCountriesLineups()`: **Added**\n* `PlexApi.Epg.GetCountryRegions()`: **Added**\n* `PlexApi.Epg.ListLineups()`: **Added**\n* `PlexApi.LiveTv.GetSessions()`: **Added**\n* `PlexApi.LiveTv.GetLiveTvSession()`: **Added**\n* `PlexApi.LiveTv.GetSessionPlaylistIndex()`: **Added**\n* `PlexApi.LiveTv.GetSessionSegment()`: **Added**\n* `PlexApi.Log.WriteLog()`: **Added**\n* `PlexApi.Log.WriteMessage()`: **Added**\n* `PlexApi.Log.EnablePapertrail()`: **Added**\n* `PlexApi.Devices.GetAvailableGrabbers()`: **Added**\n* `PlexApi.Devices.ListDevices()`: **Added**\n* `PlexApi.Devices.AddDevice()`: **Added**\n* `PlexApi.Devices.DiscoverDevices()`: **Added**\n* `PlexApi.Devices.RemoveDevice()`: **Added**\n* `PlexApi.Devices.GetDeviceDetails()`: **Added**\n* `PlexApi.Devices.ModifyDevice()`: **Added**\n* `PlexApi.Devices.SetChannelmap()`: **Added**\n* `PlexApi.Devices.GetDevicesChannels()`: **Added**\n* `PlexApi.Devices.SetDevicePreferences()`: **Added**\n* `PlexApi.Devices.StopScan()`: **Added**\n* `PlexApi.Devices.Scan()`: **Added**\n* `PlexApi.Devices.GetThumb()`: **Added**\n* `PlexApi.Provider.ListProviders()`: **Added**\n* `PlexApi.Provider.AddProvider()`: **Added**\n* `PlexApi.Provider.RefreshProviders()`: **Added**\n* `PlexApi.Provider.DeleteMediaProvider()`: **Added**\n* `PlexApi.Subscriptions.GetAllSubscriptions()`: **Added**\n* `PlexApi.Subscriptions.CreateSubscription()`: **Added**\n* `PlexApi.Subscriptions.ProcessSubscriptions()`: **Added**\n* `PlexApi.Subscriptions.GetScheduledRecordings()`: **Added**\n* `PlexApi.Subscriptions.GetTemplate()`: **Added**\n* `PlexApi.Subscriptions.CancelGrab()`: **Added**\n* `PlexApi.Subscriptions.DeleteSubscription()`: **Added**\n* `PlexApi.Subscriptions.GetSubscription()`: **Added**\n* `PlexApi.Subscriptions.EditSubscriptionPreferences()`: **Added**\n* `PlexApi.Subscriptions.ReorderSubscription()`: **Added**\n* `PlexApi.Transcoder.TranscodeImage()`: **Added**\n* `PlexApi.Transcoder.MakeDecision()`: **Added**\n* `PlexApi.Transcoder.TriggerFallback()`: **Added**\n* `PlexApi.Transcoder.TranscodeSubtitles()`: **Added**\n* `PlexApi.Transcoder.StartTranscodeSession()`: **Added**\n* `PlexApi.Playlist.ListPlaylists()`: **Added**\n* `PlexApi.Playlist.GetPlaylist()`: **Added**\n* `PlexApi.Playlist.GetPlaylistItems()`: **Added**\n* `PlexApi.LibraryPlaylists.CreatePlaylist()`: **Added**\n* `PlexApi.LibraryPlaylists.UploadPlaylist()`: **Added**\n* `PlexApi.LibraryPlaylists.DeletePlaylist()`: **Added**\n* `PlexApi.LibraryPlaylists.UpdatePlaylist()`: **Added**\n* `PlexApi.LibraryPlaylists.GetPlaylistGenerators()`: **Added**\n* `PlexApi.LibraryPlaylists.ClearPlaylistItems()`: **Added**\n* `PlexApi.LibraryPlaylists.AddPlaylistItems()`: **Added**\n* `PlexApi.LibraryPlaylists.DeletePlaylistItem()`: **Added**\n* `PlexApi.LibraryPlaylists.GetPlaylistGenerator()`: **Added**\n* `PlexApi.LibraryPlaylists.GetPlaylistGeneratorItems()`: **Added**\n* `PlexApi.LibraryPlaylists.MovePlaylistItem()`: **Added**\n* `PlexApi.LibraryPlaylists.RefreshPlaylist()`: **Added**\n* `PlexApi.PlayQueue.CreatePlayQueue()`: **Added**\n* `PlexApi.PlayQueue.GetPlayQueue()`: **Added**\n* `PlexApi.PlayQueue.AddToPlayQueue()`: **Added**\n* `PlexApi.PlayQueue.ClearPlayQueue()`: **Added**\n* `PlexApi.PlayQueue.ResetPlayQueue()`: **Added**\n* `PlexApi.PlayQueue.Shuffle()`: **Added**\n* `PlexApi.PlayQueue.Unshuffle()`: **Added**\n* `PlexApi.PlayQueue.DeletePlayQueueItem()`: **Added**\n* `PlexApi.PlayQueue.MovePlayQueueItem()`: **Added**\n* `PlexApi.UltraBlur.GetColors()`: **Added**\n* `PlexApi.UltraBlur.GetImage()`: **Added**\n* `PlexApi.Status.ListSessions()`: **Added**\n* `PlexApi.Status.GetBackgroundTasks()`: **Added**\n* `PlexApi.Status.ListPlaybackHistory()`: **Added**\n* `PlexApi.Status.TerminateSession()`: **Added**\n* `PlexApi.Status.DeleteHistory()`: **Added**\n* `PlexApi.Status.GetHistoryItem()`: **Added**\n* `PlexApi.Updater.CheckUpdates()`: **Added**\n* `PlexApi.Updater.GetUpdatesStatus()`: **Added**\n* `PlexApi.Content.GetCollectionItems()`: **Added**\n* `PlexApi.Content.GetMetadataItem()`: **Added**\n* `PlexApi.Content.GetAlbums()`: **Added**\n* `PlexApi.Content.ListContent()`: **Added**\n* `PlexApi.Content.GetAllLeaves()`: **Added**\n* `PlexApi.Content.GetArts()`: **Added**\n* `PlexApi.Content.GetCategories()`: **Added**\n* `PlexApi.Content.GetCluster()`: **Added**\n* `PlexApi.Content.GetSonicPath()`: **Added**\n* `PlexApi.Content.GetFolders()`: **Added**\n* `PlexApi.Content.ListMoments()`: **Added**\n* `PlexApi.Content.GetSonicallySimilar()`: **Added**\n* `PlexApi.Content.GetCollectionImage()`: **Added**\n* `PlexApi.LibraryCollections.AddCollectionItems()`: **Added**\n* `PlexApi.LibraryCollections.DeleteCollectionItem()`: **Added**\n* `PlexApi.LibraryCollections.MoveCollectionItem()`: **Added**\n* `PlexApi.Server.GetServerCapabilities()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Server.GetServerPreferences()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Server.GetAvailableClients()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Server.GetDevices()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Server.Get-Server-Identity()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Server.GetMyPlexAccount()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Server.GetResizedPhoto()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Server.Get-Media-Providers()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Server.GetServerList()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Media.MarkPlayed()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Media.MarkUnplayed()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Media.UpdatePlayProgress()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Media.Get-Banner-Image()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Media.Get-Thumb-Image()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Video.GetTimeline()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Video.StartUniversalTranscode()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Activities.GetServerActivities()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Activities.CancelServerActivities()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Butler.GetButlerTasks()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Butler.StartAllTasks()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Butler.StopAllTasks()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Plex.GetCompanionsData()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Plex.GetUserFriends()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Plex.GetGeoData()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Plex.GetHomeData()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Plex.Get-Server-Resources()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Plex.GetPin()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Plex.GetTokenByPinId()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Hubs.GetGlobalHubs()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Hubs.Get-Recently-Added()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Hubs.GetLibraryHubs()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Search.PerformSearch()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Search.PerformVoiceSearch()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Search.GetSearchResults()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.GetFileHash()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Recently-Added-Library()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-All-Libraries()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Library-Details()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.DeleteLibrary()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Library-Items()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Library-Sections-All()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Refresh-Library-Metadata()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Search-Library()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Genres-Library()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Countries-Library()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Actors-Library()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Search-All-Libraries()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Media-Meta-Data()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Media-Arts()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Post-Media-Arts()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Get-Media-Posters()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.Post-Media-Poster()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.GetMetadataChildren()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Library.GetTopWatchedContent()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Watchlist.Get-Watch-List()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Log.LogLine()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Log.LogMultiLine()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Log.EnablePaperTrail()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Playlists.CreatePlaylist()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Playlists.GetPlaylists()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Playlists.GetPlaylist()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Playlists.DeletePlaylist()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Playlists.UpdatePlaylist()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Playlists.GetPlaylistContents()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Playlists.ClearPlaylistContents()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Playlists.AddPlaylistContents()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Playlists.UploadPlaylist()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Authentication.GetTransientToken()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Authentication.GetSourceConnectionInformation()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Authentication.GetTokenDetails()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Authentication.Post-Users-Sign-In-Data()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Statistics.GetStatistics()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Statistics.GetResourcesStatistics()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Statistics.GetBandwidthStatistics()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Sessions.GetSessions()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Sessions.GetSessionHistory()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Sessions.GetTranscodeSessions()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Sessions.StopTranscodeSession()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Updater.GetUpdateStatus()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Updater.CheckForUpdates()`: **Deleted** **Breaking** :warning:\n* `PlexApi.Users.Get-Users()`: **Deleted** **Breaking** :warning:\n" diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index f657b69..2dcc64d 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -17,12 +17,14 @@ generation: oAuth2ClientCredentialsEnabled: true oAuth2PasswordEnabled: false hoistGlobalSecurity: true + schemas: + allOfMergeStrategy: shallowMerge tests: generateTests: true generateNewTests: false skipResponseBodyAssertions: false csharp: - version: 0.17.0 + version: 0.18.0 additionalDependencies: [] author: LukeHagar baseErrorName: PlexAPIError @@ -30,6 +32,7 @@ csharp: defaultErrorName: SDKException disableNamespacePascalCasingApr2024: true dotnetVersion: net8.0 + enableCancellationToken: false enableSourceLink: true flattenGlobalSecurity: true flatteningOrder: "" @@ -51,3 +54,4 @@ csharp: packageTags: Plex Media Server SDK responseFormat: envelope sourceDirectory: "" + useNodatime: true diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index edc1325..24b237e 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,4 +1,4 @@ -speakeasyVersion: 1.615.2 +speakeasyVersion: 1.639.3 sources: my-source: sourceNamespace: my-source @@ -16,26 +16,29 @@ sources: - main plexapi: sourceNamespace: plexapi - sourceRevisionDigest: sha256:5125adfea1b0daea399c6ecf755e32795de6b4131465ae6a1f32ad73b3bc7787 - sourceBlobDigest: sha256:95cea18b6e5f7d76d35db0aba5bcb59e72cf204451a2b09a99be0e3e9ec1f4c0 + sourceRevisionDigest: sha256:03b08b3b9bc9b0b48588eaa1f2b3774e7809a8ddd6071176c73215531ca535a5 + sourceBlobDigest: sha256:1e9fb72587f46b9af45ca38a4c3d1c21e02813caf19ac554c1b22f31f415a202 tags: - latest - - speakeasy-sdk-regen-1757895932 + - speakeasy-sdk-regen-1761475285 + - 1.1.1 targets: plexcsharp: source: plexapi sourceNamespace: plexapi - sourceRevisionDigest: sha256:5125adfea1b0daea399c6ecf755e32795de6b4131465ae6a1f32ad73b3bc7787 - sourceBlobDigest: sha256:95cea18b6e5f7d76d35db0aba5bcb59e72cf204451a2b09a99be0e3e9ec1f4c0 + sourceRevisionDigest: sha256:03b08b3b9bc9b0b48588eaa1f2b3774e7809a8ddd6071176c73215531ca535a5 + sourceBlobDigest: sha256:1e9fb72587f46b9af45ca38a4c3d1c21e02813caf19ac554c1b22f31f415a202 codeSamplesNamespace: code-samples-csharp-plexcsharp - codeSamplesRevisionDigest: sha256:41c049f80e89195d5537bfbc2aa652942aeb669534f6c7d22e2172361fd708aa + codeSamplesRevisionDigest: sha256:293ef89677f6a2713a0220d431707ce46861b316e3fa9d41729b22a379b40bfc workflow: workflowVersion: 1.0.0 speakeasyVersion: latest sources: plexapi: inputs: - - location: registry.speakeasyapi.dev/plexapi/plexapi/plexapi:main + - location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/refs/heads/main/plex-api-spec.yaml + registry: + location: registry.speakeasyapi.dev/plexapi/plexapi/plexapi targets: plexcsharp: target: csharp diff --git a/LukeHagar/PlexAPI/SDK/Activities.cs b/LukeHagar/PlexAPI/SDK/Activities.cs index 3ed5e66..5e721a5 100644 --- a/LukeHagar/PlexAPI/SDK/Activities.cs +++ b/LukeHagar/PlexAPI/SDK/Activities.cs @@ -23,15 +23,13 @@ namespace LukeHagar.PlexAPI.SDK using System.Threading.Tasks; /// - /// Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
+ /// Activities provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
/// /// + ///
/// Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity.
- /// Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details:
- /// - They can contain a `progress` (from 0 to 100) marking the percent completion of the activity.
- /// - They must contain an `type` which is used by clients to distinguish the specific activity.
- /// - They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.)
- /// - The may contain a `Response` object which attributes which represent the result of the asynchronous operation.
+ ///
+ /// Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint.
/// ///
///
@@ -39,34 +37,32 @@ namespace LukeHagar.PlexAPI.SDK { /// - /// Get Server Activities + /// Get all activities /// /// - /// Get Server Activities + /// List all activities on the server. Admins can see all activities but other users can only see their own /// /// - Task GetServerActivitiesAsync(); + Task ListActivitiesAsync(); /// - /// Cancel Server Activities + /// Cancel a running activity /// /// - /// Cancel Server Activities + /// Cancel a running activity. Admins can cancel all activities but other users can only cancel their own /// /// - Task CancelServerActivitiesAsync(string activityUUID); + Task CancelActivityAsync(CancelActivityRequest request); } /// - /// Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
+ /// Activities provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
/// /// + ///
/// Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity.
- /// Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details:
- /// - They can contain a `progress` (from 0 to 100) marking the percent completion of the activity.
- /// - They must contain an `type` which is used by clients to distinguish the specific activity.
- /// - They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.)
- /// - The may contain a `Response` object which attributes which represent the result of the asynchronous operation.
+ ///
+ /// Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint.
/// ///
///
@@ -74,16 +70,16 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; public Activities(SDKConfig config) { SDKConfiguration = config; } - public async Task GetServerActivitiesAsync() + public async Task ListActivitiesAsync() { string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); @@ -97,7 +93,7 @@ namespace LukeHagar.PlexAPI.SDK httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getServerActivities", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listActivities", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -107,7 +103,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -138,17 +134,17 @@ namespace LukeHagar.PlexAPI.SDK if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerActivitiesResponseBody obj; + ListActivitiesResponseBody obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetServerActivitiesResponseBody.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into ListActivitiesResponseBody.", httpResponse, httpResponseBody, ex); } - var response = new GetServerActivitiesResponse() + var response = new ListActivitiesResponse() { StatusCode = responseStatusCode, ContentType = contentType, @@ -160,48 +156,6 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerActivitiesBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerActivitiesBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetServerActivitiesBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerActivitiesUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerActivitiesUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetServerActivitiesUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } else if(responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); @@ -214,24 +168,37 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task CancelServerActivitiesAsync(string activityUUID) + public async Task CancelActivityAsync(CancelActivityRequest request) { - var request = new CancelServerActivitiesRequest() + if (request == null) { - ActivityUUID = activityUUID, - }; + request = new CancelActivityRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/activities/{activityUUID}", request); + var urlString = URLBuilder.Build(baseUrl, "/activities/{activityId}", request); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "cancelServerActivities", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "cancelActivity", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -241,7 +208,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -269,56 +236,14 @@ namespace LukeHagar.PlexAPI.SDK int responseStatusCode = (int)httpResponse.StatusCode; if(responseStatusCode == 200) { - return new CancelServerActivitiesResponse() + return new CancelActivityResponse() { StatusCode = responseStatusCode, ContentType = contentType, RawResponse = httpResponse }; } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - CancelServerActivitiesBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into CancelServerActivitiesBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new CancelServerActivitiesBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - CancelServerActivitiesUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into CancelServerActivitiesUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new CancelServerActivitiesUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } diff --git a/LukeHagar/PlexAPI/SDK/Authentication.cs b/LukeHagar/PlexAPI/SDK/Authentication.cs deleted file mode 100644 index a8b6e08..0000000 --- a/LukeHagar/PlexAPI/SDK/Authentication.cs +++ /dev/null @@ -1,614 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK -{ - using LukeHagar.PlexAPI.SDK.Hooks; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using LukeHagar.PlexAPI.SDK.Utils.Retries; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - using System.Net.Http.Headers; - using System.Threading.Tasks; - - /// - /// API Calls regarding authentication for Plex Media Server
- /// - /// - /// - /// - ///
- public interface IAuthentication - { - - /// - /// 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(GetTransientTokenQueryParamType 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); - - /// - /// Get Token Details - /// - /// - /// Get the User data from the provided X-Plex-Token - /// - /// - Task GetTokenDetailsAsync(string? serverUrl = null); - - /// - /// Get User Sign In Data - /// - /// - /// Sign in user with username and password and return user data with Plex authentication token - /// - /// - Task PostUsersSignInDataAsync(PostUsersSignInDataRequest request, string? serverUrl = null); - } - - /// - /// API Calls regarding authentication for Plex Media Server
- /// - /// - /// - /// - ///
- public class Authentication: IAuthentication - { - /// - /// List of server URLs available for the getTokenDetails operation. - /// - public static readonly string[] GetTokenDetailsServerList = { - "https://plex.tv/api/v2", - }; - /// - /// List of server URLs available for the post-users-sign-in-data operation. - /// - public static readonly string[] PostUsersSignInDataServerList = { - "https://plex.tv/api/v2", - }; - public SDKConfig SDKConfiguration { get; private set; } - private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; - - public Authentication(SDKConfig config) - { - SDKConfiguration = config; - } - - public async Task GetTransientTokenAsync(GetTransientTokenQueryParamType type, Scope scope) - { - var request = new GetTransientTokenRequest() - { - Type = type, - Scope = scope, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/security/token", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getTransientToken", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new GetTransientTokenResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTransientTokenBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTransientTokenBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetTransientTokenBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTransientTokenUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTransientTokenUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetTransientTokenUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetSourceConnectionInformationAsync(string source) - { - var request = new GetSourceConnectionInformationRequest() - { - Source = source, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/security/resources", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSourceConnectionInformation", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new GetSourceConnectionInformationResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSourceConnectionInformationBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSourceConnectionInformationBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetSourceConnectionInformationBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSourceConnectionInformationUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSourceConnectionInformationUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetSourceConnectionInformationUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetTokenDetailsAsync(string? serverUrl = null) - { - string baseUrl = Utilities.TemplateUrl(GetTokenDetailsServerList[0], new Dictionary(){ - }); - if (serverUrl != null) - { - baseUrl = serverUrl; - } - - var urlString = baseUrl + "/user"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getTokenDetails", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTokenDetailsUserPlexAccount obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTokenDetailsUserPlexAccount.", httpResponse, httpResponseBody, ex); - } - - var response = new GetTokenDetailsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.UserPlexAccount = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTokenDetailsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTokenDetailsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetTokenDetailsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTokenDetailsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTokenDetailsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetTokenDetailsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task PostUsersSignInDataAsync(PostUsersSignInDataRequest request, string? serverUrl = null) - { - string baseUrl = Utilities.TemplateUrl(PostUsersSignInDataServerList[0], new Dictionary(){ - }); - if (serverUrl != null) - { - baseUrl = serverUrl; - } - - var urlString = baseUrl + "/users/signin"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - HeaderSerializer.PopulateHeaders(ref httpRequest, request); - - var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "form", false, true); - if (serializedBody != null) - { - httpRequest.Content = serializedBody; - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "post-users-sign-in-data", new List { }, null); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 201) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - PostUsersSignInDataUserPlexAccount obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into PostUsersSignInDataUserPlexAccount.", httpResponse, httpResponseBody, ex); - } - - var response = new PostUsersSignInDataResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.UserPlexAccount = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - PostUsersSignInDataBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into PostUsersSignInDataBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new PostUsersSignInDataBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - PostUsersSignInDataUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into PostUsersSignInDataUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new PostUsersSignInDataUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Butler.cs b/LukeHagar/PlexAPI/SDK/Butler.cs index 5f4d12f..66a93f6 100644 --- a/LukeHagar/PlexAPI/SDK/Butler.cs +++ b/LukeHagar/PlexAPI/SDK/Butler.cs @@ -17,102 +17,160 @@ namespace LukeHagar.PlexAPI.SDK using LukeHagar.PlexAPI.SDK.Utils.Retries; using Newtonsoft.Json; using System; - using System.Collections.Concurrent; using System.Collections.Generic; - using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; /// - /// Butler is the task manager of the Plex Media Server Ecosystem.
- /// - /// - /// - /// + /// The butler is responsible for running periodic tasks. Some tasks run daily, others every few days, and some weekly. These includes database maintenance, metadata updating, thumbnail generation, media analysis, and other tasks. ///
public interface IButler { /// - /// Get Butler tasks + /// Stop all Butler tasks /// /// - /// Returns a list of butler tasks + /// This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue. /// /// - Task GetButlerTasksAsync(); + Task StopTasksAsync(); + + /// + /// Get all Butler tasks + /// + /// + /// Get the list of butler tasks and their scheduling
+ /// + ///
+ ///
+ Task GetTasksAsync(); /// /// 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.
+ ///
+ /// 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); + Task StartTasksAsync(); /// /// Stop a single Butler task /// /// - /// This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists. See the section above for a list of task names for this endpoint.
+ /// This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists
/// ///
///
- Task StopTaskAsync(PathParamTaskName taskName); + Task StopTaskAsync(StopTaskRequest request); + + /// + /// Start a single Butler task + /// + /// + /// This endpoint will attempt to start a specific Butler task by name.
+ /// + ///
+ ///
+ Task StartTaskAsync(StartTaskRequest request); } /// - /// Butler is the task manager of the Plex Media Server Ecosystem.
- /// - /// - /// - /// + /// The butler is responsible for running periodic tasks. Some tasks run daily, others every few days, and some weekly. These includes database maintenance, metadata updating, thumbnail generation, media analysis, and other tasks. ///
public class Butler: IButler { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; public Butler(SDKConfig config) { SDKConfiguration = config; } - public async Task GetButlerTasksAsync() + public async Task StopTasksAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/butler"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "stopTasks", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new StopTasksResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetTasksAsync() { string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); @@ -126,7 +184,7 @@ namespace LukeHagar.PlexAPI.SDK httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getButlerTasks", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getTasks", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -136,7 +194,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -167,17 +225,17 @@ namespace LukeHagar.PlexAPI.SDK if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetButlerTasksResponseBody obj; + GetTasksResponseBody obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetButlerTasksResponseBody.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into GetTasksResponseBody.", httpResponse, httpResponseBody, ex); } - var response = new GetButlerTasksResponse() + var response = new GetTasksResponse() { StatusCode = responseStatusCode, ContentType = contentType, @@ -189,48 +247,6 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetButlerTasksBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetButlerTasksBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetButlerTasksBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetButlerTasksUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetButlerTasksUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetButlerTasksUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } else if(responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); @@ -243,7 +259,7 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task StartAllTasksAsync() + public async Task StartTasksAsync() { string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); @@ -257,7 +273,7 @@ namespace LukeHagar.PlexAPI.SDK httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "startAllTasks", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "startTasks", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -267,7 +283,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -295,55 +311,13 @@ namespace LukeHagar.PlexAPI.SDK int responseStatusCode = (int)httpResponse.StatusCode; if(responseStatusCode == 200) { - return new StartAllTasksResponse() + return new StartTasksResponse() { StatusCode = responseStatusCode, ContentType = contentType, RawResponse = httpResponse }; } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - StartAllTasksBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into StartAllTasksBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new StartAllTasksBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - StartAllTasksUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into StartAllTasksUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new StartAllTasksUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } else if(responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); @@ -356,21 +330,37 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task StopAllTasksAsync() + public async Task StopTaskAsync(StopTaskRequest request) { + if (request == null) + { + request = new StopTaskRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/butler"; + var urlString = URLBuilder.Build(baseUrl, "/butler/{task}", request); var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "stopAllTasks", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "stopTask", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -380,239 +370,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new StopAllTasksResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - StopAllTasksBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into StopAllTasksBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new StopAllTasksBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - StopAllTasksUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into StopAllTasksUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new StopAllTasksUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task StartTaskAsync(TaskName taskName) - { - var request = new StartTaskRequest() - { - TaskName = taskName, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/butler/{taskName}", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "startTask", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(new List{200, 202}.Contains(responseStatusCode)) - { - return new StartTaskResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - StartTaskBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into StartTaskBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new StartTaskBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - StartTaskUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into StartTaskUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new StartTaskUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task StopTaskAsync(PathParamTaskName taskName) - { - var request = new StopTaskRequest() - { - TaskName = taskName, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/butler/{taskName}", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "stopTask", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -647,47 +405,92 @@ namespace LukeHagar.PlexAPI.SDK RawResponse = httpResponse }; } - else if(responseStatusCode == 400) + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - StopTaskBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into StopTaskBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new StopTaskBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 401) + else if(responseStatusCode >= 500 && responseStatusCode < 600) { - if(Utilities.IsContentTypeMatch("application/json", contentType)) + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task StartTaskAsync(StartTaskRequest request) + { + if (request == null) + { + request = new StartTaskRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/butler/{task}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "startTask", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - StopTaskUnauthorizedPayload payload; - try + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + httpResponse = _httpResponse; } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into StopTaskUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new StopTaskUnauthorized(payload, httpResponse, httpResponseBody); } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(new List{200, 202}.Contains(responseStatusCode)) + { + return new StartTaskResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; } else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) { diff --git a/LukeHagar/PlexAPI/SDK/Collections.cs b/LukeHagar/PlexAPI/SDK/Collections.cs new file mode 100644 index 0000000..baf8c86 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Collections.cs @@ -0,0 +1,162 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// API Operations against the Collections + /// + public interface ICollections + { + + /// + /// Create collection + /// + /// + /// Create a collection in the library + /// + /// + Task CreateCollectionAsync(CreateCollectionRequest request); + } + + /// + /// API Operations against the Collections + /// + public class Collections: ICollections + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Collections(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task CreateCollectionAsync(CreateCollectionRequest request) + { + if (request == null) + { + request = new CreateCollectionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/collections", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "createCollection", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new CreateCollectionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Content.cs b/LukeHagar/PlexAPI/SDK/Content.cs new file mode 100644 index 0000000..258a1e3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Content.cs @@ -0,0 +1,1519 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// The actual content of the media provider + /// + public interface IContent + { + + /// + /// Get items in a collection + /// + /// + /// Get items in a collection. Note if this collection contains more than 100 items, paging must be used. + /// + /// + Task GetCollectionItemsAsync(GetCollectionItemsRequest request); + + /// + /// Get a metadata item + /// + /// + /// Get one or more metadata items. + /// + /// + Task GetMetadataItemAsync(GetMetadataItemRequest request); + + /// + /// Set section albums + /// + /// + /// Get all albums in a music section + /// + /// + Task GetAlbumsAsync(GetAlbumsRequest request); + + /// + /// Get items in the section + /// + /// + /// Get the items in a section, potentially filtering them + /// + /// + Task ListContentAsync(ListContentRequest request); + + /// + /// Set section leaves + /// + /// + /// Get all leaves in a section (such as episodes in a show section) + /// + /// + Task GetAllLeavesAsync(GetAllLeavesRequest request); + + /// + /// Set section artwork + /// + /// + /// Get artwork for a library section + /// + /// + Task GetArtsAsync(GetArtsRequest request); + + /// + /// Set section categories + /// + /// + /// Get categories in a library section + /// + /// + Task GetCategoriesAsync(GetCategoriesRequest request); + + /// + /// Set section clusters + /// + /// + /// Get clusters in a library section (typically for photos) + /// + /// + Task GetClusterAsync(GetClusterRequest request); + + /// + /// Similar tracks to transition from one to another + /// + /// + /// Get a list of audio tracks starting at one and ending at another which are similar across the path + /// + /// + Task GetSonicPathAsync(GetSonicPathRequest request); + + /// + /// Get all folder locations + /// + /// + /// Get all folder locations of the media in a section + /// + /// + Task GetFoldersAsync(GetFoldersRequest request); + + /// + /// Set section moments + /// + /// + /// Get moments in a library section (typically for photos) + /// + /// + Task ListMomentsAsync(ListMomentsRequest request); + + /// + /// The nearest audio tracks + /// + /// + /// Get the nearest audio tracks to a particular analysis + /// + /// + Task GetSonicallySimilarAsync(GetSonicallySimilarRequest request); + + /// + /// Get a collection's image + /// + /// + /// Get an image for the collection based on the items within + /// + /// + Task GetCollectionImageAsync(GetCollectionImageRequest request); + } + + /// + /// The actual content of the media provider + /// + public class Content: IContent + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Content(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task GetCollectionItemsAsync(GetCollectionItemsRequest request) + { + if (request == null) + { + request = new GetCollectionItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/items", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCollectionItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetCollectionItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetMetadataItemAsync(GetMetadataItemRequest request) + { + if (request == null) + { + request = new GetMetadataItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getMetadataItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetMetadataItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetAlbumsAsync(GetAlbumsRequest request) + { + if (request == null) + { + request = new GetAlbumsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/albums", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getAlbums", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetAlbumsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ListContentAsync(ListContentRequest request) + { + if (request == null) + { + request = new ListContentRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/all", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listContent", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new ListContentResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetAllLeavesAsync(GetAllLeavesRequest request) + { + if (request == null) + { + request = new GetAllLeavesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/allLeaves", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getAllLeaves", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetAllLeavesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetArtsAsync(GetArtsRequest request) + { + if (request == null) + { + request = new GetArtsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/arts", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getArts", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithArtwork obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithArtwork.", httpResponse, httpResponseBody, ex); + } + + var response = new GetArtsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithArtwork = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetCategoriesAsync(GetCategoriesRequest request) + { + if (request == null) + { + request = new GetCategoriesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/categories", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCategories", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithArtwork obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithArtwork.", httpResponse, httpResponseBody, ex); + } + + var response = new GetCategoriesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithArtwork = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetClusterAsync(GetClusterRequest request) + { + if (request == null) + { + request = new GetClusterRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/cluster", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCluster", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithArtwork obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithArtwork.", httpResponse, httpResponseBody, ex); + } + + var response = new GetClusterResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithArtwork = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetSonicPathAsync(GetSonicPathRequest request) + { + if (request == null) + { + request = new GetSonicPathRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/computePath", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSonicPath", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetSonicPathResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetFoldersAsync(GetFoldersRequest request) + { + if (request == null) + { + request = new GetFoldersRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/location", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getFolders", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetFoldersResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetFoldersResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetFoldersResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ListMomentsAsync(ListMomentsRequest request) + { + if (request == null) + { + request = new ListMomentsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/moment", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listMoments", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithArtwork obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithArtwork.", httpResponse, httpResponseBody, ex); + } + + var response = new ListMomentsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithArtwork = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetSonicallySimilarAsync(GetSonicallySimilarRequest request) + { + if (request == null) + { + request = new GetSonicallySimilarRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/nearest", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSonicallySimilar", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetSonicallySimilarResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetCollectionImageAsync(GetCollectionImageRequest request) + { + if (request == null) + { + request = new GetCollectionImageRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/composite/{updatedAt}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCollectionImage", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("image/jpeg", contentType)) + { + var response = new GetCollectionImageResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/DVRs.cs b/LukeHagar/PlexAPI/SDK/DVRs.cs new file mode 100644 index 0000000..7de53bb --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/DVRs.cs @@ -0,0 +1,1350 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// The DVR provides means to watch and record live TV. This section of endpoints describes how to setup the DVR itself
+ /// + /// + /// + /// + ///
+ public interface IDVRs + { + + /// + /// Get DVRs + /// + /// + /// Get the list of all available DVRs + /// + /// + Task ListDVRsAsync(); + + /// + /// Create a DVR + /// + /// + /// Creation of a DVR, after creation of a devcie and a lineup is selected + /// + /// + Task CreateDVRAsync(CreateDVRRequest? request = null); + + /// + /// Delete a single DVR + /// + /// + /// Delete a single DVR by its id (key) + /// + /// + Task DeleteDVRAsync(DeleteDVRRequest request); + + /// + /// Get a single DVR + /// + /// + /// Get a single DVR by its id (key) + /// + /// + Task GetDVRAsync(GetDVRRequest request); + + /// + /// Delete a DVR Lineup + /// + /// + /// Deletes a DVR device's lineup. + /// + /// + Task DeleteLineupAsync(DeleteLineupRequest request); + + /// + /// Add a DVR Lineup + /// + /// + /// Add a lineup to a DVR device's set of lineups. + /// + /// + Task AddLineupAsync(AddLineupRequest request); + + /// + /// Set DVR preferences + /// + /// + /// Set DVR preferences by name avd value + /// + /// + Task SetDVRPreferencesAsync(SetDVRPreferencesRequest request); + + /// + /// Tell a DVR to stop reloading program guide + /// + /// + /// Tell a DVR to stop reloading program guide + /// + /// + Task StopDVRReloadAsync(StopDVRReloadRequest request); + + /// + /// Tell a DVR to reload program guide + /// + /// + /// Tell a DVR to reload program guide + /// + /// + Task ReloadGuideAsync(ReloadGuideRequest request); + + /// + /// Tune a channel on a DVR + /// + /// + /// Tune a channel on a DVR to the provided channel + /// + /// + Task TuneChannelAsync(TuneChannelRequest request); + + /// + /// Remove a device from an existing DVR + /// + /// + /// Remove a device from an existing DVR + /// + /// + Task RemoveDeviceFromDVRAsync(RemoveDeviceFromDVRRequest request); + + /// + /// Add a device to an existing DVR + /// + /// + /// Add a device to an existing DVR + /// + /// + Task AddDeviceToDVRAsync(AddDeviceToDVRRequest request); + } + + /// + /// The DVR provides means to watch and record live TV. This section of endpoints describes how to setup the DVR itself
+ /// + /// + /// + /// + ///
+ public class DVRs: IDVRs + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public DVRs(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task ListDVRsAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/livetv/dvrs"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listDVRs", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ListDVRsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ListDVRsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new ListDVRsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task CreateDVRAsync(CreateDVRRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "createDVR", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + DvrRequestHandlerSlashGetResponses200 obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into DvrRequestHandlerSlashGetResponses200.", httpResponse, httpResponseBody, ex); + } + + var response = new CreateDVRResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.DvrRequestHandlerSlashGetResponses200 = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteDVRAsync(DeleteDVRRequest request) + { + if (request == null) + { + request = new DeleteDVRRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteDVR", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteDVRResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetDVRAsync(GetDVRRequest request) + { + if (request == null) + { + request = new GetDVRRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getDVR", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetDVRResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetDVRResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetDVRResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteLineupAsync(DeleteLineupRequest request) + { + if (request == null) + { + request = new DeleteLineupRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/lineups", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteLineup", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + DeleteLineupResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into DeleteLineupResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new DeleteLineupResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task AddLineupAsync(AddLineupRequest request) + { + if (request == null) + { + request = new AddLineupRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/lineups", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "addLineup", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + AddLineupResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into AddLineupResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new AddLineupResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task SetDVRPreferencesAsync(SetDVRPreferencesRequest request) + { + if (request == null) + { + request = new SetDVRPreferencesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/prefs", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "setDVRPreferences", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + SetDVRPreferencesResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into SetDVRPreferencesResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new SetDVRPreferencesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task StopDVRReloadAsync(StopDVRReloadRequest request) + { + if (request == null) + { + request = new StopDVRReloadRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/reloadGuide", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "stopDVRReload", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new StopDVRReloadResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ReloadGuideAsync(ReloadGuideRequest request) + { + if (request == null) + { + request = new ReloadGuideRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/reloadGuide", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "reloadGuide", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new ReloadGuideResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task TuneChannelAsync(TuneChannelRequest request) + { + if (request == null) + { + request = new TuneChannelRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/channels/{channel}/tune", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "tuneChannel", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode == 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new TuneChannelResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500 || responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task RemoveDeviceFromDVRAsync(RemoveDeviceFromDVRRequest request) + { + if (request == null) + { + request = new RemoveDeviceFromDVRRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/devices/{deviceId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "removeDeviceFromDVR", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + RemoveDeviceFromDVRResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into RemoveDeviceFromDVRResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new RemoveDeviceFromDVRResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task AddDeviceToDVRAsync(AddDeviceToDVRRequest request) + { + if (request == null) + { + request = new AddDeviceToDVRRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/dvrs/{dvrId}/devices/{deviceId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "addDeviceToDVR", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + AddDeviceToDVRResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into AddDeviceToDVRResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new AddDeviceToDVRResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Devices.cs b/LukeHagar/PlexAPI/SDK/Devices.cs new file mode 100644 index 0000000..0438cb1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Devices.cs @@ -0,0 +1,1537 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// Media grabbers provide ways for media to be obtained for a given protocol. The simplest ones are `stream` and `download`. More complex grabbers can have associated devices
+ /// + /// + ///
+ /// Network tuners can present themselves on the network using the Simple Service Discovery Protocol and Plex Media Server will discover them. The following XML is an example of the data returned from SSDP. The `deviceType`, `serviceType`, and `serviceId` values must remain as they are in the example in order for PMS to properly discover the device. Other less-obvious fields are described in the parameters section below.
+ ///
+ /// Example SSDP output
+ /// ```
+ /// <root xmlns="urn:schemas-upnp-org:device-1-0">
+ /// <specVersion>
+ /// <major>1</major>
+ /// <minor>0</minor>
+ /// </specVersion>
+ /// <device>
+ /// <deviceType>urn:plex-tv:device:Media:1</deviceType>
+ /// <friendlyName>Turing Hopper 3000</friendlyName>
+ /// <manufacturer>Plex, Inc.</manufacturer>
+ /// <manufacturerURL>https://plex.tv/</manufacturerURL>
+ /// <modelDescription>Turing Hopper 3000 Media Grabber</modelDescription>
+ /// <modelName>Plex Media Grabber</modelName>
+ /// <modelNumber>1</modelNumber>
+ /// <modelURL>https://plex.tv</modelURL>
+ /// <UDN>uuid:42fde8e4-93b6-41e5-8a63-12d848655811</UDN>
+ /// <serviceList>
+ /// <service>
+ /// <URLBase>http://10.0.0.5:8088</URLBase>
+ /// <serviceType>urn:plex-tv:service:MediaGrabber:1</serviceType>
+ /// <serviceId>urn:plex-tv:serviceId:MediaGrabber</serviceId>
+ /// </service>
+ /// </serviceList>
+ /// </device>
+ /// </root>
+ /// ```
+ ///
+ /// - UDN: (string) A UUID for the device. This should be unique across models of a device at minimum.
+ /// - URLBase: (string) The base HTTP URL for the device from which all of the other endpoints are hosted.
+ /// + ///
+ ///
+ public interface IDevices + { + + /// + /// Get available grabbers + /// + /// + /// Get available grabbers visible to the server + /// + /// + Task GetAvailableGrabbersAsync(GetAvailableGrabbersRequest? request = null); + + /// + /// Get all devices + /// + /// + /// Get the list of all devices present + /// + /// + Task ListDevicesAsync(); + + /// + /// Add a device + /// + /// + /// This endpoint adds a device to an existing grabber. The device is identified, and added to the correct grabber. + /// + /// + Task AddDeviceAsync(AddDeviceRequest? request = null); + + /// + /// Tell grabbers to discover devices + /// + /// + /// Tell grabbers to discover devices + /// + /// + Task DiscoverDevicesAsync(); + + /// + /// Remove a device + /// + /// + /// Remove a devices by its id along with its channel mappings + /// + /// + Task RemoveDeviceAsync(RemoveDeviceRequest request); + + /// + /// Get device details + /// + /// + /// Get a device's details by its id + /// + /// + Task GetDeviceDetailsAsync(GetDeviceDetailsRequest request); + + /// + /// Enable or disable a device + /// + /// + /// Enable or disable a device by its id + /// + /// + Task ModifyDeviceAsync(ModifyDeviceRequest request); + + /// + /// Set a device's channel mapping + /// + /// + /// Set a device's channel mapping + /// + /// + Task SetChannelmapAsync(SetChannelmapRequest request); + + /// + /// Get a device's channels + /// + /// + /// Get a device's channels by its id + /// + /// + Task GetDevicesChannelsAsync(GetDevicesChannelsRequest request); + + /// + /// Set device preferences + /// + /// + /// Set device preferences by its id + /// + /// + Task SetDevicePreferencesAsync(SetDevicePreferencesRequest request); + + /// + /// Tell a device to stop scanning for channels + /// + /// + /// Tell a device to stop scanning for channels + /// + /// + Task StopScanAsync(StopScanRequest request); + + /// + /// Tell a device to scan for channels + /// + /// + /// Tell a device to scan for channels + /// + /// + Task ScanAsync(ScanRequest request); + + /// + /// Get device thumb + /// + /// + /// Get a device's thumb for display to the user + /// + /// + Task GetThumbAsync(GetThumbRequest request); + } + + /// + /// Media grabbers provide ways for media to be obtained for a given protocol. The simplest ones are `stream` and `download`. More complex grabbers can have associated devices
+ /// + /// + ///
+ /// Network tuners can present themselves on the network using the Simple Service Discovery Protocol and Plex Media Server will discover them. The following XML is an example of the data returned from SSDP. The `deviceType`, `serviceType`, and `serviceId` values must remain as they are in the example in order for PMS to properly discover the device. Other less-obvious fields are described in the parameters section below.
+ ///
+ /// Example SSDP output
+ /// ```
+ /// <root xmlns="urn:schemas-upnp-org:device-1-0">
+ /// <specVersion>
+ /// <major>1</major>
+ /// <minor>0</minor>
+ /// </specVersion>
+ /// <device>
+ /// <deviceType>urn:plex-tv:device:Media:1</deviceType>
+ /// <friendlyName>Turing Hopper 3000</friendlyName>
+ /// <manufacturer>Plex, Inc.</manufacturer>
+ /// <manufacturerURL>https://plex.tv/</manufacturerURL>
+ /// <modelDescription>Turing Hopper 3000 Media Grabber</modelDescription>
+ /// <modelName>Plex Media Grabber</modelName>
+ /// <modelNumber>1</modelNumber>
+ /// <modelURL>https://plex.tv</modelURL>
+ /// <UDN>uuid:42fde8e4-93b6-41e5-8a63-12d848655811</UDN>
+ /// <serviceList>
+ /// <service>
+ /// <URLBase>http://10.0.0.5:8088</URLBase>
+ /// <serviceType>urn:plex-tv:service:MediaGrabber:1</serviceType>
+ /// <serviceId>urn:plex-tv:serviceId:MediaGrabber</serviceId>
+ /// </service>
+ /// </serviceList>
+ /// </device>
+ /// </root>
+ /// ```
+ ///
+ /// - UDN: (string) A UUID for the device. This should be unique across models of a device at minimum.
+ /// - URLBase: (string) The base HTTP URL for the device from which all of the other endpoints are hosted.
+ /// + ///
+ ///
+ public class Devices: IDevices + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Devices(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task GetAvailableGrabbersAsync(GetAvailableGrabbersRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/grabbers", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getAvailableGrabbers", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetAvailableGrabbersResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetAvailableGrabbersResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetAvailableGrabbersResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ListDevicesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/media/grabbers/devices"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listDevices", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithDevice obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithDevice.", httpResponse, httpResponseBody, ex); + } + + var response = new ListDevicesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithDevice = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task AddDeviceAsync(AddDeviceRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "addDevice", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithDevice obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithDevice.", httpResponse, httpResponseBody, ex); + } + + var response = new AddDeviceResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithDevice = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DiscoverDevicesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/media/grabbers/devices/discover"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "discoverDevices", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithDevice obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithDevice.", httpResponse, httpResponseBody, ex); + } + + var response = new DiscoverDevicesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithDevice = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task RemoveDeviceAsync(RemoveDeviceRequest request) + { + if (request == null) + { + request = new RemoveDeviceRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "removeDevice", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + RemoveDeviceResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into RemoveDeviceResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new RemoveDeviceResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetDeviceDetailsAsync(GetDeviceDetailsRequest request) + { + if (request == null) + { + request = new GetDeviceDetailsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getDeviceDetails", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithDevice obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithDevice.", httpResponse, httpResponseBody, ex); + } + + var response = new GetDeviceDetailsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithDevice = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ModifyDeviceAsync(ModifyDeviceRequest request) + { + if (request == null) + { + request = new ModifyDeviceRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "modifyDevice", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ModifyDeviceResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ModifyDeviceResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new ModifyDeviceResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task SetChannelmapAsync(SetChannelmapRequest request) + { + if (request == null) + { + request = new SetChannelmapRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/channelmap", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "setChannelmap", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithDevice obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithDevice.", httpResponse, httpResponseBody, ex); + } + + var response = new SetChannelmapResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithDevice = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetDevicesChannelsAsync(GetDevicesChannelsRequest request) + { + if (request == null) + { + request = new GetDevicesChannelsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/channels", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getDevicesChannels", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetDevicesChannelsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetDevicesChannelsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetDevicesChannelsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task SetDevicePreferencesAsync(SetDevicePreferencesRequest request) + { + if (request == null) + { + request = new SetDevicePreferencesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/prefs", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "setDevicePreferences", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new SetDevicePreferencesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task StopScanAsync(StopScanRequest request) + { + if (request == null) + { + request = new StopScanRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/scan", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "stopScan", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithDevice obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithDevice.", httpResponse, httpResponseBody, ex); + } + + var response = new StopScanResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithDevice = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ScanAsync(ScanRequest request) + { + if (request == null) + { + request = new ScanRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/scan", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "scan", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithDevice obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithDevice.", httpResponse, httpResponseBody, ex); + } + + var response = new ScanResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithDevice = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetThumbAsync(GetThumbRequest request) + { + if (request == null) + { + request = new GetThumbRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/devices/{deviceId}/thumb/{version}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getThumb", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new GetThumbResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 301) + { + return new GetThumbResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/DownloadQueue.cs b/LukeHagar/PlexAPI/SDK/DownloadQueue.cs new file mode 100644 index 0000000..60c7175 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/DownloadQueue.cs @@ -0,0 +1,1032 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// API Operations against the Download Queue + /// + public interface IDownloadQueue + { + + /// + /// Create download queue + /// + /// + /// Available: 0.2.0
+ ///
+ /// Creates a download queue for this client if one doesn't exist, or returns the existing queue for this client and user.
+ /// + ///
+ ///
+ Task CreateDownloadQueueAsync(); + + /// + /// Get a download queue + /// + /// + /// Available: 0.2.0
+ ///
+ /// Get a download queue by its id
+ /// + ///
+ ///
+ Task GetDownloadQueueAsync(GetDownloadQueueRequest request); + + /// + /// Add to download queue + /// + /// + /// Available: 0.2.0
+ ///
+ /// Add items to the download queue
+ /// + ///
+ ///
+ Task AddDownloadQueueItemsAsync(AddDownloadQueueItemsRequest request); + + /// + /// Get download queue items + /// + /// + /// Available: 0.2.0
+ ///
+ /// Get items from a download queue
+ /// + ///
+ ///
+ Task ListDownloadQueueItemsAsync(ListDownloadQueueItemsRequest request); + + /// + /// Grab download queue item decision + /// + /// + /// Available: 0.2.0
+ ///
+ /// Grab the decision for a download queue item
+ /// + ///
+ ///
+ Task GetItemDecisionAsync(GetItemDecisionRequest request); + + /// + /// Grab download queue media + /// + /// + /// Available: 0.2.0
+ ///
+ /// Grab the media for a download queue item
+ /// + ///
+ ///
+ Task GetDownloadQueueMediaAsync(GetDownloadQueueMediaRequest request); + + /// + /// Delete download queue items + /// + /// + /// delete items from a download queue + /// + /// + Task RemoveDownloadQueueItemsAsync(RemoveDownloadQueueItemsRequest request); + + /// + /// Get download queue items + /// + /// + /// Available: 0.2.0
+ ///
+ /// Get items from a download queue
+ /// + ///
+ ///
+ Task GetDownloadQueueItemsAsync(GetDownloadQueueItemsRequest request); + + /// + /// Restart processing of items from the decision + /// + /// + /// Available: 0.2.0
+ ///
+ /// Reprocess download queue items with previous decision parameters
+ /// + ///
+ ///
+ Task RestartProcessingDownloadQueueItemsAsync(RestartProcessingDownloadQueueItemsRequest request); + } + + /// + /// API Operations against the Download Queue + /// + public class DownloadQueue: IDownloadQueue + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public DownloadQueue(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task CreateDownloadQueueAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/downloadQueue"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "createDownloadQueue", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + CreateDownloadQueueResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into CreateDownloadQueueResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new CreateDownloadQueueResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetDownloadQueueAsync(GetDownloadQueueRequest request) + { + if (request == null) + { + request = new GetDownloadQueueRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getDownloadQueue", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetDownloadQueueResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetDownloadQueueResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetDownloadQueueResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task AddDownloadQueueItemsAsync(AddDownloadQueueItemsRequest request) + { + if (request == null) + { + request = new AddDownloadQueueItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/add", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "addDownloadQueueItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + AddDownloadQueueItemsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into AddDownloadQueueItemsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new AddDownloadQueueItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ListDownloadQueueItemsAsync(ListDownloadQueueItemsRequest request) + { + if (request == null) + { + request = new ListDownloadQueueItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/items", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listDownloadQueueItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ListDownloadQueueItemsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ListDownloadQueueItemsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new ListDownloadQueueItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetItemDecisionAsync(GetItemDecisionRequest request) + { + if (request == null) + { + request = new GetItemDecisionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/item/{itemId}/decision", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getItemDecision", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithDecision obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithDecision.", httpResponse, httpResponseBody, ex); + } + + var response = new GetItemDecisionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithDecision = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetDownloadQueueMediaAsync(GetDownloadQueueMediaRequest request) + { + if (request == null) + { + request = new GetDownloadQueueMediaRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/item/{itemId}/media", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getDownloadQueueMedia", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode == 503 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new GetDownloadQueueMediaResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task RemoveDownloadQueueItemsAsync(RemoveDownloadQueueItemsRequest request) + { + if (request == null) + { + request = new RemoveDownloadQueueItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/items/{itemId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "removeDownloadQueueItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new RemoveDownloadQueueItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetDownloadQueueItemsAsync(GetDownloadQueueItemsRequest request) + { + if (request == null) + { + request = new GetDownloadQueueItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/items/{itemId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getDownloadQueueItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetDownloadQueueItemsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetDownloadQueueItemsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetDownloadQueueItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task RestartProcessingDownloadQueueItemsAsync(RestartProcessingDownloadQueueItemsRequest request) + { + if (request == null) + { + request = new RestartProcessingDownloadQueueItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/downloadQueue/{queueId}/items/{itemId}/restart", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "restartProcessingDownloadQueueItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new RestartProcessingDownloadQueueItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Epg.cs b/LukeHagar/PlexAPI/SDK/Epg.cs new file mode 100644 index 0000000..c1f00b3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Epg.cs @@ -0,0 +1,1032 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when
+ /// + /// + /// + /// + ///
+ public interface IEpg + { + + /// + /// Compute the best channel map + /// + /// + /// Compute the best channel map, given device and lineup + /// + /// + Task ComputeChannelMapAsync(ComputeChannelMapRequest request); + + /// + /// Get channels for a lineup + /// + /// + /// Get channels for a lineup within an EPG provider + /// + /// + Task GetChannelsAsync(GetChannelsRequest request); + + /// + /// Get all countries + /// + /// + /// This endpoint returns a list of countries which EPG data is available for. There are three flavors, as specfied by the `flavor` attribute + /// + /// + Task GetCountriesAsync(); + + /// + /// Get all languages + /// + /// + /// Returns a list of all possible languages for EPG data. + /// + /// + Task GetAllLanguagesAsync(); + + /// + /// Compute the best lineup + /// + /// + /// Compute the best lineup, given lineup group and device + /// + /// + Task GetLineupAsync(GetLineupRequest request); + + /// + /// Get the channels for mulitple lineups + /// + /// + /// Get the channels across multiple lineups + /// + /// + Task GetLineupChannelsAsync(GetLineupChannelsRequest request); + + /// + /// Get lineups for a country via postal code + /// + /// + /// Returns a list of lineups for a given country, EPG provider and postal code + /// + /// + Task GetCountriesLineupsAsync(GetCountriesLineupsRequest request); + + /// + /// Get regions for a country + /// + /// + /// Get regions for a country within an EPG provider + /// + /// + Task GetCountryRegionsAsync(GetCountryRegionsRequest request); + + /// + /// Get lineups for a region + /// + /// + /// Get lineups for a region within an EPG provider + /// + /// + Task ListLineupsAsync(ListLineupsRequest request); + } + + /// + /// The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when
+ /// + /// + /// + /// + ///
+ public class Epg: IEpg + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Epg(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task ComputeChannelMapAsync(ComputeChannelMapRequest request) + { + if (request == null) + { + request = new ComputeChannelMapRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/channelmap", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "computeChannelMap", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode == 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ComputeChannelMapResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ComputeChannelMapResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new ComputeChannelMapResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500 || responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetChannelsAsync(GetChannelsRequest request) + { + if (request == null) + { + request = new GetChannelsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/channels", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getChannels", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetChannelsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetChannelsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetChannelsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetCountriesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/livetv/epg/countries"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCountries", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetCountriesResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetCountriesResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetCountriesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetAllLanguagesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/livetv/epg/languages"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getAllLanguages", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetAllLanguagesResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetAllLanguagesResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetAllLanguagesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetLineupAsync(GetLineupRequest request) + { + if (request == null) + { + request = new GetLineupRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/lineup", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getLineup", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode == 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new GetLineupResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500 || responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetLineupChannelsAsync(GetLineupChannelsRequest request) + { + if (request == null) + { + request = new GetLineupChannelsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/lineupchannels", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getLineupChannels", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetLineupChannelsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetLineupChannelsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetLineupChannelsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetCountriesLineupsAsync(GetCountriesLineupsRequest request) + { + if (request == null) + { + request = new GetCountriesLineupsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/countries/{country}/{epgId}/lineups", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCountriesLineups", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithLineup obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithLineup.", httpResponse, httpResponseBody, ex); + } + + var response = new GetCountriesLineupsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithLineup = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetCountryRegionsAsync(GetCountryRegionsRequest request) + { + if (request == null) + { + request = new GetCountryRegionsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/countries/{country}/{epgId}/regions", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCountryRegions", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetCountryRegionsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetCountryRegionsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetCountryRegionsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ListLineupsAsync(ListLineupsRequest request) + { + if (request == null) + { + request = new ListLineupsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/countries/{country}/{epgId}/regions/{region}/lineups", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listLineups", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithLineup obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithLineup.", httpResponse, httpResponseBody, ex); + } + + var response = new ListLineupsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithLineup = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Events.cs b/LukeHagar/PlexAPI/SDK/Events.cs new file mode 100644 index 0000000..6f387a8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Events.cs @@ -0,0 +1,257 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// The server can notify clients in real-time of a wide range of events, from library scanning, to preferences being modified, to changes to media, and many other things. This is also the mechanism by which activity progress is reported.
+ /// + /// + ///
+ /// Two protocols for receiving the events are available: EventSource (also known as SSE), and WebSocket.
+ /// + ///
+ ///
+ public interface IEvents + { + + /// + /// Connect to Eventsource + /// + /// + /// Connect to the event source to get a stream of events + /// + /// + Task GetNotificationsAsync(GetNotificationsRequest? request = null); + + /// + /// Connect to WebSocket + /// + /// + /// Connect to the web socket to get a stream of events + /// + /// + Task ConnectWebSocketAsync(ConnectWebSocketRequest? request = null); + } + + /// + /// The server can notify clients in real-time of a wide range of events, from library scanning, to preferences being modified, to changes to media, and many other things. This is also the mechanism by which activity progress is reported.
+ /// + /// + ///
+ /// Two protocols for receiving the events are available: EventSource (also known as SSE), and WebSocket.
+ /// + ///
+ ///
+ public class Events: IEvents + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Events(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task GetNotificationsAsync(GetNotificationsRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/:/eventsource/notifications", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getNotifications", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/octet-stream", contentType)) + { + var response = new GetNotificationsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ConnectWebSocketAsync(ConnectWebSocketRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/:/websocket/notifications", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "connectWebSocket", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/octet-stream", contentType)) + { + var response = new ConnectWebSocketResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/General.cs b/LukeHagar/PlexAPI/SDK/General.cs new file mode 100644 index 0000000..c2ee2e3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/General.cs @@ -0,0 +1,481 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// General endpoints for basic PMS operation not specific to any media provider + /// + public interface IGeneral + { + + /// + /// Get PMS info + /// + /// + /// Information about this PMS setup and configuration + /// + /// + Task GetServerInfoAsync(GetServerInfoRequest? request = null); + + /// + /// Get PMS identity + /// + /// + /// Get details about this PMS's identity + /// + /// + Task GetIdentityAsync(); + + /// + /// 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. + /// + /// + Task GetSourceConnectionInformationAsync(GetSourceConnectionInformationRequest request); + + /// + /// Get Transient Tokens + /// + /// + /// This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted.
+ /// Note: This endpoint responds to all HTTP verbs but POST in preferred + ///
+ ///
+ Task GetTransientTokenAsync(GetTransientTokenRequest request); + } + + /// + /// General endpoints for basic PMS operation not specific to any media provider + /// + public class General: IGeneral + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public General(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task GetServerInfoAsync(GetServerInfoRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getServerInfo", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithDirectory obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithDirectory.", httpResponse, httpResponseBody, ex); + } + + var response = new GetServerInfoResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithDirectory = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetIdentityAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/identity"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getIdentity", null, null); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetIdentityResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetIdentityResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetIdentityResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetSourceConnectionInformationAsync(GetSourceConnectionInformationRequest request) + { + if (request == null) + { + request = new GetSourceConnectionInformationRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/security/resources", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSourceConnectionInformation", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetSourceConnectionInformationResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetSourceConnectionInformationResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetSourceConnectionInformationResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetTransientTokenAsync(GetTransientTokenRequest request) + { + if (request == null) + { + request = new GetTransientTokenRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/security/token", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getTransientToken", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetTransientTokenResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetTransientTokenResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetTransientTokenResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Hooks/SDKHooks.cs b/LukeHagar/PlexAPI/SDK/Hooks/SDKHooks.cs index 9ed7c5f..363082b 100644 --- a/LukeHagar/PlexAPI/SDK/Hooks/SDKHooks.cs +++ b/LukeHagar/PlexAPI/SDK/Hooks/SDKHooks.cs @@ -76,7 +76,8 @@ namespace LukeHagar.PlexAPI.SDK.Hooks try { request = await hook.BeforeRequestAsync(hookCtx, request); - } catch (Exception ex) + } + catch (Exception ex) { throw new Exception("An error occurred while calling BeforeRequestAsync hook", ex); } @@ -102,17 +103,18 @@ namespace LukeHagar.PlexAPI.SDK.Hooks public async Task AfterErrorAsync(AfterErrorContext hookCtx, HttpResponseMessage? response, Exception? error) { - (HttpResponseMessage?, Exception?) responseAndError = (response, error); foreach (var hook in this.afterErrorHooks) { try { responseAndError = await hook.AfterErrorAsync(hookCtx, responseAndError.Item1, responseAndError.Item2); - } catch (FailEarlyException) + } + catch (FailEarlyException) { throw; - } catch (Exception ex) + } + catch (Exception ex) { throw new Exception("An error occurred while calling AfterErrorAsync hook", ex); } diff --git a/LukeHagar/PlexAPI/SDK/Hubs.cs b/LukeHagar/PlexAPI/SDK/Hubs.cs index 15a5d64..00ccab9 100644 --- a/LukeHagar/PlexAPI/SDK/Hubs.cs +++ b/LukeHagar/PlexAPI/SDK/Hubs.cs @@ -23,84 +23,181 @@ namespace LukeHagar.PlexAPI.SDK using System.Threading.Tasks; /// - /// Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows.
- /// - /// - /// - /// + /// The hubs within a media provider ///
public interface IHubs { /// - /// Get Global Hubs + /// Get global hubs /// /// - /// Get Global Hubs filtered by the parameters provided. + /// Get the global hubs in this PMS /// /// - Task GetGlobalHubsAsync(double? count = null, OnlyTransient? onlyTransient = null); + Task GetAllHubsAsync(GetAllHubsRequest? request = null); /// - /// Get Recently Added + /// Get the continue watching hub /// /// - /// This endpoint will return the recently added content.
- /// + /// Get the global continue watching hub ///
///
- Task GetRecentlyAddedAsync(GetRecentlyAddedRequest request); + Task GetContinueWatchingAsync(GetContinueWatchingRequest? request = null); /// - /// Get library specific hubs + /// Get a hub's items /// /// - /// This endpoint will return a list of library specific hubs
- /// + /// Get the items within a single hub specified by identifier ///
///
- Task GetLibraryHubsAsync(double sectionId, double? count = null, QueryParamOnlyTransient? onlyTransient = null); + Task GetHubItemsAsync(GetHubItemsRequest request); + + /// + /// Get the hubs which are promoted + /// + /// + /// Get the global hubs which are promoted (should be displayed on the home screen) + /// + /// + Task GetPromotedHubsAsync(GetPromotedHubsRequest? request = null); + + /// + /// Get hubs for section by metadata item + /// + /// + /// Get the hubs for a section by metadata item. Currently only for music sections + /// + /// + Task GetMetadataHubsAsync(GetMetadataHubsRequest request); + + /// + /// Get postplay hubs + /// + /// + /// Get the hubs for a metadata to be displayed in post play + /// + /// + Task GetPostplayHubsAsync(GetPostplayHubsRequest request); + + /// + /// Get related hubs + /// + /// + /// Get the hubs for a metadata related to the provided metadata item + /// + /// + Task GetRelatedHubsAsync(GetRelatedHubsRequest request); + + /// + /// Get section hubs + /// + /// + /// Get the hubs for a single section + /// + /// + Task GetSectionHubsAsync(GetSectionHubsRequest request); + + /// + /// Reset hubs to defaults + /// + /// + /// Reset hubs for this section to defaults and delete custom hubs + /// + /// + Task ResetSectionDefaultsAsync(ResetSectionDefaultsRequest request); + + /// + /// Get hubs + /// + /// + /// Get the list of hubs including both built-in and custom + /// + /// + Task ListHubsAsync(ListHubsRequest request); + + /// + /// Create a custom hub + /// + /// + /// Create a custom hub based on a metadata item + /// + /// + Task CreateCustomHubAsync(CreateCustomHubRequest request); + + /// + /// Move Hub + /// + /// + /// Changed the ordering of a hub among others hubs + /// + /// + Task MoveHubAsync(MoveHubRequest request); + + /// + /// Delete a custom hub + /// + /// + /// Delete a custom hub from the server + /// + /// + Task DeleteCustomHubAsync(DeleteCustomHubRequest request); + + /// + /// Change hub visibility + /// + /// + /// Changed the visibility of a hub for both the admin and shared users + /// + /// + Task UpdateHubVisibilityAsync(UpdateHubVisibilityRequest request); } /// - /// Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows.
- /// - /// - /// - /// + /// The hubs within a media provider ///
public class Hubs: IHubs { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; public Hubs(SDKConfig config) { SDKConfiguration = config; } - public async Task GetGlobalHubsAsync(double? count = null, OnlyTransient? onlyTransient = null) + public async Task GetAllHubsAsync(GetAllHubsRequest? request = null) { - var request = new GetGlobalHubsRequest() - { - Count = count, - OnlyTransient = onlyTransient, - }; + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); var urlString = URLBuilder.Build(baseUrl, "/hubs", request); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getGlobalHubs", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getAllHubs", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -110,7 +207,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -141,17 +238,17 @@ namespace LukeHagar.PlexAPI.SDK if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetGlobalHubsResponseBody obj; + GetAllHubsResponseBody obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetGlobalHubsResponseBody.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into GetAllHubsResponseBody.", httpResponse, httpResponseBody, ex); } - var response = new GetGlobalHubsResponse() + var response = new GetAllHubsResponse() { StatusCode = responseStatusCode, ContentType = contentType, @@ -163,48 +260,6 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetGlobalHubsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetGlobalHubsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetGlobalHubsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetGlobalHubsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetGlobalHubsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetGlobalHubsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } else if(responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); @@ -217,20 +272,33 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task GetRecentlyAddedAsync(GetRecentlyAddedRequest request) + public async Task GetContinueWatchingAsync(GetContinueWatchingRequest? request = null) { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/hubs/home/recentlyAdded", request); + var urlString = URLBuilder.Build(baseUrl, "/hubs/continueWatching", request); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-recently-added", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getContinueWatching", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -240,7 +308,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -271,17 +339,17 @@ namespace LukeHagar.PlexAPI.SDK if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetRecentlyAddedResponseBody obj; + GetContinueWatchingResponseBody obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetRecentlyAddedResponseBody.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into GetContinueWatchingResponseBody.", httpResponse, httpResponseBody, ex); } - var response = new GetRecentlyAddedResponse() + var response = new GetContinueWatchingResponse() { StatusCode = responseStatusCode, ContentType = contentType, @@ -293,7 +361,7 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 400 || responseStatusCode == 401 || responseStatusCode >= 400 && responseStatusCode < 500) + else if(responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } @@ -305,26 +373,558 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task GetLibraryHubsAsync(double sectionId, double? count = null, QueryParamOnlyTransient? onlyTransient = null) + public async Task GetHubItemsAsync(GetHubItemsRequest request) { - var request = new GetLibraryHubsRequest() + if (request == null) { - SectionId = sectionId, - Count = count, - OnlyTransient = onlyTransient, - }; + request = new GetHubItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/items", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getHubItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetHubItemsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetHubItemsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetHubItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetPromotedHubsAsync(GetPromotedHubsRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/promoted", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPromotedHubs", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetPromotedHubsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetPromotedHubsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetPromotedHubsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetMetadataHubsAsync(GetMetadataHubsRequest request) + { + if (request == null) + { + request = new GetMetadataHubsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/metadata/{metadataId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getMetadataHubs", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithHubs obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithHubs.", httpResponse, httpResponseBody, ex); + } + + var response = new GetMetadataHubsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithHubs = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetPostplayHubsAsync(GetPostplayHubsRequest request) + { + if (request == null) + { + request = new GetPostplayHubsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/metadata/{metadataId}/postplay", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPostplayHubs", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithHubs obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithHubs.", httpResponse, httpResponseBody, ex); + } + + var response = new GetPostplayHubsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithHubs = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetRelatedHubsAsync(GetRelatedHubsRequest request) + { + if (request == null) + { + request = new GetRelatedHubsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/metadata/{metadataId}/related", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getRelatedHubs", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithHubs obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithHubs.", httpResponse, httpResponseBody, ex); + } + + var response = new GetRelatedHubsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithHubs = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetSectionHubsAsync(GetSectionHubsRequest request) + { + if (request == null) + { + request = new GetSectionHubsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}", request); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getLibraryHubs", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSectionHubs", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -334,7 +934,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -365,17 +965,17 @@ namespace LukeHagar.PlexAPI.SDK if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetLibraryHubsResponseBody obj; + GetSectionHubsResponseBody obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetLibraryHubsResponseBody.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into GetSectionHubsResponseBody.", httpResponse, httpResponseBody, ex); } - var response = new GetLibraryHubsResponse() + var response = new GetSectionHubsResponse() { StatusCode = responseStatusCode, ContentType = contentType, @@ -387,49 +987,565 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 400) + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ResetSectionDefaultsAsync(ResetSectionDefaultsRequest request) + { + if (request == null) + { + request = new ResetSectionDefaultsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "resetSectionDefaults", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new ResetSectionDefaultsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ListHubsAsync(ListHubsRequest request) + { + if (request == null) + { + request = new ListHubsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listHubs", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) { if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetLibraryHubsBadRequestPayload payload; + ListHubsResponseBody obj; try { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetLibraryHubsBadRequestPayload.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into ListHubsResponseBody.", httpResponse, httpResponseBody, ex); } - payload.RawResponse = httpResponse; - throw new GetLibraryHubsBadRequest(payload, httpResponse, httpResponseBody); + var response = new ListHubsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; } throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 401) + else if(responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task CreateCustomHubAsync(CreateCustomHubRequest request) + { + if (request == null) + { + request = new CreateCustomHubRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "createCustomHub", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new CreateCustomHubResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task MoveHubAsync(MoveHubRequest request) + { + if (request == null) + { + request = new MoveHubRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage/move", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "moveHub", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) { if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetLibraryHubsUnauthorizedPayload payload; + GetResponses200 obj; try { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetLibraryHubsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into GetResponses200.", httpResponse, httpResponseBody, ex); } - payload.RawResponse = httpResponse; - throw new GetLibraryHubsUnauthorized(payload, httpResponse, httpResponseBody); + var response = new MoveHubResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.GetResponses200 = obj; + return response; } throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode >= 400 && responseStatusCode < 500) + else if(responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteCustomHubAsync(DeleteCustomHubRequest request) + { + if (request == null) + { + request = new DeleteCustomHubRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage/{identifier}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteCustomHub", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteCustomHubResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task UpdateHubVisibilityAsync(UpdateHubVisibilityRequest request) + { + if (request == null) + { + request = new UpdateHubVisibilityRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/sections/{sectionId}/manage/{identifier}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "updateHubVisibility", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new UpdateHubVisibilityResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } diff --git a/LukeHagar/PlexAPI/SDK/Library.cs b/LukeHagar/PlexAPI/SDK/Library.cs index 9cec07c..760375c 100644 --- a/LukeHagar/PlexAPI/SDK/Library.cs +++ b/LukeHagar/PlexAPI/SDK/Library.cs @@ -17,338 +17,832 @@ namespace LukeHagar.PlexAPI.SDK using LukeHagar.PlexAPI.SDK.Utils.Retries; using Newtonsoft.Json; using System; - using System.Collections.Concurrent; using System.Collections.Generic; - using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; /// - /// API Calls interacting with Plex Media Server Libraries
- /// - /// - /// - /// + /// Library endpoints which are outside of the Media Provider API. Typically this is manipulation of the library (adding/removing sections, modifying preferences, etc). ///
public interface ILibrary { /// - /// Get Hash Value + /// Get all items in library /// /// - /// This resource returns hash values for local files + /// Request all metadata items according to a query. /// /// - Task GetFileHashAsync(string url, double? type = null); + Task GetLibraryItemsAsync(GetLibraryItemsRequest? request = null); /// - /// Get Recently Added + /// Delete library caches /// /// - /// This endpoint will return the recently added content.
- /// + /// Delete the hub caches so they are recomputed on next request ///
///
- Task GetRecentlyAddedLibraryAsync(GetRecentlyAddedLibraryRequest request); + Task DeleteCachesAsync(); /// - /// Get All Libraries + /// Clean bundles /// /// - /// 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.
+ /// Clean out any now unused bundles. Bundles can become unused when media is deleted + ///
+ ///
+ Task CleanBundlesAsync(); + + /// + /// Ingest a transient item + /// + /// + /// This endpoint takes a file path specified in the `url` parameter, matches it using the scanner's match mechanism, downloads rich metadata, and then ingests the item as a transient item (without a library section). In the case where the file represents an episode, the entire tree (show, season, and episode) is added as transient items. At this time, movies and episodes are the only supported types, which are gleaned automatically from the file path.
+ /// Note that any of the parameters passed to the metadata details endpoint (e.g. `includeExtras=1`) work here. + ///
+ ///
+ Task IngestTransientItemAsync(IngestTransientItemRequest? request = null); + + /// + /// Get library matches + /// + /// + /// The matches endpoint is used to match content external to the library with content inside the library. This is done by passing a series of semantic "hints" about the content (its type, name, or release year). Each type (e.g. movie) has a canonical set of minimal required hints.
+ /// This ability to match content is useful in a variety of scenarios. For example, in the DVR, the EPG uses the endpoint to match recording rules against airing content. And in the cloud, the UMP uses the endpoint to match up a piece of media with rich metadata.
+ /// The endpoint response can including multiple matches, if there is ambiguity, each one containing a `score` from 0 to 100. For somewhat historical reasons, anything over 85 is considered a positive match (we prefer false negatives over false positives in general for matching).
+ /// The `guid` hint is somewhat special, in that it generally represents a unique identity for a piece of media (e.g. the IMDB `ttXXX`) identifier, in contrast with other hints which can be much more ambiguous (e.g. a title of `Jane Eyre`, which could refer to the 1943 or the 2011 version).
+ /// Episodes require either a season/episode pair, or an air date (or both). Either the path must be sent, or the show title + ///
+ ///
+ Task GetLibraryMatchesAsync(GetLibraryMatchesRequest? request = null); + + /// + /// Optimize the Database + /// + /// + /// Initiate optimize on the database. + /// + /// + Task OptimizeDatabaseAsync(OptimizeDatabaseRequest? request = null); + + /// + /// Get random artwork + /// + /// + /// Get random artwork across sections. This is commonly used for a screensaver.
///
- /// 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).
+ /// This retrieves 100 random artwork paths in the specified sections and returns them. Restrictions are put in place to not return artwork for items the user is not allowed to access. Artwork will be for Movies, Shows, and Artists only.
/// ///
///
- Task GetAllLibrariesAsync(); + Task GetRandomArtworkAsync(GetRandomArtworkRequest? request = null); /// - /// Get Library Details + /// Get library sections (main Media Provider Only) /// /// - /// ## Library Details Endpoint
+ /// 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 GetSectionsAsync(); + + /// + /// Add a library section + /// + /// + /// Add a new library section to the server + /// + /// + Task AddSectionAsync(AddSectionRequest request); + + /// + /// Stop refresh + /// + /// + /// Stop all refreshes across all sections + /// + /// + Task StopAllRefreshesAsync(); + + /// + /// Get section prefs + /// + /// + /// Get a section's preferences for a metadata type + /// + /// + Task GetSectionsPrefsAsync(GetSectionsPrefsRequest request); + + /// + /// Refresh all sections + /// + /// + /// Tell PMS to refresh all section metadata + /// + /// + Task RefreshSectionsMetadataAsync(RefreshSectionsMetadataRequest? request = null); + + /// + /// Get all library tags of a type + /// + /// + /// Get all library tags of a type + /// + /// + Task GetTagsAsync(GetTagsRequest? request = null); + + /// + /// Delete a metadata item + /// + /// + /// Delete a single metadata item from the library, deleting media as well + /// + /// + Task DeleteMetadataItemAsync(DeleteMetadataItemRequest request); + + /// + /// Edit a metadata item + /// + /// + /// Edit metadata items setting fields + /// + /// + Task EditMetadataItemAsync(EditMetadataItemRequest request); + + /// + /// Ad-detect an item + /// + /// + /// Start the detection of ads in a metadata item + /// + /// + Task DetectAdsAsync(DetectAdsRequest request); + + /// + /// Get the leaves of an item + /// + /// + /// Get the leaves for a metadata item such as the episodes in a show + /// + /// + Task GetAllItemLeavesAsync(GetAllItemLeavesRequest request); + + /// + /// Analyze an item + /// + /// + /// Start the analysis of a metadata item + /// + /// + Task AnalyzeMetadataAsync(AnalyzeMetadataRequest request); + + /// + /// Generate thumbs of chapters for an item + /// + /// + /// Start the chapter thumb generation for an item + /// + /// + Task GenerateThumbsAsync(GenerateThumbsRequest request); + + /// + /// Credit detect a metadata item + /// + /// + /// Start credit detection on a metadata item + /// + /// + Task DetectCreditsAsync(DetectCreditsRequest request); + + /// + /// Get an item's extras + /// + /// + /// Get the extras for a metadata item + /// + /// + Task GetExtrasAsync(GetExtrasRequest request); + + /// + /// Add to an item's extras + /// + /// + /// Add an extra to a metadata item + /// + /// + Task AddExtrasAsync(AddExtrasRequest request); + + /// + /// Get a file from a metadata or media bundle + /// + /// + /// Get a bundle file for a metadata or media item. This is either an image or a mp3 (for a show's theme) + /// + /// + Task GetFileAsync(GetFileRequest request); + + /// + /// Start BIF generation of an item + /// + /// + /// Start the indexing (BIF generation) of an item + /// + /// + Task StartBifGenerationAsync(StartBifGenerationRequest request); + + /// + /// Intro detect an item + /// + /// + /// Start the detection of intros in a metadata item + /// + /// + Task DetectIntrosAsync(DetectIntrosRequest request); + + /// + /// Create a marker + /// + /// + /// Create a marker for this user on the metadata item + /// + /// + Task CreateMarkerAsync(CreateMarkerRequest request); + + /// + /// Match a metadata item + /// + /// + /// Match a metadata item to a guid + /// + /// + Task MatchItemAsync(MatchItemRequest request); + + /// + /// Get metadata matches for an item + /// + /// + /// Get the list of metadata matches for a metadata item + /// + /// + Task ListMatchesAsync(ListMatchesRequest request); + + /// + /// Merge a metadata item + /// + /// + /// Merge a metadata item with other items + /// + /// + Task MergeItemsAsync(MergeItemsRequest request); + + /// + /// Get nearest tracks to metadata item + /// + /// + /// Get the nearest tracks, sonically, to the provided track + /// + /// + Task ListSonicallySimilarAsync(ListSonicallySimilarRequest request); + + /// + /// Set metadata preferences + /// + /// + /// Set the preferences on a metadata item + /// + /// + Task SetItemPreferencesAsync(SetItemPreferencesRequest request); + + /// + /// Refresh a metadata item + /// + /// + /// Refresh a metadata item from the agent + /// + /// + Task RefreshItemsMetadataAsync(RefreshItemsMetadataRequest request); + + /// + /// Get related items + /// + /// + /// Get a hub of related items to a metadata item + /// + /// + Task GetRelatedItemsAsync(GetRelatedItemsRequest request); + + /// + /// Get similar items + /// + /// + /// Get a list of similar items to a metadata item + /// + /// + Task ListSimilarAsync(ListSimilarRequest request); + + /// + /// Split a metadata item + /// + /// + /// Split a metadata item into multiple items + /// + /// + Task SplitItemAsync(SplitItemRequest request); + + /// + /// Add subtitles + /// + /// + /// Add a subtitle to a metadata item + /// + /// + Task AddSubtitlesAsync(AddSubtitlesRequest request); + + /// + /// Get metadata items as a tree + /// + /// + /// Get a tree of metadata items, such as the seasons/episodes of a show + /// + /// + Task GetItemTreeAsync(GetItemTreeRequest request); + + /// + /// Unmatch a metadata item + /// + /// + /// Unmatch a metadata item to info fetched from the agent + /// + /// + Task UnmatchAsync(UnmatchRequest request); + + /// + /// Get metadata top users + /// + /// + /// Get the list of users which have played this item starting with the most + /// + /// + Task ListTopUsersAsync(ListTopUsersRequest request); + + /// + /// Detect voice activity + /// + /// + /// Start the detection of voice in a metadata item + /// + /// + Task DetectVoiceActivityAsync(DetectVoiceActivityRequest request); + + /// + /// Get augmentation status + /// + /// + /// Get augmentation status and potentially wait for completion + /// + /// + Task GetAugmentationStatusAsync(GetAugmentationStatusRequest request); + + /// + /// Set stream selection + /// + /// + /// Set which streams (audio/subtitle) are selected by this user + /// + /// + Task SetStreamSelectionAsync(SetStreamSelectionRequest request); + + /// + /// Get person details + /// + /// + /// Get details for a single actor. + /// + /// + Task GetPersonAsync(GetPersonRequest request); + + /// + /// Get media for a person + /// + /// + /// Get all the media for a single actor. + /// + /// + Task ListPersonMediaAsync(ListPersonMediaRequest request); + + /// + /// Delete a library section + /// + /// + /// Delete a library section by id + /// + /// + Task DeleteLibrarySectionAsync(DeleteLibrarySectionRequest request); + + /// + /// Get a library section by id + /// + /// + /// Returns details for the library. This can be thought of as an interstitial endpoint because it contains information about the library, rather than content itself. It often contains a list of `Directory` metadata objects: These used to be used by clients to build a menuing system. + /// + /// + Task GetLibraryDetailsAsync(GetLibraryDetailsRequest request); + + /// + /// Edit a library section + /// + /// + /// Edit a library section by id setting parameters + /// + /// + Task EditSectionAsync(EditSectionRequest request); + + /// + /// Set the fields of the filtered items + /// + /// + /// This endpoint takes an large possible set of values. Here are some examples.
+ /// - **Parameters, extra documentation**
+ /// - artist.title.value
+ /// - When used with track, both artist.title.value and album.title.value need to be specified
+ /// - title.value usage
+ /// - Summary
+ /// - Tracks always rename and never merge
+ /// - Albums and Artists
+ /// - if single item and item without title does not exist, it is renamed.
+ /// - if single item and item with title does exist they are merged.
+ /// - if multiple they are always merged.
+ /// - Tracks
+ /// - Works as expected will update the track's title
+ /// - Single track: `/library/sections/{id}/all?type=10&id=42&title.value=NewName`
+ /// - Multiple tracks: `/library/sections/{id}/all?type=10&id=42,43,44&title.value=NewName`
+ /// - All tracks: `/library/sections/{id}/all?type=10&title.value=NewName`
+ /// - Albums
+ /// - Functionality changes depending on the existence of an album with the same title
+ /// - Album exists
+ /// - Single album: `/library/sections/{id}/all?type=9&id=42&title.value=Album 2`
+ /// - Album with id 42 is merged into album titled "Album 2"
+ /// - Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=Moo Album`
+ /// - All albums are merged into the existing album titled "Moo Album"
+ /// - Album does not exist
+ /// - Single album: `/library/sections/{id}/all?type=9&id=42&title.value=NewAlbumTitle`
+ /// - Album with id 42 has title modified to "NewAlbumTitle"
+ /// - Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=NewAlbumTitle`
+ /// - All albums are merged into a new album with title="NewAlbumTitle"
+ /// - Artists
+ /// - Functionaly changes depending on the existence of an artist with the same title.
+ /// - Artist exists
+ /// - Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=Artist 2`
+ /// - Artist with id 42 is merged into existing artist titled "Artist 2"
+ /// - Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=Artist 3`
+ /// - All artists are merged into the existing artist titled "Artist 3"
+ /// - Artist does not exist
+ /// - Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=NewArtistTitle`
+ /// - Artist with id 42 has title modified to "NewArtistTitle"
+ /// - Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=NewArtistTitle`
+ /// - All artists are merged into a new artist with title="NewArtistTitle"
///
- /// This endpoint provides comprehensive details about the library, focusing on organizational aspects rather than the content itself.
- ///
- /// The details include:
- ///
- /// ### Directories
- /// Organized into three categories:
- ///
- /// - **Primary Directories**:
- /// - Used in some clients for quick access to media subsets (e.g., "All", "On Deck").
- /// - Most can be replicated via media queries.
- /// - Customizable by users.
- ///
- /// - **Secondary Directories**:
- /// - Marked with `secondary="1"`.
- /// - Used in older clients for structured navigation.
- ///
- /// - **Special Directories**:
- /// - Includes a "By Folder" entry for filesystem-based browsing.
- /// - Contains an obsolete `search="1"` entry for on-the-fly search dialog creation.
- ///
- /// ### Types
- /// Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls:
- ///
- /// - **Type Object Attributes**:
- /// - `key`: Endpoint for the media list of this type.
- /// - `type`: Metadata type (if standard Plex type).
- /// - `title`: Title for this content type (e.g., "Movies").
- ///
- /// - **Filter Objects**:
- /// - Subset of the media query language.
- /// - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`.
- ///
- /// - **Sort Objects**:
- /// - Description of sort fields.
- /// - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`.
- ///
- /// > **Note**: Filters and sorts are optional; without them, no filtering controls are rendered.
- /// + /// - **Notes**
+ /// - Technically square brackets are not allowed in an URI except the Internet Protocol Literal Address
+ /// - RFC3513: A host identified by an Internet Protocol literal address, version 6 [RFC3513] or later, is distinguished by enclosing the IP literal within square brackets ("[" and "]"). This is the only place where square bracket characters are allowed in the URI syntax.
+ /// - Escaped square brackets are allowed, but don't render well ///
///
- Task GetLibraryDetailsAsync(int sectionKey, IncludeDetails? includeDetails = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeDetails.Zero); + Task UpdateItemsAsync(UpdateItemsRequest request); /// - /// Delete Library Section + /// Analyze a section /// /// - /// Delete a library using a specific section id + /// Start analysis of all items in a section. If BIF generation is enabled, this will also be started on this section /// /// - Task DeleteLibraryAsync(int sectionKey); + Task StartAnalysisAsync(StartAnalysisRequest request); /// - /// Get Library Items + /// Get autocompletions for search /// /// - /// Fetches details from a specific section of the library identified by a section key and a tag. The tag parameter accepts the following values:
- /// - `all`: All items in the section.
- /// - `unwatched`: Items that have not been played.
- /// - `newest`: Items that are recently released.
- /// - `recentlyAdded`: Items that are recently added to the library.
- /// - `recentlyViewed`: Items that were recently viewed.
- /// - `onDeck`: Items to continue watching.
- /// - `collection`: Items categorized by collection.
- /// - `edition`: Items categorized by edition.
- /// - `genre`: Items categorized by genre.
- /// - `year`: Items categorized by year of release.
- /// - `decade`: Items categorized by decade.
- /// - `director`: Items categorized by director.
- /// - `actor`: Items categorized by starring actor.
- /// - `country`: Items categorized by country of origin.
- /// - `contentRating`: Items categorized by content rating.
- /// - `rating`: Items categorized by rating.
- /// - `resolution`: Items categorized by resolution.
- /// - `firstCharacter`: Items categorized by the first letter.
- /// - `folder`: Items categorized by folder.
- /// - `albums`: Items categorized by album.
- /// + /// The field to autocomplete on is specified by the {field}.query parameter. For example `genre.query` or `title.query`.
+ /// Returns a set of items from the filtered items whose {field} starts with {field}.query. In the results, a {field}.queryRange will be present to express the range of the match ///
///
- Task GetLibraryItemsAsync(GetLibraryItemsRequest request); + Task AutocompleteAsync(AutocompleteRequest request); /// - /// Get Library section media by tag ALL + /// Get collections in a section /// /// - /// Retrieves a list of all general media data for this library.
- /// + /// Get all collections in a section ///
///
- Task GetLibrarySectionsAllAsync(GetLibrarySectionsAllRequest request); + Task GetCollectionsAsync(GetCollectionsRequest request); /// - /// Refresh Metadata Of The Library + /// Get common fields for items /// /// - /// This endpoint Refreshes all the Metadata of the library.
- /// + /// Represents a "Common" item. It contains only the common attributes of the items selected by the provided filter
+ /// Fields which are not common will be expressed in the `mixedFields` field ///
///
- Task GetRefreshLibraryMetadataAsync(int sectionKey, Force? force = null); + Task GetCommonAsync(GetCommonRequest request); /// - /// Search Library + /// Empty section trash /// /// - /// Search for content within a specific section of the library.
- ///
- /// ### Types
- /// Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls:
- ///
- /// - **Type Object Attributes**:
- /// - `type`: Metadata type (if standard Plex type).
- /// - `title`: Title for this content type (e.g., "Movies").
- ///
- /// - **Filter Objects**:
- /// - Subset of the media query language.
- /// - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`.
- ///
- /// - **Sort Objects**:
- /// - Description of sort fields.
- /// - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`.
- ///
- /// > **Note**: Filters and sorts are optional; without them, no filtering controls are rendered.
- /// + /// Empty trash in the section, permanently deleting media/metadata for missing media ///
///
- Task GetSearchLibraryAsync(int sectionKey, GetSearchLibraryQueryParamType type); + Task EmptyTrashAsync(EmptyTrashRequest request); /// - /// Get Genres of library media + /// Get section filters /// /// - /// Retrieves a list of all the genres that are found for the media in this library.
- /// + /// Get common filters on a section ///
///
- Task GetGenresLibraryAsync(int sectionKey, GetGenresLibraryQueryParamType type); + Task GetSectionFiltersAsync(GetSectionFiltersRequest request); /// - /// Get Countries of library media + /// Get list of first characters /// /// - /// Retrieves a list of all the countries that are found for the media in this library.
- /// + /// Get list of first characters in this section ///
///
- Task GetCountriesLibraryAsync(int sectionKey, GetCountriesLibraryQueryParamType type); + Task GetFirstCharactersAsync(GetFirstCharactersRequest request); /// - /// Get Actors of library media + /// Delete section indexes /// /// - /// Retrieves a list of all the actors that are found for the media in this library.
- /// + /// Delete all the indexes in a section ///
///
- Task GetActorsLibraryAsync(int sectionKey, GetActorsLibraryQueryParamType type); + Task DeleteIndexesAsync(DeleteIndexesRequest request); /// - /// Search All Libraries + /// Delete section intro markers /// /// - /// Search the provided query across all library sections, or a single section, and return matches as hubs, split up by type.
- /// + /// Delete all the intro markers in a section ///
///
- Task GetSearchAllLibrariesAsync(GetSearchAllLibrariesRequest request); + Task DeleteIntrosAsync(DeleteIntrosRequest request); /// - /// Get Media Metadata + /// Get section prefs /// /// - /// This endpoint will return all the (meta)data of one or more library items specified by the ratingKey.
- /// Multiple rating keys can be provided as a comma-separated list (e.g., "21119,21617").
- /// + /// Get the prefs for a section by id and potentially overriding the agent ///
///
- Task GetMediaMetaDataAsync(GetMediaMetaDataRequest request); + Task GetSectionPreferencesAsync(GetSectionPreferencesRequest request); /// - /// Get Media Background Artwork + /// Set section prefs /// /// - /// Returns the background artwork for a library item. + /// Set the prefs for a section by id /// /// - Task GetMediaArtsAsync(long ratingKey); + Task SetSectionPreferencesAsync(SetSectionPreferencesRequest request); /// - /// Upload Media Background Artwork + /// Cancel section refresh /// /// - /// Uploads an image to use as the background artwork for a library item, either from a local file or a remote URL + /// Cancel the refresh of a section /// /// - Task PostMediaArtsAsync(long ratingKey, string? url = null, byte[]? requestBody = null); + Task CancelRefreshAsync(CancelRefreshRequest request); /// - /// Get Media Posters + /// Refresh section /// /// - /// Returns the available posters for a library item. + /// Start a refresh of this section /// /// - Task GetMediaPostersAsync(long ratingKey); + Task RefreshSectionAsync(RefreshSectionRequest request); /// - /// Upload Media Poster + /// Get a section sorts /// /// - /// Uploads a poster to a library item, either from a local file or a remote URL + /// Get the sort mechanisms available in a section /// /// - Task PostMediaPosterAsync(long ratingKey, string? url = null, byte[]? requestBody = null); + Task GetAvailableSortsAsync(GetAvailableSortsRequest request); /// - /// Get Items Children + /// Get loudness about a stream in json /// /// - /// This endpoint will return the children of of a library item specified with the ratingKey.
- /// + /// The the loudness of a stream in db, one entry per 100ms ///
///
- Task GetMetadataChildrenAsync(double ratingKey, string? includeElements = null); + Task GetStreamLevelsAsync(GetStreamLevelsRequest request); /// - /// Get Top Watched Content + /// Get loudness about a stream /// /// - /// This endpoint will return the top watched content from libraries of a certain type
+ /// The the loudness of a stream in db, one number per line, one entry per 100ms + ///
+ ///
+ Task GetStreamLoudnessAsync(GetStreamLoudnessRequest request); + + /// + /// Get a chapter image + /// + /// + /// Get a single chapter image for a piece of media + /// + /// + Task GetChapterImageAsync(GetChapterImageRequest request); + + /// + /// Set an item's artwork, theme, etc + /// + /// + /// Set the artwork, thumb, element for a metadata item
+ /// Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user + ///
+ ///
+ Task SetItemArtworkAsync(SetItemArtworkRequest request); + + /// + /// Set an item's artwork, theme, etc + /// + /// + /// Set the artwork, thumb, element for a metadata item
+ /// Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user + ///
+ ///
+ Task UpdateItemArtworkAsync(UpdateItemArtworkRequest request); + + /// + /// Delete a marker + /// + /// + /// Delete a marker for this user on the metadata item + /// + /// + Task DeleteMarkerAsync(DeleteMarkerRequest request); + + /// + /// Edit a marker + /// + /// + /// Edit a marker for this user on the metadata item + /// + /// + Task EditMarkerAsync(EditMarkerRequest request); + + /// + /// Delete a media item + /// + /// + /// Delete a single media from a metadata item in the library + /// + /// + Task DeleteMediaItemAsync(DeleteMediaItemRequest request); + + /// + /// Get BIF index for a part + /// + /// + /// Get BIF index for a part by index type + /// + /// + Task GetPartIndexAsync(GetPartIndexRequest request); + + /// + /// Delete a collection + /// + /// + /// Delete a library collection from the PMS + /// + /// + Task DeleteCollectionAsync(DeleteCollectionRequest request); + + /// + /// Get a section composite image + /// + /// + /// Get a composite image of images in this section + /// + /// + Task GetSectionImageAsync(GetSectionImageRequest request); + + /// + /// Delete a stream + /// + /// + /// Delete a stream. Only applies to downloaded subtitle streams or a sidecar subtitle when media deletion is enabled. + /// + /// + Task DeleteStreamAsync(DeleteStreamRequest request); + + /// + /// Get a stream + /// + /// + /// Get a stream (such as a sidecar subtitle stream) + /// + /// + Task GetStreamAsync(GetStreamRequest request); + + /// + /// Set a stream offset + /// + /// + /// Set a stream offset in ms. This may not be respected by all clients + /// + /// + Task SetStreamOffsetAsync(SetStreamOffsetRequest request); + + /// + /// Get an item's artwork, theme, etc + /// + /// + /// Get the artwork, thumb, element for a metadata item + /// + /// + Task GetItemArtworkAsync(GetItemArtworkRequest request); + + /// + /// Get a media part + /// + /// + /// Get a media part for streaming or download.
+ /// - streaming: This is the default scenario. Bandwidth usage on this endpoint will be guaranteed (on the server's end) to be at least the bandwidth reservation given in the decision. If no decision exists, an ad-hoc decision will be created if sufficient bandwidth exists. Clients should not rely on ad-hoc decisions being made as this may be removed in the future.
+ /// - download: Indicated if the query parameter indicates this is a download. Bandwidth will be prioritized behind playbacks and will get a fair share of what remains.
/// ///
///
- Task GetTopWatchedContentAsync(GetTopWatchedContentQueryParamType type, GetTopWatchedContentQueryParamIncludeGuids? includeGuids = LukeHagar.PlexAPI.SDK.Models.Requests.GetTopWatchedContentQueryParamIncludeGuids.Disable); + Task GetMediaPartAsync(GetMediaPartRequest request); + + /// + /// Get an image from part BIF + /// + /// + /// Extract an image from the BIF for a part at a particular offset + /// + /// + Task GetImageFromBifAsync(GetImageFromBifRequest request); } /// - /// API Calls interacting with Plex Media Server Libraries
- /// - /// - /// - /// + /// Library endpoints which are outside of the Media Provider API. Typically this is manipulation of the library (adding/removing sections, modifying preferences, etc). ///
public class Library: ILibrary { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; public Library(SDKConfig config) { SDKConfiguration = config; } - public async Task GetFileHashAsync(string url, double? type = null) + public async Task GetLibraryItemsAsync(GetLibraryItemsRequest? request = null) { - var request = new GetFileHashRequest() - { - Url = url, - Type = type, - }; + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/hashes", request); + var urlString = URLBuilder.Build(baseUrl, "/library/all", request); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getFileHash", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getLibraryItems", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -358,7 +852,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -386,54 +880,172 @@ namespace LukeHagar.PlexAPI.SDK int responseStatusCode = (int)httpResponse.StatusCode; if(responseStatusCode == 200) { - return new GetFileHashResponse() + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetLibraryItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteCachesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/library/caches"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteCaches", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteCachesResponse() { StatusCode = responseStatusCode, ContentType = contentType, RawResponse = httpResponse }; } - else if(responseStatusCode == 400) + else if(responseStatusCode >= 400 && responseStatusCode < 500) { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetFileHashBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetFileHashBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetFileHashBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 401) + else if(responseStatusCode >= 500 && responseStatusCode < 600) { - if(Utilities.IsContentTypeMatch("application/json", contentType)) + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task CleanBundlesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/library/clean/bundles"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "cleanBundles", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetFileHashUnauthorizedPayload payload; - try + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + httpResponse = _httpResponse; } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetFileHashUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetFileHashUnauthorized(payload, httpResponse, httpResponseBody); } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new CleanBundlesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; } else if(responseStatusCode >= 400 && responseStatusCode < 500) { @@ -447,20 +1059,33 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task GetRecentlyAddedLibraryAsync(GetRecentlyAddedLibraryRequest request) + public async Task IngestTransientItemAsync(IngestTransientItemRequest? request = null) { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/recentlyAdded", request); + var urlString = URLBuilder.Build(baseUrl, "/library/file", request); - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-recently-added-library", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "ingestTransientItem", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -470,7 +1095,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -501,70 +1126,28 @@ namespace LukeHagar.PlexAPI.SDK if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetRecentlyAddedLibraryResponseBody obj; + MediaContainerWithMetadata obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetRecentlyAddedLibraryResponseBody.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); } - var response = new GetRecentlyAddedLibraryResponse() + var response = new IngestTransientItemResponse() { StatusCode = responseStatusCode, ContentType = contentType, RawResponse = httpResponse }; - response.Object = obj; + response.MediaContainerWithMetadata = obj; return response; } throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetRecentlyAddedLibraryBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetRecentlyAddedLibraryBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetRecentlyAddedLibraryBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetRecentlyAddedLibraryUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetRecentlyAddedLibraryUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetRecentlyAddedLibraryUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } else if(responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); @@ -577,21 +1160,33 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task GetAllLibrariesAsync() + public async Task GetLibraryMatchesAsync(GetLibraryMatchesRequest? request = null) { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/library/sections"; + var urlString = URLBuilder.Build(baseUrl, "/library/matches", request); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-all-libraries", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getLibraryMatches", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -601,7 +1196,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -632,70 +1227,28 @@ namespace LukeHagar.PlexAPI.SDK if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetAllLibrariesResponseBody obj; + MediaContainerWithMetadata obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetAllLibrariesResponseBody.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); } - var response = new GetAllLibrariesResponse() + var response = new GetLibraryMatchesResponse() { StatusCode = responseStatusCode, ContentType = contentType, RawResponse = httpResponse }; - response.Object = obj; + response.MediaContainerWithMetadata = obj; return response; } throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetAllLibrariesBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetAllLibrariesBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetAllLibrariesBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetAllLibrariesUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetAllLibrariesUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetAllLibrariesUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } else if(responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); @@ -708,25 +1261,33 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task GetLibraryDetailsAsync(int sectionKey, IncludeDetails? includeDetails = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeDetails.Zero) + public async Task OptimizeDatabaseAsync(OptimizeDatabaseRequest? request = null) { - var request = new GetLibraryDetailsRequest() - { - SectionKey = sectionKey, - IncludeDetails = includeDetails, - }; + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}", request); + var urlString = URLBuilder.Build(baseUrl, "/library/optimize", request); - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-library-details", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "optimizeDatabase", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -736,7 +1297,3767 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new OptimizeDatabaseResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetRandomArtworkAsync(GetRandomArtworkRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/randomArtwork", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getRandomArtwork", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithArtwork obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithArtwork.", httpResponse, httpResponseBody, ex); + } + + var response = new GetRandomArtworkResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithArtwork = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetSectionsAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/library/sections/all"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSections", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetSectionsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetSectionsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetSectionsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task AddSectionAsync(AddSectionRequest request) + { + if (request == null) + { + request = new AddSectionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/all", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "addSection", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + SlashGetResponses200 obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into SlashGetResponses200.", httpResponse, httpResponseBody, ex); + } + + var response = new AddSectionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.SlashGetResponses200 = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task StopAllRefreshesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/library/sections/all/refresh"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "stopAllRefreshes", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + RequestHandlerSlashGetResponses200 obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into RequestHandlerSlashGetResponses200.", httpResponse, httpResponseBody, ex); + } + + var response = new StopAllRefreshesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.RequestHandlerSlashGetResponses200 = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetSectionsPrefsAsync(GetSectionsPrefsRequest request) + { + if (request == null) + { + request = new GetSectionsPrefsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/prefs", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSectionsPrefs", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + RequestHandlerSlashGetResponses200 obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into RequestHandlerSlashGetResponses200.", httpResponse, httpResponseBody, ex); + } + + var response = new GetSectionsPrefsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.RequestHandlerSlashGetResponses200 = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task RefreshSectionsMetadataAsync(RefreshSectionsMetadataRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/refresh", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "refreshSectionsMetadata", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode == 503 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new RefreshSectionsMetadataResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503 || responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetTagsAsync(GetTagsRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/tags", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getTags", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetTagsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetTagsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetTagsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteMetadataItemAsync(DeleteMetadataItemRequest request) + { + if (request == null) + { + request = new DeleteMetadataItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteMetadataItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteMetadataItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task EditMetadataItemAsync(EditMetadataItemRequest request) + { + if (request == null) + { + request = new EditMetadataItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "editMetadataItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new EditMetadataItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DetectAdsAsync(DetectAdsRequest request) + { + if (request == null) + { + request = new DetectAdsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/addetect", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "detectAds", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DetectAdsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetAllItemLeavesAsync(GetAllItemLeavesRequest request) + { + if (request == null) + { + request = new GetAllItemLeavesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/allLeaves", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getAllItemLeaves", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetAllItemLeavesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task AnalyzeMetadataAsync(AnalyzeMetadataRequest request) + { + if (request == null) + { + request = new AnalyzeMetadataRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/analyze", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "analyzeMetadata", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new AnalyzeMetadataResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GenerateThumbsAsync(GenerateThumbsRequest request) + { + if (request == null) + { + request = new GenerateThumbsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/chapterThumbs", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "generateThumbs", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new GenerateThumbsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DetectCreditsAsync(DetectCreditsRequest request) + { + if (request == null) + { + request = new DetectCreditsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/credits", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "detectCredits", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DetectCreditsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetExtrasAsync(GetExtrasRequest request) + { + if (request == null) + { + request = new GetExtrasRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/extras", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getExtras", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetExtrasResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task AddExtrasAsync(AddExtrasRequest request) + { + if (request == null) + { + request = new AddExtrasRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/extras", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "addExtras", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new AddExtrasResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetFileAsync(GetFileRequest request) + { + if (request == null) + { + request = new GetFileRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/file", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getFile", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("audio/mpeg3", contentType)) + { + var response = new GetFileResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.TwoHundredAudioMpeg3Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + else if(Utilities.IsContentTypeMatch("image/jpeg", contentType)) + { + var response = new GetFileResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.TwoHundredImageJpegBytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task StartBifGenerationAsync(StartBifGenerationRequest request) + { + if (request == null) + { + request = new StartBifGenerationRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/index", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "startBifGeneration", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new StartBifGenerationResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DetectIntrosAsync(DetectIntrosRequest request) + { + if (request == null) + { + request = new DetectIntrosRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/intro", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "detectIntros", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DetectIntrosResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task CreateMarkerAsync(CreateMarkerRequest request) + { + if (request == null) + { + request = new CreateMarkerRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/marker", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "createMarker", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + CreateMarkerResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into CreateMarkerResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new CreateMarkerResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task MatchItemAsync(MatchItemRequest request) + { + if (request == null) + { + request = new MatchItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/match", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "matchItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new MatchItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ListMatchesAsync(ListMatchesRequest request) + { + if (request == null) + { + request = new ListMatchesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/matches", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listMatches", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new ListMatchesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task MergeItemsAsync(MergeItemsRequest request) + { + if (request == null) + { + request = new MergeItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/merge", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "mergeItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new MergeItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ListSonicallySimilarAsync(ListSonicallySimilarRequest request) + { + if (request == null) + { + request = new ListSonicallySimilarRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/nearest", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listSonicallySimilar", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new ListSonicallySimilarResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task SetItemPreferencesAsync(SetItemPreferencesRequest request) + { + if (request == null) + { + request = new SetItemPreferencesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/prefs", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "setItemPreferences", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new SetItemPreferencesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task RefreshItemsMetadataAsync(RefreshItemsMetadataRequest request) + { + if (request == null) + { + request = new RefreshItemsMetadataRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/refresh", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "refreshItemsMetadata", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new RefreshItemsMetadataResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetRelatedItemsAsync(GetRelatedItemsRequest request) + { + if (request == null) + { + request = new GetRelatedItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/related", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getRelatedItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetRelatedItemsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetRelatedItemsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetRelatedItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ListSimilarAsync(ListSimilarRequest request) + { + if (request == null) + { + request = new ListSimilarRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/similar", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listSimilar", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new ListSimilarResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task SplitItemAsync(SplitItemRequest request) + { + if (request == null) + { + request = new SplitItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/split", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "splitItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new SplitItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task AddSubtitlesAsync(AddSubtitlesRequest request) + { + if (request == null) + { + request = new AddSubtitlesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/subtitles", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "addSubtitles", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new AddSubtitlesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetItemTreeAsync(GetItemTreeRequest request) + { + if (request == null) + { + request = new GetItemTreeRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/tree", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getItemTree", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithNestedMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithNestedMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetItemTreeResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithNestedMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task UnmatchAsync(UnmatchRequest request) + { + if (request == null) + { + request = new UnmatchRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/unmatch", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "unmatch", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new UnmatchResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ListTopUsersAsync(ListTopUsersRequest request) + { + if (request == null) + { + request = new ListTopUsersRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/users/top", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listTopUsers", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ListTopUsersResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ListTopUsersResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new ListTopUsersResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DetectVoiceActivityAsync(DetectVoiceActivityRequest request) + { + if (request == null) + { + request = new DetectVoiceActivityRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/voiceActivity", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "detectVoiceActivity", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DetectVoiceActivityResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetAugmentationStatusAsync(GetAugmentationStatusRequest request) + { + if (request == null) + { + request = new GetAugmentationStatusRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/augmentations/{augmentationId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getAugmentationStatus", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 401 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 204) + { + return new GetAugmentationStatusResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 401 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task SetStreamSelectionAsync(SetStreamSelectionRequest request) + { + if (request == null) + { + request = new SetStreamSelectionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/parts/{partId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "setStreamSelection", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new SetStreamSelectionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetPersonAsync(GetPersonRequest request) + { + if (request == null) + { + request = new GetPersonRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/people/{personId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPerson", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetPersonResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetPersonResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetPersonResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ListPersonMediaAsync(ListPersonMediaRequest request) + { + if (request == null) + { + request = new ListPersonMediaRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/people/{personId}/media", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listPersonMedia", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new ListPersonMediaResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteLibrarySectionAsync(DeleteLibrarySectionRequest request) + { + if (request == null) + { + request = new DeleteLibrarySectionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteLibrarySection", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteLibrarySectionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetLibraryDetailsAsync(GetLibraryDetailsRequest request) + { + if (request == null) + { + request = new GetLibraryDetailsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getLibraryDetails", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -789,48 +5110,6 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetLibraryDetailsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetLibraryDetailsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetLibraryDetailsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetLibraryDetailsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetLibraryDetailsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetLibraryDetailsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } else if(responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); @@ -843,24 +5122,37 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task DeleteLibraryAsync(int sectionKey) + public async Task EditSectionAsync(EditSectionRequest request) { - var request = new DeleteLibraryRequest() + if (request == null) { - SectionKey = sectionKey, - }; + request = new EditSectionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}", request); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}", request); - var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteLibrary", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "editSection", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -870,7 +5162,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -898,56 +5190,14 @@ namespace LukeHagar.PlexAPI.SDK int responseStatusCode = (int)httpResponse.StatusCode; if(responseStatusCode == 200) { - return new DeleteLibraryResponse() + return new EditSectionResponse() { StatusCode = responseStatusCode, ContentType = contentType, RawResponse = httpResponse }; } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - DeleteLibraryBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into DeleteLibraryBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new DeleteLibraryBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - DeleteLibraryUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into DeleteLibraryUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new DeleteLibraryUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } @@ -959,20 +5209,37 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task GetLibraryItemsAsync(GetLibraryItemsRequest request) + public async Task UpdateItemsAsync(UpdateItemsRequest request) { + if (request == null) + { + request = new UpdateItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}/{tag}", request); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/all", request); - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-library-items", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "updateItems", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -982,7 +5249,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode == 400 || _statusCode == 404 || _statusCode == 409 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -1010,319 +5277,99 @@ namespace LukeHagar.PlexAPI.SDK int responseStatusCode = (int)httpResponse.StatusCode; if(responseStatusCode == 200) { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetLibraryItemsResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetLibraryItemsResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetLibraryItemsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetLibraryItemsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetLibraryItemsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetLibraryItemsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetLibraryItemsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetLibraryItemsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetLibraryItemsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetLibrarySectionsAllAsync(GetLibrarySectionsAllRequest request) - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}/all", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-library-sections-all", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetLibrarySectionsAllResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetLibrarySectionsAllResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetLibrarySectionsAllResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetLibrarySectionsAllBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetLibrarySectionsAllBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetLibrarySectionsAllBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetLibrarySectionsAllUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetLibrarySectionsAllUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetLibrarySectionsAllUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetRefreshLibraryMetadataAsync(int sectionKey, Force? force = null) - { - var request = new GetRefreshLibraryMetadataRequest() - { - SectionKey = sectionKey, - Force = force, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}/refresh", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-refresh-library-metadata", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new GetRefreshLibraryMetadataResponse() + return new UpdateItemsResponse() { StatusCode = responseStatusCode, ContentType = contentType, RawResponse = httpResponse }; } - else if(responseStatusCode == 400) + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode == 409 || responseStatusCode >= 400 && responseStatusCode < 500) { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetRefreshLibraryMetadataBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetRefreshLibraryMetadataBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetRefreshLibraryMetadataBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 401) + else if(responseStatusCode >= 500 && responseStatusCode < 600) { - if(Utilities.IsContentTypeMatch("application/json", contentType)) + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task StartAnalysisAsync(StartAnalysisRequest request) + { + if (request == null) + { + request = new StartAnalysisRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/analyze", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "startAnalysis", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetRefreshLibraryMetadataUnauthorizedPayload payload; - try + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + httpResponse = _httpResponse; } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetRefreshLibraryMetadataUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetRefreshLibraryMetadataUnauthorized(payload, httpResponse, httpResponseBody); } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new StartAnalysisResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; } else if(responseStatusCode >= 400 && responseStatusCode < 500) { @@ -1336,550 +5383,26 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task GetSearchLibraryAsync(int sectionKey, GetSearchLibraryQueryParamType type) + public async Task AutocompleteAsync(AutocompleteRequest request) { - var request = new GetSearchLibraryRequest() + if (request == null) { - SectionKey = sectionKey, - Type = type, - }; + request = new AutocompleteRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}/search", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-search-library", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSearchLibraryResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSearchLibraryResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetSearchLibraryResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSearchLibraryBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSearchLibraryBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetSearchLibraryBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSearchLibraryUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSearchLibraryUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetSearchLibraryUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetGenresLibraryAsync(int sectionKey, GetGenresLibraryQueryParamType type) - { - var request = new GetGenresLibraryRequest() - { - SectionKey = sectionKey, - Type = type, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}/genre", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-genres-library", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetGenresLibraryResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetGenresLibraryResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetGenresLibraryResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetGenresLibraryBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetGenresLibraryBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetGenresLibraryBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetGenresLibraryUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetGenresLibraryUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetGenresLibraryUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetCountriesLibraryAsync(int sectionKey, GetCountriesLibraryQueryParamType type) - { - var request = new GetCountriesLibraryRequest() - { - SectionKey = sectionKey, - Type = type, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}/country", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-countries-library", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetCountriesLibraryResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetCountriesLibraryResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetCountriesLibraryResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetCountriesLibraryBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetCountriesLibraryBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetCountriesLibraryBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetCountriesLibraryUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetCountriesLibraryUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetCountriesLibraryUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetActorsLibraryAsync(int sectionKey, GetActorsLibraryQueryParamType type) - { - var request = new GetActorsLibraryRequest() - { - SectionKey = sectionKey, - Type = type, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionKey}/actor", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-actors-library", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetActorsLibraryResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetActorsLibraryResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetActorsLibraryResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetActorsLibraryBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetActorsLibraryBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetActorsLibraryBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetActorsLibraryUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetActorsLibraryUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetActorsLibraryUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetSearchAllLibrariesAsync(GetSearchAllLibrariesRequest request) - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/search", request); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/autocomplete", request); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); @@ -1890,7 +5413,7 @@ namespace LukeHagar.PlexAPI.SDK httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-search-all-libraries", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "autocomplete", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -1900,7 +5423,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -1931,66 +5454,129 @@ namespace LukeHagar.PlexAPI.SDK if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSearchAllLibrariesResponseBody obj; + MediaContainerWithMetadata obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetSearchAllLibrariesResponseBody.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); } - var response = new GetSearchAllLibrariesResponse() + var response = new AutocompleteResponse() { StatusCode = responseStatusCode, ContentType = contentType, RawResponse = httpResponse }; - response.Object = obj; + response.MediaContainerWithMetadata = obj; return response; } throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 400) + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSearchAllLibrariesBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSearchAllLibrariesBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetSearchAllLibrariesBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 401) + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetCollectionsAsync(GetCollectionsRequest request) + { + if (request == null) + { + request = new GetCollectionsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/collections", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCollections", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) { if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSearchAllLibrariesUnauthorizedPayload payload; + MediaContainerWithMetadata obj; try { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetSearchAllLibrariesUnauthorizedPayload.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); } - payload.RawResponse = httpResponse; - throw new GetSearchAllLibrariesUnauthorized(payload, httpResponse, httpResponseBody); + var response = new GetCollectionsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; } throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); @@ -2007,20 +5593,37 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task GetMediaMetaDataAsync(GetMediaMetaDataRequest request) + public async Task GetCommonAsync(GetCommonRequest request) { + if (request == null) + { + request = new GetCommonRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}", request); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/common", request); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-media-meta-data", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCommon", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -2030,7 +5633,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -2061,71 +5664,29 @@ namespace LukeHagar.PlexAPI.SDK if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMediaMetaDataResponseBody obj; + MediaContainerWithMetadata obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetMediaMetaDataResponseBody.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); } - var response = new GetMediaMetaDataResponse() + var response = new GetCommonResponse() { StatusCode = responseStatusCode, ContentType = contentType, RawResponse = httpResponse }; - response.Object = obj; + response.MediaContainerWithMetadata = obj; return response; } throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMediaMetaDataBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetMediaMetaDataBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetMediaMetaDataBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMediaMetaDataUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetMediaMetaDataUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetMediaMetaDataUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } @@ -2137,24 +5698,37 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task GetMediaArtsAsync(long ratingKey) + public async Task EmptyTrashAsync(EmptyTrashRequest request) { - var request = new GetMediaArtsRequest() + if (request == null) { - RatingKey = ratingKey, - }; + request = new EmptyTrashRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/arts", request); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/emptyTrash", request); - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-media-arts", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "emptyTrash", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -2164,7 +5738,94 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new EmptyTrashResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetSectionFiltersAsync(GetSectionFiltersRequest request) + { + if (request == null) + { + request = new GetSectionFiltersRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/filters", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSectionFilters", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -2195,17 +5856,17 @@ namespace LukeHagar.PlexAPI.SDK if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMediaArtsResponseBody obj; + GetSectionFiltersResponseBody obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetMediaArtsResponseBody.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into GetSectionFiltersResponseBody.", httpResponse, httpResponseBody, ex); } - var response = new GetMediaArtsResponse() + var response = new GetSectionFiltersResponse() { StatusCode = responseStatusCode, ContentType = contentType, @@ -2217,7 +5878,7 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + else if(responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } @@ -2229,32 +5890,986 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task PostMediaArtsAsync(long ratingKey, string? url = null, byte[]? requestBody = null) + public async Task GetFirstCharactersAsync(GetFirstCharactersRequest request) { - var request = new PostMediaArtsRequest() + if (request == null) { - RatingKey = ratingKey, - Url = url, - RequestBody = requestBody, - }; + request = new GetFirstCharactersRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/arts", request); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/firstCharacters", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getFirstCharacters", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetFirstCharactersResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetFirstCharactersResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetFirstCharactersResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteIndexesAsync(DeleteIndexesRequest request) + { + if (request == null) + { + request = new DeleteIndexesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/indexes", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteIndexes", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteIndexesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteIntrosAsync(DeleteIntrosRequest request) + { + if (request == null) + { + request = new DeleteIntrosRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/intros", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteIntros", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteIntrosResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetSectionPreferencesAsync(GetSectionPreferencesRequest request) + { + if (request == null) + { + request = new GetSectionPreferencesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/prefs", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSectionPreferences", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithSettings obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithSettings.", httpResponse, httpResponseBody, ex); + } + + var response = new GetSectionPreferencesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithSettings = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task SetSectionPreferencesAsync(SetSectionPreferencesRequest request) + { + if (request == null) + { + request = new SetSectionPreferencesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/prefs", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "setSectionPreferences", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new SetSectionPreferencesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task CancelRefreshAsync(CancelRefreshRequest request) + { + if (request == null) + { + request = new CancelRefreshRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/refresh", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "cancelRefresh", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new CancelRefreshResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task RefreshSectionAsync(RefreshSectionRequest request) + { + if (request == null) + { + request = new RefreshSectionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/refresh", request); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "raw", false, true); - if (serializedBody != null) - { - httpRequest.Content = serializedBody; - } + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "post-media-arts", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "refreshSection", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new RefreshSectionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetAvailableSortsAsync(GetAvailableSortsRequest request) + { + if (request == null) + { + request = new GetAvailableSortsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/sorts", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getAvailableSorts", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetAvailableSortsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetAvailableSortsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetAvailableSortsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetStreamLevelsAsync(GetStreamLevelsRequest request) + { + if (request == null) + { + request = new GetStreamLevelsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}/levels", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getStreamLevels", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetStreamLevelsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetStreamLevelsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetStreamLevelsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetStreamLoudnessAsync(GetStreamLoudnessRequest request) + { + if (request == null) + { + request = new GetStreamLoudnessRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}/loudness", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getStreamLoudness", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("text/plain", contentType)) + { + var response = new GetStreamLoudnessResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Res = await httpResponse.Content.ReadAsStringAsync(); + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetChapterImageAsync(GetChapterImageRequest request) + { + if (request == null) + { + request = new GetChapterImageRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/media/{mediaId}/chapterImages/{chapter}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getChapterImage", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -2292,7 +6907,648 @@ namespace LukeHagar.PlexAPI.SDK int responseStatusCode = (int)httpResponse.StatusCode; if(responseStatusCode == 200) { - return new PostMediaArtsResponse() + if(Utilities.IsContentTypeMatch("image/jpeg", contentType)) + { + var response = new GetChapterImageResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task SetItemArtworkAsync(SetItemArtworkRequest request) + { + if (request == null) + { + request = new SetItemArtworkRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/{element}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "setItemArtwork", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new SetItemArtworkResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task UpdateItemArtworkAsync(UpdateItemArtworkRequest request) + { + if (request == null) + { + request = new UpdateItemArtworkRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/{element}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "updateItemArtwork", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new UpdateItemArtworkResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteMarkerAsync(DeleteMarkerRequest request) + { + if (request == null) + { + request = new DeleteMarkerRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/marker/{marker}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteMarker", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteMarkerResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task EditMarkerAsync(EditMarkerRequest request) + { + if (request == null) + { + request = new EditMarkerRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/marker/{marker}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "editMarker", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + PostResponses200 obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into PostResponses200.", httpResponse, httpResponseBody, ex); + } + + var response = new EditMarkerResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.PostResponses200 = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteMediaItemAsync(DeleteMediaItemRequest request) + { + if (request == null) + { + request = new DeleteMediaItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/media/{mediaItem}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteMediaItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteMediaItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetPartIndexAsync(GetPartIndexRequest request) + { + if (request == null) + { + request = new GetPartIndexRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/parts/{partId}/indexes/{index}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPartIndex", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/octet-stream", contentType)) + { + var response = new GetPartIndexResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteCollectionAsync(DeleteCollectionRequest request) + { + if (request == null) + { + request = new DeleteCollectionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/collection/{collectionId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteCollection", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteCollectionResponse() { StatusCode = responseStatusCode, ContentType = contentType, @@ -2311,24 +7567,37 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task GetMediaPostersAsync(long ratingKey) + public async Task GetSectionImageAsync(GetSectionImageRequest request) { - var request = new GetMediaPostersRequest() + if (request == null) { - RatingKey = ratingKey, - }; + request = new GetSectionImageRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/posters", request); + var urlString = URLBuilder.Build(baseUrl, "/library/sections/{sectionId}/composite/{updatedAt}", request); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-media-posters", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSectionImage", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -2338,7 +7607,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -2366,113 +7635,560 @@ namespace LukeHagar.PlexAPI.SDK int responseStatusCode = (int)httpResponse.StatusCode; if(responseStatusCode == 200) { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMediaPostersResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetMediaPostersResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetMediaPostersResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task PostMediaPosterAsync(long ratingKey, string? url = null, byte[]? requestBody = null) - { - var request = new PostMediaPosterRequest() - { - RatingKey = ratingKey, - Url = url, - RequestBody = requestBody, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/posters", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "raw", false, true); - if (serializedBody != null) - { - httpRequest.Content = serializedBody; - } - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "post-media-poster", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new PostMediaPosterResponse() + return new GetSectionImageResponse() { StatusCode = responseStatusCode, ContentType = contentType, RawResponse = httpResponse }; } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteStreamAsync(DeleteStreamRequest request) + { + if (request == null) + { + request = new DeleteStreamRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}.{ext}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteStream", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode == 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteStreamResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500 || responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetStreamAsync(GetStreamRequest request) + { + if (request == null) + { + request = new GetStreamRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}.{ext}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getStream", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode == 501 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new GetStreamResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 501 || responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task SetStreamOffsetAsync(SetStreamOffsetRequest request) + { + if (request == null) + { + request = new SetStreamOffsetRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/streams/{streamId}.{ext}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "setStreamOffset", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new SetStreamOffsetResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetItemArtworkAsync(GetItemArtworkRequest request) + { + if (request == null) + { + request = new GetItemArtworkRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ids}/{element}/{timestamp}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getItemArtwork", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("audio/mpeg3", contentType)) + { + var response = new GetItemArtworkResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.TwoHundredAudioMpeg3Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + else if(Utilities.IsContentTypeMatch("image/jpeg", contentType)) + { + var response = new GetItemArtworkResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.TwoHundredImageJpegBytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetMediaPartAsync(GetMediaPartRequest request) + { + if (request == null) + { + request = new GetMediaPartRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/parts/{partId}/{changestamp}/{filename}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getMediaPart", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode == 503 || _statusCode == 509 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new GetMediaPartResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503 || responseStatusCode == 509 || responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetImageFromBifAsync(GetImageFromBifRequest request) + { + if (request == null) + { + request = new GetImageFromBifRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/parts/{partId}/indexes/{index}/{offset}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getImageFromBif", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("image/jpeg", contentType)) + { + var response = new GetImageFromBifResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); @@ -2484,275 +8200,5 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - - public async Task GetMetadataChildrenAsync(double ratingKey, string? includeElements = null) - { - var request = new GetMetadataChildrenRequest() - { - RatingKey = ratingKey, - IncludeElements = includeElements, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/children", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getMetadataChildren", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMetadataChildrenResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetMetadataChildrenResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetMetadataChildrenResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMetadataChildrenBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetMetadataChildrenBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetMetadataChildrenBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMetadataChildrenUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetMetadataChildrenUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetMetadataChildrenUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetTopWatchedContentAsync(GetTopWatchedContentQueryParamType type, GetTopWatchedContentQueryParamIncludeGuids? includeGuids = LukeHagar.PlexAPI.SDK.Models.Requests.GetTopWatchedContentQueryParamIncludeGuids.Disable) - { - var request = new GetTopWatchedContentRequest() - { - Type = type, - IncludeGuids = includeGuids, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/all/top", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getTopWatchedContent", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTopWatchedContentResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTopWatchedContentResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetTopWatchedContentResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTopWatchedContentBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTopWatchedContentBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetTopWatchedContentBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTopWatchedContentUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTopWatchedContentUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetTopWatchedContentUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/LibraryCollections.cs b/LukeHagar/PlexAPI/SDK/LibraryCollections.cs new file mode 100644 index 0000000..8795af2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/LibraryCollections.cs @@ -0,0 +1,390 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// Endpoints for manipulating collections. In addition to these endpoints, `/library/collections/:collectionId/X` will be rerouted to `/library/metadata/:collectionId/X` and respond to those endpoints as well. + /// + public interface ILibraryCollections + { + + /// + /// Add items to a collection + /// + /// + /// Add items to a collection by uri + /// + /// + Task AddCollectionItemsAsync(AddCollectionItemsRequest request); + + /// + /// Delete an item from a collection + /// + /// + /// Delete an item from a collection + /// + /// + Task DeleteCollectionItemAsync(DeleteCollectionItemRequest request); + + /// + /// Reorder an item in the collection + /// + /// + /// Reorder items in a collection with one item after another + /// + /// + Task MoveCollectionItemAsync(MoveCollectionItemRequest request); + } + + /// + /// Endpoints for manipulating collections. In addition to these endpoints, `/library/collections/:collectionId/X` will be rerouted to `/library/metadata/:collectionId/X` and respond to those endpoints as well. + /// + public class LibraryCollections: ILibraryCollections + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public LibraryCollections(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task AddCollectionItemsAsync(AddCollectionItemsRequest request) + { + if (request == null) + { + request = new AddCollectionItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/items", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "addCollectionItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new AddCollectionItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteCollectionItemAsync(DeleteCollectionItemRequest request) + { + if (request == null) + { + request = new DeleteCollectionItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/items/{itemId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteCollectionItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new DeleteCollectionItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task MoveCollectionItemAsync(MoveCollectionItemRequest request) + { + if (request == null) + { + request = new MoveCollectionItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/library/collections/{collectionId}/items/{itemId}/move", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "moveCollectionItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new MoveCollectionItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/LibraryPlaylists.cs b/LukeHagar/PlexAPI/SDK/LibraryPlaylists.cs new file mode 100644 index 0000000..850b7ff --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/LibraryPlaylists.cs @@ -0,0 +1,1336 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// Endpoints for manipulating playlists. + /// + public interface ILibraryPlaylists + { + + /// + /// Create a Playlist + /// + /// + /// Create a new playlist. By default the playlist is blank. + /// + /// + Task CreatePlaylistAsync(CreatePlaylistRequest? request = null); + + /// + /// Upload + /// + /// + /// Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file. + /// + /// + Task UploadPlaylistAsync(UploadPlaylistRequest? request = null); + + /// + /// Delete a Playlist + /// + /// + /// Deletes a playlist by provided id + /// + /// + Task DeletePlaylistAsync(DeletePlaylistRequest request); + + /// + /// Editing a Playlist + /// + /// + /// Edits a playlist in the same manner as editing metadata + /// + /// + Task UpdatePlaylistAsync(UpdatePlaylistRequest request); + + /// + /// Get a playlist's generators + /// + /// + /// Get all the generators in a playlist + /// + /// + Task GetPlaylistGeneratorsAsync(GetPlaylistGeneratorsRequest request); + + /// + /// Clearing a playlist + /// + /// + /// Clears a playlist, only works with dumb playlists. Returns the playlist. + /// + /// + Task ClearPlaylistItemsAsync(ClearPlaylistItemsRequest request); + + /// + /// 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 AddPlaylistItemsAsync(AddPlaylistItemsRequest request); + + /// + /// Delete a Generator + /// + /// + /// Deletes an item from a playlist. Only works with dumb playlists. + /// + /// + Task DeletePlaylistItemAsync(DeletePlaylistItemRequest request); + + /// + /// Get a playlist generator + /// + /// + /// Get a playlist's generator. Only used for optimized versions + /// + /// + Task GetPlaylistGeneratorAsync(GetPlaylistGeneratorRequest request); + + /// + /// Get a playlist generator's items + /// + /// + /// Get a playlist generator's items + /// + /// + Task GetPlaylistGeneratorItemsAsync(GetPlaylistGeneratorItemsRequest request); + + /// + /// Moving items in a playlist + /// + /// + /// Moves an item in a playlist. Only works with dumb playlists. + /// + /// + Task MovePlaylistItemAsync(MovePlaylistItemRequest request); + + /// + /// Reprocess a generator + /// + /// + /// Make a generator reprocess (refresh) + /// + /// + Task RefreshPlaylistAsync(RefreshPlaylistRequest request); + } + + /// + /// Endpoints for manipulating playlists. + /// + public class LibraryPlaylists: ILibraryPlaylists + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public LibraryPlaylists(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task CreatePlaylistAsync(CreatePlaylistRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "createPlaylist", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new CreatePlaylistResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task UploadPlaylistAsync(UploadPlaylistRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/upload", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "uploadPlaylist", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode == 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new UploadPlaylistResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500 || responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeletePlaylistAsync(DeletePlaylistRequest request) + { + if (request == null) + { + request = new DeletePlaylistRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deletePlaylist", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 204) + { + return new DeletePlaylistResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task UpdatePlaylistAsync(UpdatePlaylistRequest request) + { + if (request == null) + { + request = new UpdatePlaylistRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "updatePlaylist", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 204) + { + return new UpdatePlaylistResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetPlaylistGeneratorsAsync(GetPlaylistGeneratorsRequest request) + { + if (request == null) + { + request = new GetPlaylistGeneratorsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/generators", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPlaylistGenerators", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetPlaylistGeneratorsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetPlaylistGeneratorsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetPlaylistGeneratorsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ClearPlaylistItemsAsync(ClearPlaylistItemsRequest request) + { + if (request == null) + { + request = new ClearPlaylistItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "clearPlaylistItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new ClearPlaylistItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task AddPlaylistItemsAsync(AddPlaylistItemsRequest request) + { + if (request == null) + { + request = new AddPlaylistItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "addPlaylistItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new AddPlaylistItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeletePlaylistItemAsync(DeletePlaylistItemRequest request) + { + if (request == null) + { + request = new DeletePlaylistItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{generatorId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deletePlaylistItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new DeletePlaylistItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetPlaylistGeneratorAsync(GetPlaylistGeneratorRequest request) + { + if (request == null) + { + request = new GetPlaylistGeneratorRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{generatorId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPlaylistGenerator", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetPlaylistGeneratorResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetPlaylistGeneratorResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetPlaylistGeneratorResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetPlaylistGeneratorItemsAsync(GetPlaylistGeneratorItemsRequest request) + { + if (request == null) + { + request = new GetPlaylistGeneratorItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{generatorId}/items", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPlaylistGeneratorItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetPlaylistGeneratorItemsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetPlaylistGeneratorItemsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetPlaylistGeneratorItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task MovePlaylistItemAsync(MovePlaylistItemRequest request) + { + if (request == null) + { + request = new MovePlaylistItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{playlistItemId}/move", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "movePlaylistItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new MovePlaylistItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task RefreshPlaylistAsync(RefreshPlaylistRequest request) + { + if (request == null) + { + request = new RefreshPlaylistRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items/{generatorId}/{metadataId}/{action}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "refreshPlaylist", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new RefreshPlaylistResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/LiveTV.cs b/LukeHagar/PlexAPI/SDK/LiveTV.cs new file mode 100644 index 0000000..3746cf9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/LiveTV.cs @@ -0,0 +1,460 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// LiveTV contains the playback sessions of a channel from a DVR device
+ /// + /// + /// + /// + ///
+ public interface ILiveTV + { + + /// + /// Get all sessions + /// + /// + /// Get all livetv sessions and metadata + /// + /// + Task GetSessionsAsync(); + + /// + /// Get a single session + /// + /// + /// Get a single livetv session and metadata + /// + /// + Task GetLiveTVSessionAsync(GetLiveTVSessionRequest request); + + /// + /// Get a session playlist index + /// + /// + /// Get a playlist index for playing this session + /// + /// + Task GetSessionPlaylistIndexAsync(GetSessionPlaylistIndexRequest request); + + /// + /// Get a single session segment + /// + /// + /// Get a single LiveTV session segment + /// + /// + Task GetSessionSegmentAsync(GetSessionSegmentRequest request); + } + + /// + /// LiveTV contains the playback sessions of a channel from a DVR device
+ /// + /// + /// + /// + ///
+ public class LiveTV: ILiveTV + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public LiveTV(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task GetSessionsAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/livetv/sessions"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSessions", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetSessionsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetLiveTVSessionAsync(GetLiveTVSessionRequest request) + { + if (request == null) + { + request = new GetLiveTVSessionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/sessions/{sessionId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getLiveTVSession", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetLiveTVSessionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetSessionPlaylistIndexAsync(GetSessionPlaylistIndexRequest request) + { + if (request == null) + { + request = new GetSessionPlaylistIndexRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/sessions/{sessionId}/{consumerId}/index.m3u8", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSessionPlaylistIndex", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new GetSessionPlaylistIndexResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetSessionSegmentAsync(GetSessionSegmentRequest request) + { + if (request == null) + { + request = new GetSessionSegmentRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/livetv/sessions/{sessionId}/{consumerId}/{segmentId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSessionSegment", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new GetSessionSegmentResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Log.cs b/LukeHagar/PlexAPI/SDK/Log.cs index 854cfc5..3247561 100644 --- a/LukeHagar/PlexAPI/SDK/Log.cs +++ b/LukeHagar/PlexAPI/SDK/Log.cs @@ -15,215 +15,70 @@ namespace LukeHagar.PlexAPI.SDK using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; using LukeHagar.PlexAPI.SDK.Utils.Retries; - using Newtonsoft.Json; using System; - using System.Collections.Concurrent; using System.Collections.Generic; - using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; /// - /// Submit logs to the Log Handler for Plex Media Server
- /// - /// - /// - /// + /// Logging mechanism to allow clients to log to the server ///
public interface ILog { /// - /// Logging a single line message. + /// Logging a multi-line message to the Plex Media Server log + /// + /// + /// This endpoint will write multiple lines to the main Plex Media Server log in a single request. It takes a set of query strings as would normally sent to the above PUT endpoint as a linefeed-separated block of POST data. The parameters for each query string match as above.
+ /// + ///
+ ///
+ Task WriteLogAsync(byte[] request); + + /// + /// Logging a single-line message to the Plex Media Server log /// /// /// This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log.
+ ///
+ /// Note: This endpoint responds to all HTTP verbs **except POST** but PUT is preferred
/// ///
///
- Task LogLineAsync(Level level, string message, string source); - - /// - /// Logging a multi-line message - /// - /// - /// This endpoint allows for the batch addition of log entries to the main Plex Media Server log.
- /// It accepts a text/plain request body, where each line represents a distinct log entry.
- /// Each log entry consists of URL-encoded key-value pairs, specifying log attributes such as 'level', 'message', and 'source'.
- ///
- /// Log entries are separated by a newline character (`\n`).
- /// Each entry's parameters should be URL-encoded to ensure accurate parsing and handling of special characters.
- /// This method is efficient for logging multiple entries in a single API call, reducing the overhead of multiple individual requests.
- ///
- /// The 'level' parameter specifies the log entry's severity or importance, with the following integer values:
- /// - `0`: Error - Critical issues that require immediate attention.
- /// - `1`: Warning - Important events that are not critical but may indicate potential issues.
- /// - `2`: Info - General informational messages about system operation.
- /// - `3`: Debug - Detailed information useful for debugging purposes.
- /// - `4`: Verbose - Highly detailed diagnostic information for in-depth analysis.
- ///
- /// The 'message' parameter contains the log text, and 'source' identifies the log message's origin (e.g., an application name or module).
- ///
- /// Example of a single log entry format:
- /// `level=4&message=Sample%20log%20entry&source=applicationName`
- ///
- /// Ensure each parameter is properly URL-encoded to avoid interpretation issues.
- /// - ///
- ///
- Task LogMultiLineAsync(string request); + Task WriteMessageAsync(WriteMessageRequest? request = null); /// /// Enabling Papertrail /// /// - /// This endpoint will enable all Plex Media Serverlogs to be sent to the Papertrail networked logging site for a period of time.
+ /// This endpoint will enable all Plex Media Server logs to be sent to the Papertrail networked logging site for a period of time
+ ///
+ /// Note: This endpoint responds to all HTTP verbs but POST is preferred
/// ///
///
- Task EnablePaperTrailAsync(); + Task EnablePapertrailAsync(EnablePapertrailRequest? request = null); } /// - /// Submit logs to the Log Handler for Plex Media Server
- /// - /// - /// - /// + /// Logging mechanism to allow clients to log to the server ///
public class Log: ILog { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; public Log(SDKConfig config) { 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.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/log", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "logLine", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new LogLineResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - LogLineBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into LogLineBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new LogLineBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - LogLineUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into LogLineUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new LogLineUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task LogMultiLineAsync(string request) + public async Task WriteLogAsync(byte[] request) { string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); @@ -232,7 +87,7 @@ namespace LukeHagar.PlexAPI.SDK var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - var serializedBody = RequestBodySerializer.Serialize(request, "Request", "string", false, false); + var serializedBody = RequestBodySerializer.Serialize(request, "Request", "raw", false, false); if (serializedBody != null) { httpRequest.Content = serializedBody; @@ -243,7 +98,7 @@ namespace LukeHagar.PlexAPI.SDK httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "logMultiLine", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "writeLog", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -253,7 +108,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -281,54 +136,95 @@ namespace LukeHagar.PlexAPI.SDK int responseStatusCode = (int)httpResponse.StatusCode; if(responseStatusCode == 200) { - return new LogMultiLineResponse() + return new WriteLogResponse() { StatusCode = responseStatusCode, ContentType = contentType, RawResponse = httpResponse }; } - else if(responseStatusCode == 400) + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - LogMultiLineBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into LogMultiLineBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new LogMultiLineBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 401) + else if(responseStatusCode >= 500 && responseStatusCode < 600) { - if(Utilities.IsContentTypeMatch("application/json", contentType)) + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task WriteMessageAsync(WriteMessageRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/log", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "writeMessage", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - LogMultiLineUnauthorizedPayload payload; - try + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + httpResponse = _httpResponse; } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into LogMultiLineUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new LogMultiLineUnauthorized(payload, httpResponse, httpResponseBody); } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new WriteMessageResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; } else if(responseStatusCode >= 400 && responseStatusCode < 500) { @@ -342,21 +238,33 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - public async Task EnablePaperTrailAsync() + public async Task EnablePapertrailAsync(EnablePapertrailRequest? request = null) { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/log/networked", request); - var urlString = baseUrl + "/log/networked"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "enablePaperTrail", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "enablePapertrail", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -366,7 +274,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -394,55 +302,13 @@ namespace LukeHagar.PlexAPI.SDK int responseStatusCode = (int)httpResponse.StatusCode; if(responseStatusCode == 200) { - return new EnablePaperTrailResponse() + return new EnablePapertrailResponse() { StatusCode = responseStatusCode, ContentType = contentType, RawResponse = httpResponse }; } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - EnablePaperTrailBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into EnablePaperTrailBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new EnablePaperTrailBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - EnablePaperTrailUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into EnablePaperTrailUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new EnablePaperTrailUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } else if(responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); diff --git a/LukeHagar/PlexAPI/SDK/LukeHagar.PlexAPI.SDK.csproj b/LukeHagar/PlexAPI/SDK/LukeHagar.PlexAPI.SDK.csproj index 9fc435f..5b1333b 100644 --- a/LukeHagar/PlexAPI/SDK/LukeHagar.PlexAPI.SDK.csproj +++ b/LukeHagar/PlexAPI/SDK/LukeHagar.PlexAPI.SDK.csproj @@ -3,38 +3,13 @@ true LukeHagar.PlexAPI.SDK - 0.17.0 + 0.18.0 net8.0 LukeHagar Copyright (c) LukeHagar 2025 https://github.com/LukeHagar/plexcsharp.git git Plex Media Server SDK - # Plex Media Server OpenAPI Specification
-
-An Open Source OpenAPI Specification for Plex Media Server
-
-Automation and SDKs provided by Speakeasy
-
-## Documentation
-
-API Documentation
-
-## SDKs
-
-The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the main specification Repository.
-
-| Language | Repository | Releases | Other |
-| --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- |
-| Python | GitHub | PyPI | - |
-| JavaScript/TypeScript | GitHub | NPM \ JSR | - |
-| Go | GitHub | Releases | GoDoc |
-| Ruby | GitHub | Releases | - |
-| Swift | GitHub | Releases | - |
-| PHP | GitHub | Releases | - |
-| Java | GitHub | Releases | - |
-| C# | GitHub | Releases | -
-
diff --git a/LukeHagar/PlexAPI/SDK/Media.cs b/LukeHagar/PlexAPI/SDK/Media.cs deleted file mode 100644 index 086b790..0000000 --- a/LukeHagar/PlexAPI/SDK/Media.cs +++ /dev/null @@ -1,692 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK -{ - using LukeHagar.PlexAPI.SDK.Hooks; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using LukeHagar.PlexAPI.SDK.Utils.Retries; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - using System.Net.Http.Headers; - using System.Threading.Tasks; - - /// - /// 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); - - /// - /// Get Banner Image - /// - /// - /// Gets the banner image of the media item - /// - /// - Task GetBannerImageAsync(GetBannerImageRequest request); - - /// - /// Get Thumb Image - /// - /// - /// Gets the thumbnail image of the media item - /// - /// - Task GetThumbImageAsync(GetThumbImageRequest request); - } - - /// - /// 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.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; - - public Media(SDKConfig config) - { - SDKConfiguration = config; - } - - public async Task MarkPlayedAsync(double key) - { - var request = new MarkPlayedRequest() - { - Key = key, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/:/scrobble", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "markPlayed", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new MarkPlayedResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - MarkPlayedBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into MarkPlayedBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new MarkPlayedBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - MarkPlayedUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into MarkPlayedUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new MarkPlayedUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task MarkUnplayedAsync(double key) - { - var request = new MarkUnplayedRequest() - { - Key = key, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/:/unscrobble", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "markUnplayed", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new MarkUnplayedResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - MarkUnplayedBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into MarkUnplayedBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new MarkUnplayedBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - MarkUnplayedUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into MarkUnplayedUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new MarkUnplayedUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task UpdatePlayProgressAsync(string key, double time, string state) - { - var request = new UpdatePlayProgressRequest() - { - Key = key, - Time = time, - State = state, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/:/progress", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "updatePlayProgress", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new UpdatePlayProgressResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - UpdatePlayProgressBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into UpdatePlayProgressBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new UpdatePlayProgressBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - UpdatePlayProgressUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into UpdatePlayProgressUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new UpdatePlayProgressUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetBannerImageAsync(GetBannerImageRequest request) - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/banner", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - HeaderSerializer.PopulateHeaders(ref httpRequest, request); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-banner-image", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("image/jpeg", contentType)) - { - var response = new GetBannerImageResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetBannerImageBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetBannerImageBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetBannerImageBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetBannerImageUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetBannerImageUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetBannerImageUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetThumbImageAsync(GetThumbImageRequest request) - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/thumb", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - HeaderSerializer.PopulateHeaders(ref httpRequest, request); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-thumb-image", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("image/jpeg", contentType)) - { - var response = new GetThumbImageResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetThumbImageBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetThumbImageBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetThumbImageBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetThumbImageUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetThumbImageUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetThumbImageUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Accepts.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Accepts.cs new file mode 100644 index 0000000..1d7e5b1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Accepts.cs @@ -0,0 +1,57 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum Accepts + { + [JsonProperty("application/json")] + ApplicationJson, + [JsonProperty("application/xml")] + ApplicationXml, + } + + public static class AcceptsExtension + { + public static string Value(this Accepts value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Accepts ToEnum(this string value) + { + foreach(var field in typeof(Accepts).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 Accepts) + { + return (Accepts)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Accepts"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/AdvancedSubtitles.cs b/LukeHagar/PlexAPI/SDK/Models/Components/AdvancedSubtitles.cs new file mode 100644 index 0000000..2e9c613 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/AdvancedSubtitles.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum AdvancedSubtitles + { + [JsonProperty("burn")] + Burn, + [JsonProperty("text")] + Text, + [JsonProperty("unknown")] + Unknown, + } + + public static class AdvancedSubtitlesExtension + { + public static string Value(this AdvancedSubtitles value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static AdvancedSubtitles ToEnum(this string value) + { + foreach(var field in typeof(AdvancedSubtitles).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 AdvancedSubtitles) + { + return (AdvancedSubtitles)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum AdvancedSubtitles"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/AiringsType.cs b/LukeHagar/PlexAPI/SDK/Models/Components/AiringsType.cs new file mode 100644 index 0000000..efd2875 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/AiringsType.cs @@ -0,0 +1,57 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum AiringsType + { + [JsonProperty("New Airings Only")] + NewAiringsOnly, + [JsonProperty("New and Repeat Airings")] + NewAndRepeatAirings, + } + + public static class AiringsTypeExtension + { + public static string Value(this AiringsType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static AiringsType ToEnum(this string value) + { + foreach(var field in typeof(AiringsType).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 AiringsType) + { + return (AiringsType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum AiringsType"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/BoolInt.cs b/LukeHagar/PlexAPI/SDK/Models/Components/BoolInt.cs new file mode 100644 index 0000000..b5954f2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/BoolInt.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + + public enum BoolInt + { + Zero = 0, + One = 1, + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Channel.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Channel.cs new file mode 100644 index 0000000..a565b9f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Channel.cs @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class Channel + { + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("callSign")] + public string? CallSign { get; set; } + + [JsonProperty("channelVcn")] + public string? ChannelVcn { get; set; } + + [JsonProperty("hd")] + public bool? Hd { get; set; } + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("language")] + public string? Language { get; set; } + + [JsonProperty("thumb")] + public string? Thumb { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/ChannelMapping.cs b/LukeHagar/PlexAPI/SDK/Models/Components/ChannelMapping.cs new file mode 100644 index 0000000..ce0b4bc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/ChannelMapping.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class ChannelMapping + { + + [JsonProperty("channelKey")] + public string? ChannelKey { get; set; } + + [JsonProperty("deviceIdentifier")] + public string? DeviceIdentifier { get; set; } + + [JsonProperty("enabled")] + public string? Enabled { get; set; } + + [JsonProperty("lineupIdentifier")] + public string? LineupIdentifier { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Composite.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Composite.cs new file mode 100644 index 0000000..eae380d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Composite.cs @@ -0,0 +1,84 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class Composite + { + + /// + /// Limit composite to specified metadata types + /// + [SpeakeasyMetadata("queryParam:name=type")] + public long? Type { get; set; } + + /// + /// The image type + /// + [SpeakeasyMetadata("queryParam:name=format")] + public Models.Components.Format? Format { get; set; } + + /// + /// 6 character hex RGB value for background color for image + /// + [SpeakeasyMetadata("queryParam:name=backgroundColor")] + public string? BackgroundColor { get; set; } + + /// + /// The width of the intra-image border + /// + [SpeakeasyMetadata("queryParam:name=border")] + public long? Border { get; set; } + + /// + /// Number of columns to construct in the composite image + /// + [SpeakeasyMetadata("queryParam:name=cols")] + public long? Cols { get; set; } + + /// + /// Where to crop source images to fit into composite image proportions + /// + [SpeakeasyMetadata("queryParam:name=crop")] + public Crop? Crop { get; set; } + + /// + /// The height of the image + /// + [SpeakeasyMetadata("queryParam:name=height")] + public long? Height { get; set; } + + /// + /// The default image type to use as the sources + /// + [SpeakeasyMetadata("queryParam:name=media")] + public CompositeMedia? Media { get; set; } + + /// + /// Allow repetion of images if there are not enough source images to fill grid + /// + [SpeakeasyMetadata("queryParam:name=repeat")] + public bool? Repeat { get; set; } + + /// + /// Number of rows to construct in the composite image + /// + [SpeakeasyMetadata("queryParam:name=rows")] + public long? Rows { get; set; } + + /// + /// The width of the image + /// + [SpeakeasyMetadata("queryParam:name=width")] + public long? Width { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/CompositeMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Components/CompositeMedia.cs new file mode 100644 index 0000000..5a2b495 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/CompositeMedia.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The default image type to use as the sources + /// + public enum CompositeMedia + { + [JsonProperty("thumb")] + Thumb, + [JsonProperty("art")] + Art, + [JsonProperty("banner")] + Banner, + } + + public static class CompositeMediaExtension + { + public static string Value(this CompositeMedia value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static CompositeMedia ToEnum(this string value) + { + foreach(var field in typeof(CompositeMedia).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 CompositeMedia) + { + return (CompositeMedia)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum CompositeMedia"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Crop.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Crop.cs new file mode 100644 index 0000000..bc13a13 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Crop.cs @@ -0,0 +1,60 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// Where to crop source images to fit into composite image proportions + /// + public enum Crop + { + [JsonProperty("center")] + Center, + [JsonProperty("top")] + Top, + } + + public static class CropExtension + { + public static string Value(this Crop value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Crop ToEnum(this string value) + { + foreach(var field in typeof(Crop).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 Crop) + { + return (Crop)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Crop"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Decision.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Decision.cs new file mode 100644 index 0000000..57330f3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Decision.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum Decision + { + [JsonProperty("directplay")] + Directplay, + [JsonProperty("transcode")] + Transcode, + [JsonProperty("none")] + None, + } + + public static class DecisionExtension + { + public static string Value(this Decision value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Decision ToEnum(this string value) + { + foreach(var field in typeof(Decision).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 Decision) + { + return (Decision)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Decision"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Default.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Default.cs new file mode 100644 index 0000000..ac166c1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Default.cs @@ -0,0 +1,207 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + using System; + using System.Collections.Generic; + using System.Numerics; + using System.Reflection; + + public class DefaultType + { + private DefaultType(string value) { Value = value; } + + public string Value { get; private set; } + + public static DefaultType Str { get { return new DefaultType("str"); } } + + public static DefaultType Number { get { return new DefaultType("number"); } } + + public static DefaultType Boolean { get { return new DefaultType("boolean"); } } + + public override string ToString() { return Value; } + public static implicit operator String(DefaultType v) { return v.Value; } + public static DefaultType FromString(string v) { + switch(v) { + case "str": return Str; + case "number": return Number; + case "boolean": return Boolean; + default: throw new ArgumentException("Invalid value for DefaultType"); + } + } + public override bool Equals(object? obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + return Value.Equals(((DefaultType)obj).Value); + } + + public override int GetHashCode() + { + return Value.GetHashCode(); + } + } + + + /// + /// The default value of this setting + /// + [JsonConverter(typeof(Default.DefaultConverter))] + public class Default + { + public Default(DefaultType type) + { + Type = type; + } + + [SpeakeasyMetadata("form:explode=true")] + public string? Str { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public double? Number { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public bool? Boolean { get; set; } + + public DefaultType Type { get; set; } + public static Default CreateStr(string str) + { + DefaultType typ = DefaultType.Str; + + Default res = new Default(typ); + res.Str = str; + return res; + } + public static Default CreateNumber(double number) + { + DefaultType typ = DefaultType.Number; + + Default res = new Default(typ); + res.Number = number; + return res; + } + public static Default CreateBoolean(bool boolean) + { + DefaultType typ = DefaultType.Boolean; + + Default res = new Default(typ); + res.Boolean = boolean; + return res; + } + + public class DefaultConverter : JsonConverter + { + public override bool CanConvert(System.Type objectType) => objectType == typeof(Default); + + public override bool CanRead => true; + + public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + { + throw new InvalidOperationException("Received unexpected null JSON value"); + } + + var json = JRaw.Create(reader).ToString(); + var fallbackCandidates = new List<(System.Type, object, string)>(); + + if (json[0] == '"' && json[^1] == '"'){ + return new Default(DefaultType.Str) + { + Str = json[1..^1] + }; + } + + try + { + var converted = Convert.ToDouble(json); + return new Default(DefaultType.Number) + { + Number = converted + }; + } + catch (System.FormatException) + { + // try next option + } + + try + { + var converted = Convert.ToBoolean(json); + return new Default(DefaultType.Boolean) + { + Boolean = converted + }; + } + catch (System.FormatException) + { + // try next option + } + + if (fallbackCandidates.Count > 0) + { + fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); + foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) + { + try + { + return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next fallback option + } + catch (Exception) + { + throw; + } + } + } + + throw new InvalidOperationException("Could not deserialize into any supported types."); + } + + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) + { + if (value == null) + { + throw new InvalidOperationException("Unexpected null JSON value."); + } + + Default res = (Default)value; + + if (res.Str != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Str)); + return; + } + + if (res.Number != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Number)); + return; + } + + if (res.Boolean != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); + return; + } + } + + } + + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DefaultDirection.cs b/LukeHagar/PlexAPI/SDK/Models/Components/DefaultDirection.cs similarity index 89% rename from LukeHagar/PlexAPI/SDK/Models/Requests/DefaultDirection.cs rename to LukeHagar/PlexAPI/SDK/Models/Components/DefaultDirection.cs index 6baaf98..c81a30a 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/DefaultDirection.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Components/DefaultDirection.cs @@ -7,25 +7,21 @@ // //------------------------------------------------------------------------------ #nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests +namespace LukeHagar.PlexAPI.SDK.Models.Components { using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; using System; /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// + /// This default diction of this sort ///
public enum DefaultDirection { [JsonProperty("asc")] - Ascending, + Asc, [JsonProperty("desc")] - Descending, + Desc, } public static class DefaultDirectionExtension diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Device.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Device.cs new file mode 100644 index 0000000..f5ad9c2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Device.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class Device + { + + [JsonProperty("ChannelMapping")] + public List? ChannelMapping { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("lastSeenAt")] + public long? LastSeenAt { get; set; } + + [JsonProperty("make")] + public string? Make { get; set; } + + [JsonProperty("model")] + public string? Model { get; set; } + + [JsonProperty("modelNumber")] + public string? ModelNumber { get; set; } + + [JsonProperty("protocol")] + public string? Protocol { get; set; } + + [JsonProperty("sources")] + public string? Sources { get; set; } + + [JsonProperty("state")] + public string? State { get; set; } + + [JsonProperty("status")] + public string? Status { get; set; } + + [JsonProperty("tuners")] + public string? Tuners { get; set; } + + [JsonProperty("uri")] + public string? Uri { get; set; } + + [JsonProperty("uuid")] + public string? Uuid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Directory.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Directory.cs new file mode 100644 index 0000000..3dd39ce --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Directory.cs @@ -0,0 +1,68 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class Directory + { + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("type")] + public string? Type { get; set; } + + [JsonProperty("art")] + public string? Art { get; set; } + + [JsonProperty("content")] + public bool? Content { get; set; } + + [JsonProperty("filter")] + public string? Filter { get; set; } + + [JsonProperty("hasPrefs")] + public bool? HasPrefs { get; set; } + + [JsonProperty("hasStoreServices")] + public bool? HasStoreServices { get; set; } + + [JsonProperty("hubKey")] + public string? HubKey { get; set; } + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("lastAccessedAt")] + public long? LastAccessedAt { get; set; } + + [JsonProperty("Pivot")] + public List? Pivot { get; set; } + + [JsonProperty("share")] + public long? Share { get; set; } + + [JsonProperty("thumb")] + public string? Thumb { get; set; } + + [JsonProperty("titleBar")] + public string? TitleBar { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Dvr.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Dvr.cs new file mode 100644 index 0000000..0fe05e5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Dvr.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class Dvr + { + + [JsonProperty("Device")] + public List? Device { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("language")] + public string? Language { get; set; } + + [JsonProperty("lineup")] + public string? Lineup { get; set; } + + [JsonProperty("uuid")] + public string? Uuid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200.cs b/LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200.cs new file mode 100644 index 0000000..b8f1860 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class DvrRequestHandlerSlashGetResponses200 + { + + [JsonProperty("MediaContainer")] + public DvrRequestHandlerSlashGetResponses200MediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainer.cs new file mode 100644 index 0000000..2ee8a0e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class DvrRequestHandlerSlashGetResponses200MediaContainer + { + + [JsonProperty("MediaContainer")] + public DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer? MediaContainer { get; set; } + + [JsonProperty("DVR")] + public List? Dvr { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer.cs new file mode 100644 index 0000000..f7abbe5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + /// + /// A status indicator. If present and non-zero, indicates an error + /// + [JsonProperty("status")] + public long? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Filter.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Filter.cs new file mode 100644 index 0000000..df5dba3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Filter.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Each `Filter` object contains a description of the filter. Note that it is not an exhaustive list of the full media query language, but an important subset useful for top-level API.
+ /// + /// + /// + /// + ///
+ public class Filter + { + + /// + /// The title for the filter. + /// + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("type")] + public string? Type { get; set; } + + [JsonProperty("art")] + public string? Art { get; set; } + + [JsonProperty("content")] + public bool? Content { get; set; } + + /// + /// This represents the filter name used for the filter, which can be used to construct complex media queries with. + /// + [JsonProperty("filter")] + public string? FilterValue { get; set; } + + [JsonProperty("hasPrefs")] + public bool? HasPrefs { get; set; } + + [JsonProperty("hasStoreServices")] + public bool? HasStoreServices { get; set; } + + [JsonProperty("hubKey")] + public string? HubKey { get; set; } + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// 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. + /// + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("lastAccessedAt")] + public long? LastAccessedAt { get; set; } + + [JsonProperty("Pivot")] + public List? Pivot { get; set; } + + [JsonProperty("share")] + public long? Share { get; set; } + + [JsonProperty("thumb")] + public string? Thumb { get; set; } + + [JsonProperty("titleBar")] + public string? TitleBar { get; set; } + + /// + /// This is either `string`, `integer`, or `boolean`, and describes the type of values used for the filter. + /// + [JsonProperty("filterType")] + public string? FilterType { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/FilterPivot.cs b/LukeHagar/PlexAPI/SDK/Models/Components/FilterPivot.cs new file mode 100644 index 0000000..c00fe9f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/FilterPivot.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class FilterPivot + { + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("type")] + public string? Type { get; set; } + + [JsonProperty("context")] + public string? Context { get; set; } + + [JsonProperty("id")] + public string? Id { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("symbol")] + public string? Symbol { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Format.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Format.cs new file mode 100644 index 0000000..317730c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Format.cs @@ -0,0 +1,60 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The image type + /// + public enum Format + { + [JsonProperty("jpg")] + Jpg, + [JsonProperty("png")] + Png, + } + + public static class FormatExtension + { + public static string Value(this Format value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Format ToEnum(this string value) + { + foreach(var field in typeof(Format).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 Format) + { + return (Format)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Format"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200.cs b/LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200.cs new file mode 100644 index 0000000..161111c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetResponses200 + { + + [JsonProperty("MediaContainer")] + public GetResponses200MediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200Hub.cs b/LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200Hub.cs new file mode 100644 index 0000000..82dbed6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200Hub.cs @@ -0,0 +1,77 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetResponses200Hub + { + + /// + /// Whether this hub is visible on the home screen
+ /// + /// + /// - all: Visible to all users
+ /// - none: Visible to no users
+ /// - admin: Visible to only admin users
+ /// - shared: Visible to shared users
+ /// + ///
+ ///
+ [JsonProperty("homeVisibility")] + public Models.Components.HomeVisibility? HomeVisibility { get; set; } + + /// + /// The identifier for this hub + /// + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// Whether this hub is visible to admin user home + /// + [JsonProperty("promotedToOwnHome")] + public bool? PromotedToOwnHome { get; set; } + + /// + /// Whether this hub is promoted to all for recommendations + /// + [JsonProperty("promotedToRecommended")] + public bool? PromotedToRecommended { get; set; } + + /// + /// Whether this hub is visible to shared user's home + /// + [JsonProperty("promotedToSharedHome")] + public bool? PromotedToSharedHome { get; set; } + + /// + /// The visibility of this hub in recommendations:
+ /// + /// + /// - all: Visible to all users
+ /// - none: Visible to no users
+ /// - admin: Visible to only admin users
+ /// - shared: Visible to shared users
+ /// + ///
+ ///
+ [JsonProperty("recommendationsVisibility")] + public Models.Components.RecommendationsVisibility? RecommendationsVisibility { get; set; } + + /// + /// The title of this hub + /// + [JsonProperty("title")] + public string? Title { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200MediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200MediaContainer.cs new file mode 100644 index 0000000..d1b7e52 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/GetResponses200MediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetResponses200MediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Hub")] + public List? Hub { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200.cs b/LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200.cs new file mode 100644 index 0000000..0e3ca3e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class HistoryAllGetResponses200 + { + + [JsonProperty("MediaContainer")] + public HistoryAllGetResponses200MediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200MediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200MediaContainer.cs new file mode 100644 index 0000000..dc1c31c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200MediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class HistoryAllGetResponses200MediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Metadata")] + public List? Metadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200Metadata.cs b/LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200Metadata.cs new file mode 100644 index 0000000..34644c3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/HistoryAllGetResponses200Metadata.cs @@ -0,0 +1,84 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class HistoryAllGetResponses200Metadata + { + + /// + /// The account id of this playback + /// + [JsonProperty("accountID")] + public long? AccountID { get; set; } + + /// + /// The device id which played the item + /// + [JsonProperty("deviceID")] + public long? DeviceID { get; set; } + + /// + /// The key for this individual history item + /// + [JsonProperty("historyKey")] + public string? HistoryKey { get; set; } + + /// + /// The metadata key for the item played + /// + [JsonProperty("key")] + public string? Key { get; set; } + + /// + /// The library section id containing the item played + /// + [JsonProperty("librarySectionID")] + public string? LibrarySectionID { get; set; } + + /// + /// The originally available at of the item played + /// + [JsonProperty("originallyAvailableAt")] + public string? OriginallyAvailableAt { get; set; } + + /// + /// The rating key for the item played + /// + [JsonProperty("ratingKey")] + public string? RatingKey { get; set; } + + /// + /// The thumb of the item played + /// + [JsonProperty("thumb")] + public string? Thumb { get; set; } + + /// + /// The title of the item played + /// + [JsonProperty("title")] + public string? Title { get; set; } + + /// + /// The metadata type of the item played + /// + [JsonProperty("type")] + public string? Type { get; set; } + + /// + /// The time when the item was played + /// + [JsonProperty("viewedAt")] + public long? ViewedAt { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/HomeVisibility.cs b/LukeHagar/PlexAPI/SDK/Models/Components/HomeVisibility.cs new file mode 100644 index 0000000..cae953f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/HomeVisibility.cs @@ -0,0 +1,72 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// Whether this hub is visible on the home screen
+ /// + /// + /// - all: Visible to all users
+ /// - none: Visible to no users
+ /// - admin: Visible to only admin users
+ /// - shared: Visible to shared users
+ /// + ///
+ ///
+ public enum HomeVisibility + { + [JsonProperty("all")] + All, + [JsonProperty("none")] + None, + [JsonProperty("admin")] + Admin, + [JsonProperty("shared")] + Shared, + } + + public static class HomeVisibilityExtension + { + public static string Value(this HomeVisibility value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static HomeVisibility ToEnum(this string value) + { + foreach(var field in typeof(HomeVisibility).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 HomeVisibility) + { + return (HomeVisibility)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum HomeVisibility"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Hub.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Hub.cs new file mode 100644 index 0000000..526f53c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Hub.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class Hub + { + + /// + /// A title for this grouping of content + /// + [JsonProperty("title")] + public string? Title { get; set; } + + /// + /// The type of the items contained in this hub, or possibly `mixed` if there are multiple types + /// + [JsonProperty("type")] + public string? Type { get; set; } + + [JsonProperty("context")] + public string? Context { get; set; } + + /// + /// A unique identifier for the hub + /// + [JsonProperty("hubIdentifier")] + public string? HubIdentifier { get; set; } + + /// + /// A key at which the exact content currently displayed can be fetched again. This is particularly important when a hub is marked as random and requesting the `key` may get different results. It's otherwise optional.
+ /// + /// + /// + /// + ///
+ [JsonProperty("hubKey")] + public string? HubKey { get; set; } + + /// + /// The key at which all of the content for this hub can be retrieved + /// + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("Metadata")] + public List? Metadata { get; set; } + + /// + /// "A boolean indicating that the hub contains more than what's included in the current response."
+ /// + /// + /// + /// + ///
+ [JsonProperty("more")] + public bool? More { get; set; } + + /// + /// Indicating if the hub should be promoted to the user's homescreen + /// + [JsonProperty("promoted")] + public bool? Promoted { get; set; } + + /// + /// Indicating that the contents of the hub may change on each request + /// + [JsonProperty("random")] + public bool? Random { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// A suggestion on how this hub's contents might be displayed by a client. Some examples include `hero`, `list`, `spotlight`, and `upsell` + /// + [JsonProperty("style")] + public string? Style { get; set; } + + /// + /// The subtype of the items contained in this hub, or possibly `mixed` if there are multiple types + /// + [JsonProperty("subtype")] + public string? Subtype { get; set; } + + [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Image.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Image.cs new file mode 100644 index 0000000..cca4a6f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Image.cs @@ -0,0 +1,44 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// Images such as movie posters and background artwork are represented by Image elements.
+ /// + /// + /// + /// + ///
+ public class Image + { + + /// + /// Describes both the purpose and intended presentation of the image. + /// + [JsonProperty("type")] + public ImageType? Type { get; set; } + + /// + /// Title to use for accessibility. + /// + [JsonProperty("alt")] + public string? Alt { get; set; } + + /// + /// The relative path or absolute url for the image. + /// + [JsonProperty("url")] + public string? Url { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/ImageType.cs b/LukeHagar/PlexAPI/SDK/Models/Components/ImageType.cs new file mode 100644 index 0000000..6fac143 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/ImageType.cs @@ -0,0 +1,66 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// Describes both the purpose and intended presentation of the image. + /// + public enum ImageType + { + [JsonProperty("background")] + Background, + [JsonProperty("banner")] + Banner, + [JsonProperty("clearLogo")] + ClearLogo, + [JsonProperty("coverPoster")] + CoverPoster, + [JsonProperty("snapshot")] + Snapshot, + } + + public static class ImageTypeExtension + { + public static string Value(this ImageType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static ImageType ToEnum(this string value) + { + foreach(var field in typeof(ImageType).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 ImageType) + { + return (ImageType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum ImageType"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Items.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Items.cs new file mode 100644 index 0000000..c343114 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Items.cs @@ -0,0 +1,409 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.
+ /// + /// + ///
+ /// Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items.
+ ///
+ /// Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
+ /// + ///
+ ///
+ public class Items + { + + /// + /// The title of the item (e.g. “300” or “The Simpsons”) + /// + [JsonProperty("title")] + public object? Title { get; set; } + + /// + /// The type of the video item, such as `movie`, `episode`, or `clip`. + /// + [JsonProperty("type")] + public object? Type { get; set; } + + /// + /// When present, contains the disc number for a track on multi-disc albums. + /// + [JsonProperty("absoluteIndex")] + public long? AbsoluteIndex { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was added to the library. + /// + [JsonProperty("addedAt")] + public long? AddedAt { get; set; } + + /// + /// When present, the URL for the background artwork for the item. + /// + [JsonProperty("art")] + public object? Art { get; set; } + + /// + /// Some rating systems separate reviewer ratings from audience ratings + /// + [JsonProperty("audienceRating")] + public double? AudienceRating { get; set; } + + /// + /// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). + /// + [JsonProperty("audienceRatingImage")] + public object? AudienceRatingImage { get; set; } + + [JsonProperty("Autotag")] + public List? Autotag { get; set; } + + /// + /// When present, the URL for a banner graphic for the item. + /// + [JsonProperty("banner")] + public object? Banner { get; set; } + + /// + /// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). + /// + [JsonProperty("chapterSource")] + public object? ChapterSource { get; set; } + + /// + /// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). + /// + [JsonProperty("composite")] + public object? Composite { get; set; } + + /// + /// If known, the content rating (e.g. MPAA) for an item. + /// + [JsonProperty("contentRating")] + public object? ContentRating { get; set; } + + [JsonProperty("Country")] + public List? Country { get; set; } + + [JsonProperty("Director")] + public List? Director { get; set; } + + /// + /// When present, the duration for the item, in units of milliseconds. + /// + [JsonProperty("duration")] + public long? Duration { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Filter")] + public List? Filter { get; set; } + + [JsonProperty("Genre")] + public List? Genre { get; set; } + + /// + /// The `art` of the grandparent + /// + [JsonProperty("grandparentArt")] + public string? GrandparentArt { get; set; } + + /// + /// The `hero` of the grandparent + /// + [JsonProperty("grandparentHero")] + public string? GrandparentHero { get; set; } + + /// + /// The `key` of the grandparent + /// + [JsonProperty("grandparentKey")] + public string? GrandparentKey { get; set; } + + /// + /// The `ratingKey` of the grandparent + /// + [JsonProperty("grandparentRatingKey")] + public string? GrandparentRatingKey { get; set; } + + /// + /// The `theme` of the grandparent + /// + [JsonProperty("grandparentTheme")] + public string? GrandparentTheme { get; set; } + + /// + /// The `thumb` of the grandparent + /// + [JsonProperty("grandparentThumb")] + public string? GrandparentThumb { get; set; } + + /// + /// The `title` of the grandparent + /// + [JsonProperty("grandparentTitle")] + public string? GrandparentTitle { get; set; } + + [JsonProperty("Guid")] + public List? Guid { get; set; } + + /// + /// When present, the URL for a hero image for the item. + /// + [JsonProperty("hero")] + public object? Hero { get; set; } + + [JsonProperty("Image")] + public List? Image { get; set; } + + /// + /// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. + /// + [JsonProperty("index")] + public long? Index { get; set; } + + /// + /// The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. + /// + [JsonProperty("key")] + public object? Key { get; set; } + + /// + /// When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. + /// + [JsonProperty("lastViewedAt")] + public long? LastViewedAt { get; set; } + + /// + /// For shows and seasons, contains the number of total episodes. + /// + [JsonProperty("leafCount")] + public long? LeafCount { get; set; } + + [JsonProperty("Media")] + public List? Media { get; set; } + + /// + /// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. + /// + [JsonProperty("originallyAvailableAt")] + public object? OriginallyAvailableAt { get; set; } + + /// + /// When present, used to indicate an item's original title, e.g. a movie's foreign title. + /// + [JsonProperty("originalTitle")] + public object? OriginalTitle { get; set; } + + /// + /// The `hero` of the parent + /// + [JsonProperty("parentHero")] + public string? ParentHero { get; set; } + + /// + /// The `index` of the parent + /// + [JsonProperty("parentIndex")] + public long? ParentIndex { get; set; } + + /// + /// The `key` of the parent + /// + [JsonProperty("parentKey")] + public string? ParentKey { get; set; } + + /// + /// The `ratingKey` of the parent + /// + [JsonProperty("parentRatingKey")] + public string? ParentRatingKey { get; set; } + + /// + /// The `thumb` of the parent + /// + [JsonProperty("parentThumb")] + public string? ParentThumb { get; set; } + + /// + /// The `title` of the parent + /// + [JsonProperty("parentTitle")] + public string? ParentTitle { get; set; } + + /// + /// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. + /// + [JsonProperty("primaryExtraKey")] + public object? PrimaryExtraKey { get; set; } + + /// + /// Prompt to give the user for this directory (such as `Search Movies`) + /// + [JsonProperty("prompt")] + public string? Prompt { get; set; } + + /// + /// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. + /// + [JsonProperty("rating")] + public double? Rating { get; set; } + + [JsonProperty("Rating")] + public List? RatingArray { get; set; } + + /// + /// Number of ratings under this metadata + /// + [JsonProperty("ratingCount")] + public long? RatingCount { get; set; } + + /// + /// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. + /// + [JsonProperty("ratingImage")] + public object? RatingImage { get; set; } + + /// + /// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. + /// + [JsonProperty("ratingKey")] + public object? RatingKey { get; set; } + + [JsonProperty("Role")] + public List? Role { get; set; } + + /// + /// Indicates this is a search directory + /// + [JsonProperty("search")] + public bool? Search { get; set; } + + /// + /// Used by old clients to provide nested menus allowing for primative (but structured) navigation. + /// + [JsonProperty("secondary")] + public bool? Secondary { get; set; } + + /// + /// When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. + /// + [JsonProperty("skipChildren")] + public bool? SkipChildren { get; set; } + + /// + /// When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). + /// + [JsonProperty("skipParent")] + public bool? SkipParent { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Sort")] + public List? Sort { get; set; } + + /// + /// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). + /// + [JsonProperty("studio")] + public object? Studio { get; set; } + + /// + /// The subtype of the video item, such as `photo` when the video item is in a photo library + /// + [JsonProperty("subtype")] + public object? Subtype { get; set; } + + /// + /// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). + /// + [JsonProperty("summary")] + public object? Summary { get; set; } + + /// + /// When present, a pithy one-liner about the item (usually only seen for movies). + /// + [JsonProperty("tagline")] + public object? Tagline { get; set; } + + /// + /// When present, the URL for theme music for the item (usually only for TV shows). + /// + [JsonProperty("theme")] + public object? Theme { get; set; } + + /// + /// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. + /// + [JsonProperty("thumb")] + public object? Thumb { get; set; } + + /// + /// Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). + /// + [JsonProperty("titleSort")] + public object? TitleSort { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). + /// + [JsonProperty("updatedAt")] + public long? UpdatedAt { get; set; } + + /// + /// When the user has rated an item, this contains the user rating + /// + [JsonProperty("userRating")] + public double? UserRating { get; set; } + + /// + /// When a users has completed watched or listened to an item, this attribute contains the number of consumptions. + /// + [JsonProperty("viewCount")] + public long? ViewCount { get; set; } + + /// + /// For shows and seasons, contains the number of viewed episodes. + /// + [JsonProperty("viewedLeafCount")] + public long? ViewedLeafCount { get; set; } + + /// + /// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. + /// + [JsonProperty("viewOffset")] + public long? ViewOffset { get; set; } + + [JsonProperty("Writer")] + public List? Writer { get; set; } + + /// + /// When present, the year associated with the item's release (e.g. release year for a movie). + /// + [JsonProperty("year")] + public long? Year { get; set; } + + [JsonProperty("MetadataItem")] + public List? MetadataItem { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/LibrarySection.cs b/LukeHagar/PlexAPI/SDK/Models/Components/LibrarySection.cs new file mode 100644 index 0000000..124e9aa --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/LibrarySection.cs @@ -0,0 +1,86 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class LibrarySection + { + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("type")] + public string? Type { get; set; } + + [JsonProperty("agent")] + public string? Agent { get; set; } + + [JsonProperty("allowSync")] + public bool? AllowSync { get; set; } + + [JsonProperty("art")] + public string? Art { get; set; } + + [JsonProperty("composite")] + public string? Composite { get; set; } + + [JsonProperty("content")] + public bool? Content { get; set; } + + [JsonProperty("contentChangedAt")] + public long? ContentChangedAt { get; set; } + + [JsonProperty("createdAt")] + public long? CreatedAt { get; set; } + + [JsonProperty("directory")] + public bool? Directory { get; set; } + + /// + /// Indicates whether this section has filtering capabilities + /// + [JsonProperty("filters")] + public bool? Filters { get; set; } + + [JsonProperty("hidden")] + public bool? Hidden { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("language")] + public string? Language { get; set; } + + [JsonProperty("Location")] + public List? Location { get; set; } + + /// + /// Indicates whether this library section is currently scanning + /// + [JsonProperty("refreshing")] + public bool? Refreshing { get; set; } + + [JsonProperty("scannedAt")] + public long? ScannedAt { get; set; } + + [JsonProperty("scanner")] + public string? Scanner { get; set; } + + [JsonProperty("thumb")] + public string? Thumb { get; set; } + + [JsonProperty("updatedAt")] + public long? UpdatedAt { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/LibrarySectionLocation.cs b/LukeHagar/PlexAPI/SDK/Models/Components/LibrarySectionLocation.cs new file mode 100644 index 0000000..e200836 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/LibrarySectionLocation.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// Represents a top-level location on disk where media in this library section is stored + /// + public class LibrarySectionLocation + { + + [JsonProperty("id")] + public long? Id { get; set; } + + /// + /// The path of where this directory exists on disk + /// + [JsonProperty("path")] + public object? Path { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Lineup.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Lineup.cs new file mode 100644 index 0000000..79b9751 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Lineup.cs @@ -0,0 +1,52 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class Lineup + { + + [JsonProperty("title")] + public string? Title { get; set; } + + /// + /// The type of this object (`lineup` in this case) + /// + [JsonProperty("type")] + public string? Type { get; set; } + + /// + /// - `-1`: N/A
+ /// + /// + /// - `0`: Over the air
+ /// - `1`: Cable
+ /// - `2`: Satellite
+ /// - `3`: IPTV
+ /// - `4`: Virtual
+ /// + ///
+ ///
+ [JsonProperty("lineupType")] + public Models.Components.LineupType? LineupType { get; set; } + + [JsonProperty("location")] + public string? Location { get; set; } + + /// + /// The uuid of this lineup + /// + [JsonProperty("uuid")] + public string? Uuid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/LineupType.cs b/LukeHagar/PlexAPI/SDK/Models/Components/LineupType.cs new file mode 100644 index 0000000..21be660 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/LineupType.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// - `-1`: N/A
+ /// + /// + /// - `0`: Over the air
+ /// - `1`: Cable
+ /// - `2`: Satellite
+ /// - `3`: IPTV
+ /// - `4`: Virtual
+ /// + ///
+ ///
+ public enum LineupType + { + Minus1 = -1, + Zero = 0, + One = 1, + Two = 2, + Three = 3, + Four = 4, + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Location.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Location.cs new file mode 100644 index 0000000..0a4f2d5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Location.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum Location + { + [JsonProperty("lan")] + Lan, + [JsonProperty("wan")] + Wan, + [JsonProperty("cellular")] + Cellular, + } + + public static class LocationExtension + { + public static string Value(this Location value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Location ToEnum(this string value) + { + foreach(var field in typeof(Location).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 Location) + { + return (Location)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Location"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Media.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Media.cs new file mode 100644 index 0000000..0dbeb63 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Media.cs @@ -0,0 +1,84 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element.
+ /// + /// + /// + /// + ///
+ public class Media + { + + [JsonProperty("aspectRatio")] + public double? AspectRatio { get; set; } + + [JsonProperty("audioChannels")] + public long? AudioChannels { get; set; } + + [JsonProperty("audioCodec")] + public object? AudioCodec { get; set; } + + [JsonProperty("audioProfile")] + public object? AudioProfile { get; set; } + + [JsonProperty("bitrate")] + public long? Bitrate { get; set; } + + [JsonProperty("container")] + public object? Container { get; set; } + + [JsonProperty("duration")] + public long? Duration { get; set; } + + [JsonProperty("has64bitOffsets")] + public bool? Has64bitOffsets { get; set; } + + [JsonProperty("hasVoiceActivity")] + public bool? HasVoiceActivity { get; set; } + + [JsonProperty("height")] + public long? Height { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + [JsonProperty("optimizedForStreaming")] + public bool? OptimizedForStreaming { get; set; } + + [JsonProperty("Part")] + public List? Part { get; set; } + + [JsonProperty("videoCodec")] + public object? VideoCodec { get; set; } + + [JsonProperty("videoFrameRate")] + public object? VideoFrameRate { get; set; } + + [JsonProperty("videoProfile")] + public object? VideoProfile { get; set; } + + [JsonProperty("videoResolution")] + public object? VideoResolution { get; set; } + + [JsonProperty("width")] + public long? Width { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainer.cs new file mode 100644 index 0000000..122ff90 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainer.cs @@ -0,0 +1,53 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class MediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtwork.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtwork.cs new file mode 100644 index 0000000..171dc66 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtwork.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class MediaContainerWithArtwork + { + + [JsonProperty("MediaContainer")] + public MediaContainerWithArtworkMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkMediaContainer.cs new file mode 100644 index 0000000..725a28e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class MediaContainerWithArtworkMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Metadata")] + public List? Metadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkMetadata.cs new file mode 100644 index 0000000..aeae77f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkMetadata.cs @@ -0,0 +1,38 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class MediaContainerWithArtworkMetadata + { + + /// + /// The title of the item + /// + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("type")] + public MediaContainerWithArtworkType? Type { get; set; } + + /// + /// The path to the artwork + /// + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkType.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkType.cs new file mode 100644 index 0000000..b867217 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithArtworkType.cs @@ -0,0 +1,55 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum MediaContainerWithArtworkType + { + [JsonProperty("image")] + Image, + } + + public static class MediaContainerWithArtworkTypeExtension + { + public static string Value(this MediaContainerWithArtworkType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static MediaContainerWithArtworkType ToEnum(this string value) + { + foreach(var field in typeof(MediaContainerWithArtworkType).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 MediaContainerWithArtworkType) + { + return (MediaContainerWithArtworkType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum MediaContainerWithArtworkType"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecision.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecision.cs new file mode 100644 index 0000000..2ccfc4c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecision.cs @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is commonly found as the root of a response and is a pretty generic container. Common attributes include `identifier` and things related to paging (`offset`, `size`, `totalSize`).
+ /// + /// + ///
+ /// It is also common for a `MediaContainer` to contain attributes "hoisted" from its children. If every element in the container would have had the same attribute, then that attribute can be present on the container instead of being repeated on every element. For example, an album's list of tracks might include `parentTitle` on the container since all of the tracks have the same album title. A container may have a `source` attribute when all of the items came from the same source. Generally speaking, when looking for an attribute on an item, if the attribute wasn't found then the container should be checked for that attribute as well.
+ /// + ///
+ ///
+ public class MediaContainerWithDecision + { + + [JsonProperty("MediaContainer")] + public MediaContainerWithDecisionMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionDecision.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionDecision.cs new file mode 100644 index 0000000..f78b8a8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionDecision.cs @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum MediaContainerWithDecisionDecision + { + [JsonProperty("copy")] + Copy, + [JsonProperty("transcode")] + Transcode, + [JsonProperty("burn")] + Burn, + [JsonProperty("unavailable")] + Unavailable, + [JsonProperty("ignore")] + Ignore, + [JsonProperty("none")] + None, + } + + public static class MediaContainerWithDecisionDecisionExtension + { + public static string Value(this MediaContainerWithDecisionDecision value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static MediaContainerWithDecisionDecision ToEnum(this string value) + { + foreach(var field in typeof(MediaContainerWithDecisionDecision).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 MediaContainerWithDecisionDecision) + { + return (MediaContainerWithDecisionDecision)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum MediaContainerWithDecisionDecision"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionLocation.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionLocation.cs new file mode 100644 index 0000000..ef604f7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionLocation.cs @@ -0,0 +1,69 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum MediaContainerWithDecisionLocation + { + [JsonProperty("direct")] + Direct, + [JsonProperty("sidecar-subs")] + SidecarSubs, + [JsonProperty("segments-video")] + SegmentsVideo, + [JsonProperty("segments-audio")] + SegmentsAudio, + [JsonProperty("segments-av")] + SegmentsAv, + [JsonProperty("segments-subs")] + SegmentsSubs, + [JsonProperty("embedded")] + Embedded, + [JsonProperty("sidecar")] + Sidecar, + } + + public static class MediaContainerWithDecisionLocationExtension + { + public static string Value(this MediaContainerWithDecisionLocation value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static MediaContainerWithDecisionLocation ToEnum(this string value) + { + foreach(var field in typeof(MediaContainerWithDecisionLocation).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 MediaContainerWithDecisionLocation) + { + return (MediaContainerWithDecisionLocation)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum MediaContainerWithDecisionLocation"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMedia.cs new file mode 100644 index 0000000..b86b3ed --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMedia.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element.
+ /// + /// + /// + /// + ///
+ public class MediaContainerWithDecisionMedia + { + + [JsonProperty("aspectRatio")] + public double? AspectRatio { get; set; } + + [JsonProperty("audioChannels")] + public long? AudioChannels { get; set; } + + [JsonProperty("audioCodec")] + public object? AudioCodec { get; set; } + + [JsonProperty("audioProfile")] + public object? AudioProfile { get; set; } + + [JsonProperty("bitrate")] + public long? Bitrate { get; set; } + + [JsonProperty("container")] + public object? Container { get; set; } + + [JsonProperty("duration")] + public long? Duration { get; set; } + + [JsonProperty("has64bitOffsets")] + public bool? Has64bitOffsets { get; set; } + + [JsonProperty("hasVoiceActivity")] + public bool? HasVoiceActivity { get; set; } + + [JsonProperty("height")] + public long? Height { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + [JsonProperty("optimizedForStreaming")] + public bool? OptimizedForStreaming { get; set; } + + [JsonProperty("Part")] + public List? Part { get; set; } + + [JsonProperty("videoCodec")] + public object? VideoCodec { get; set; } + + [JsonProperty("videoFrameRate")] + public object? VideoFrameRate { get; set; } + + [JsonProperty("videoProfile")] + public object? VideoProfile { get; set; } + + [JsonProperty("videoResolution")] + public object? VideoResolution { get; set; } + + [JsonProperty("width")] + public long? Width { get; set; } + + [JsonProperty("abr")] + public bool? Abr { get; set; } + + [JsonProperty("resourceSession")] + public string? ResourceSession { get; set; } + + [JsonProperty("selected")] + public bool? Selected { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMediaContainer.cs new file mode 100644 index 0000000..ddb2575 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMediaContainer.cs @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class MediaContainerWithDecisionMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + /// + /// The maximum available bitrate when the decision was rendered. + /// + [JsonProperty("availableBandwidth")] + public long? AvailableBandwidth { get; set; } + + [JsonProperty("directPlayDecisionCode")] + public long? DirectPlayDecisionCode { get; set; } + + [JsonProperty("directPlayDecisionText")] + public string? DirectPlayDecisionText { get; set; } + + /// + /// The overall decision. 1xxx are playback can succeed, 2xxx are a general error (such as insufficient bandwidth), 3xxx are errors in direct play, and 4xxx are errors in transcodes. Same codes are used in all. + /// + [JsonProperty("generalDecisionCode")] + public long? GeneralDecisionCode { get; set; } + + [JsonProperty("generalDecisionText")] + public string? GeneralDecisionText { get; set; } + + /// + /// The code indicating the status of evaluation of playback when client indicates `hasMDE=1` + /// + [JsonProperty("mdeDecisionCode")] + public long? MdeDecisionCode { get; set; } + + /// + /// Descriptive text for the above code + /// + [JsonProperty("mdeDecisionText")] + public string? MdeDecisionText { get; set; } + + [JsonProperty("Metadata")] + public List? Metadata { get; set; } + + [JsonProperty("transcodeDecisionCode")] + public long? TranscodeDecisionCode { get; set; } + + [JsonProperty("transcodeDecisionText")] + public string? TranscodeDecisionText { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMetadata.cs new file mode 100644 index 0000000..2ababf3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionMetadata.cs @@ -0,0 +1,406 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.
+ /// + /// + ///
+ /// Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items.
+ ///
+ /// Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
+ /// + ///
+ ///
+ public class MediaContainerWithDecisionMetadata + { + + /// + /// The title of the item (e.g. “300” or “The Simpsons”) + /// + [JsonProperty("title")] + public object? Title { get; set; } + + /// + /// The type of the video item, such as `movie`, `episode`, or `clip`. + /// + [JsonProperty("type")] + public object? Type { get; set; } + + /// + /// When present, contains the disc number for a track on multi-disc albums. + /// + [JsonProperty("absoluteIndex")] + public long? AbsoluteIndex { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was added to the library. + /// + [JsonProperty("addedAt")] + public long? AddedAt { get; set; } + + /// + /// When present, the URL for the background artwork for the item. + /// + [JsonProperty("art")] + public object? Art { get; set; } + + /// + /// Some rating systems separate reviewer ratings from audience ratings + /// + [JsonProperty("audienceRating")] + public double? AudienceRating { get; set; } + + /// + /// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). + /// + [JsonProperty("audienceRatingImage")] + public object? AudienceRatingImage { get; set; } + + [JsonProperty("Autotag")] + public List? Autotag { get; set; } + + /// + /// When present, the URL for a banner graphic for the item. + /// + [JsonProperty("banner")] + public object? Banner { get; set; } + + /// + /// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). + /// + [JsonProperty("chapterSource")] + public object? ChapterSource { get; set; } + + /// + /// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). + /// + [JsonProperty("composite")] + public object? Composite { get; set; } + + /// + /// If known, the content rating (e.g. MPAA) for an item. + /// + [JsonProperty("contentRating")] + public object? ContentRating { get; set; } + + [JsonProperty("Country")] + public List? Country { get; set; } + + [JsonProperty("Director")] + public List? Director { get; set; } + + /// + /// When present, the duration for the item, in units of milliseconds. + /// + [JsonProperty("duration")] + public long? Duration { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Filter")] + public List? Filter { get; set; } + + [JsonProperty("Genre")] + public List? Genre { get; set; } + + /// + /// The `art` of the grandparent + /// + [JsonProperty("grandparentArt")] + public string? GrandparentArt { get; set; } + + /// + /// The `hero` of the grandparent + /// + [JsonProperty("grandparentHero")] + public string? GrandparentHero { get; set; } + + /// + /// The `key` of the grandparent + /// + [JsonProperty("grandparentKey")] + public string? GrandparentKey { get; set; } + + /// + /// The `ratingKey` of the grandparent + /// + [JsonProperty("grandparentRatingKey")] + public string? GrandparentRatingKey { get; set; } + + /// + /// The `theme` of the grandparent + /// + [JsonProperty("grandparentTheme")] + public string? GrandparentTheme { get; set; } + + /// + /// The `thumb` of the grandparent + /// + [JsonProperty("grandparentThumb")] + public string? GrandparentThumb { get; set; } + + /// + /// The `title` of the grandparent + /// + [JsonProperty("grandparentTitle")] + public string? GrandparentTitle { get; set; } + + [JsonProperty("Guid")] + public List? Guid { get; set; } + + /// + /// When present, the URL for a hero image for the item. + /// + [JsonProperty("hero")] + public object? Hero { get; set; } + + [JsonProperty("Image")] + public List? Image { get; set; } + + /// + /// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. + /// + [JsonProperty("index")] + public long? Index { get; set; } + + /// + /// The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. + /// + [JsonProperty("key")] + public object? Key { get; set; } + + /// + /// When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. + /// + [JsonProperty("lastViewedAt")] + public long? LastViewedAt { get; set; } + + /// + /// For shows and seasons, contains the number of total episodes. + /// + [JsonProperty("leafCount")] + public long? LeafCount { get; set; } + + [JsonProperty("Media")] + public List? Media { get; set; } + + /// + /// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. + /// + [JsonProperty("originallyAvailableAt")] + public object? OriginallyAvailableAt { get; set; } + + /// + /// When present, used to indicate an item's original title, e.g. a movie's foreign title. + /// + [JsonProperty("originalTitle")] + public object? OriginalTitle { get; set; } + + /// + /// The `hero` of the parent + /// + [JsonProperty("parentHero")] + public string? ParentHero { get; set; } + + /// + /// The `index` of the parent + /// + [JsonProperty("parentIndex")] + public long? ParentIndex { get; set; } + + /// + /// The `key` of the parent + /// + [JsonProperty("parentKey")] + public string? ParentKey { get; set; } + + /// + /// The `ratingKey` of the parent + /// + [JsonProperty("parentRatingKey")] + public string? ParentRatingKey { get; set; } + + /// + /// The `thumb` of the parent + /// + [JsonProperty("parentThumb")] + public string? ParentThumb { get; set; } + + /// + /// The `title` of the parent + /// + [JsonProperty("parentTitle")] + public string? ParentTitle { get; set; } + + /// + /// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. + /// + [JsonProperty("primaryExtraKey")] + public object? PrimaryExtraKey { get; set; } + + /// + /// Prompt to give the user for this directory (such as `Search Movies`) + /// + [JsonProperty("prompt")] + public string? Prompt { get; set; } + + /// + /// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. + /// + [JsonProperty("rating")] + public double? Rating { get; set; } + + [JsonProperty("Rating")] + public List? RatingArray { get; set; } + + /// + /// Number of ratings under this metadata + /// + [JsonProperty("ratingCount")] + public long? RatingCount { get; set; } + + /// + /// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. + /// + [JsonProperty("ratingImage")] + public object? RatingImage { get; set; } + + /// + /// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. + /// + [JsonProperty("ratingKey")] + public object? RatingKey { get; set; } + + [JsonProperty("Role")] + public List? Role { get; set; } + + /// + /// Indicates this is a search directory + /// + [JsonProperty("search")] + public bool? Search { get; set; } + + /// + /// Used by old clients to provide nested menus allowing for primative (but structured) navigation. + /// + [JsonProperty("secondary")] + public bool? Secondary { get; set; } + + /// + /// When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. + /// + [JsonProperty("skipChildren")] + public bool? SkipChildren { get; set; } + + /// + /// When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). + /// + [JsonProperty("skipParent")] + public bool? SkipParent { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Sort")] + public List? Sort { get; set; } + + /// + /// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). + /// + [JsonProperty("studio")] + public object? Studio { get; set; } + + /// + /// The subtype of the video item, such as `photo` when the video item is in a photo library + /// + [JsonProperty("subtype")] + public object? Subtype { get; set; } + + /// + /// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). + /// + [JsonProperty("summary")] + public object? Summary { get; set; } + + /// + /// When present, a pithy one-liner about the item (usually only seen for movies). + /// + [JsonProperty("tagline")] + public object? Tagline { get; set; } + + /// + /// When present, the URL for theme music for the item (usually only for TV shows). + /// + [JsonProperty("theme")] + public object? Theme { get; set; } + + /// + /// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. + /// + [JsonProperty("thumb")] + public object? Thumb { get; set; } + + /// + /// Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). + /// + [JsonProperty("titleSort")] + public object? TitleSort { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). + /// + [JsonProperty("updatedAt")] + public long? UpdatedAt { get; set; } + + /// + /// When the user has rated an item, this contains the user rating + /// + [JsonProperty("userRating")] + public double? UserRating { get; set; } + + /// + /// When a users has completed watched or listened to an item, this attribute contains the number of consumptions. + /// + [JsonProperty("viewCount")] + public long? ViewCount { get; set; } + + /// + /// For shows and seasons, contains the number of viewed episodes. + /// + [JsonProperty("viewedLeafCount")] + public long? ViewedLeafCount { get; set; } + + /// + /// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. + /// + [JsonProperty("viewOffset")] + public long? ViewOffset { get; set; } + + [JsonProperty("Writer")] + public List? Writer { get; set; } + + /// + /// When present, the year associated with the item's release (e.g. release year for a movie). + /// + [JsonProperty("year")] + public long? Year { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionPart.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionPart.cs new file mode 100644 index 0000000..72c1ed9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionPart.cs @@ -0,0 +1,84 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `Part` represents a particular file or "part" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part.
+ /// + /// + /// + /// + ///
+ public class MediaContainerWithDecisionPart + { + + [JsonProperty("audioProfile")] + public object? AudioProfile { get; set; } + + /// + /// The container of the media file, such as `mp4` or `mkv` + /// + [JsonProperty("container")] + public object? Container { get; set; } + + /// + /// The duration of the media item, in milliseconds + /// + [JsonProperty("duration")] + public long? Duration { get; set; } + + /// + /// The local file path at which the part is stored on the server + /// + [JsonProperty("file")] + public object? File { get; set; } + + [JsonProperty("has64bitOffsets")] + public bool? Has64bitOffsets { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + /// + /// The key from which the media can be streamed + /// + [JsonProperty("key")] + public object? Key { get; set; } + + [JsonProperty("optimizedForStreaming")] + public bool? OptimizedForStreaming { get; set; } + + /// + /// The size of the media, in bytes + /// + [JsonProperty("size")] + public long? Size { get; set; } + + [JsonProperty("Stream")] + public List? Stream { get; set; } + + [JsonProperty("videoProfile")] + public object? VideoProfile { get; set; } + + [JsonProperty("decision")] + public Decision? Decision { get; set; } + + [JsonProperty("selected")] + public bool? Selected { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionStream.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionStream.cs new file mode 100644 index 0000000..2768604 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDecisionStream.cs @@ -0,0 +1,144 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization).
+ /// + /// + /// + /// + ///
+ public class MediaContainerWithDecisionStream + { + + [JsonProperty("default")] + public bool? Default { get; set; } + + [JsonProperty("audioChannelLayout")] + public object? AudioChannelLayout { get; set; } + + [JsonProperty("bitDepth")] + public long? BitDepth { get; set; } + + [JsonProperty("bitrate")] + public long? Bitrate { get; set; } + + /// + /// For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video. + /// + [JsonProperty("canAutoSync")] + public bool? CanAutoSync { get; set; } + + [JsonProperty("chromaLocation")] + public object? ChromaLocation { get; set; } + + [JsonProperty("chromaSubsampling")] + public object? ChromaSubsampling { get; set; } + + /// + /// The codec of the stream, such as `h264` or `aac` + /// + [JsonProperty("codec")] + public object? Codec { get; set; } + + [JsonProperty("colorPrimaries")] + public object? ColorPrimaries { get; set; } + + [JsonProperty("colorRange")] + public object? ColorRange { get; set; } + + [JsonProperty("colorSpace")] + public object? ColorSpace { get; set; } + + [JsonProperty("colorTrc")] + public object? ColorTrc { get; set; } + + /// + /// A friendly name for the stream, often comprised of the language and codec information + /// + [JsonProperty("displayTitle")] + public object? DisplayTitle { get; set; } + + [JsonProperty("frameRate")] + public double? FrameRate { get; set; } + + [JsonProperty("hasScalingMatrix")] + public object? HasScalingMatrix { get; set; } + + [JsonProperty("height")] + public long? Height { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + /// + /// If the stream is part of the `Part` and not an external resource, the index of the stream within that part + /// + [JsonProperty("index")] + public long? Index { get; set; } + + /// + /// If the stream is independently streamable, the key from which it can be streamed + /// + [JsonProperty("key")] + public object? Key { get; set; } + + [JsonProperty("language")] + public object? Language { get; set; } + + /// + /// The three character language code for the stream contents + /// + [JsonProperty("languageCode")] + public object? LanguageCode { get; set; } + + [JsonProperty("level")] + public long? Level { get; set; } + + [JsonProperty("profile")] + public object? Profile { get; set; } + + [JsonProperty("refFrames")] + public long? RefFrames { get; set; } + + [JsonProperty("samplingRate")] + public long? SamplingRate { get; set; } + + [JsonProperty("selected")] + public bool? Selected { get; set; } + + [JsonProperty("streamIdentifier")] + public long? StreamIdentifier { get; set; } + + /// + /// A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics + /// + [JsonProperty("streamType")] + public long? StreamType { get; set; } + + [JsonProperty("width")] + public long? Width { get; set; } + + [JsonProperty("decision")] + public MediaContainerWithDecisionDecision? Decision { get; set; } + + [JsonProperty("location")] + public MediaContainerWithDecisionLocation? Location { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDevice.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDevice.cs new file mode 100644 index 0000000..0ac7fe3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDevice.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class MediaContainerWithDevice + { + + [JsonProperty("MediaContainer")] + public MediaContainerWithDeviceMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDeviceDevice.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDeviceDevice.cs new file mode 100644 index 0000000..fd24de2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDeviceDevice.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class MediaContainerWithDeviceDevice + { + + [JsonProperty("ChannelMapping")] + public List? ChannelMapping { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("lastSeenAt")] + public long? LastSeenAt { get; set; } + + [JsonProperty("make")] + public string? Make { get; set; } + + [JsonProperty("model")] + public string? Model { get; set; } + + [JsonProperty("modelNumber")] + public string? ModelNumber { get; set; } + + [JsonProperty("protocol")] + public string? Protocol { get; set; } + + [JsonProperty("sources")] + public string? Sources { get; set; } + + [JsonProperty("state")] + public string? State { get; set; } + + [JsonProperty("status")] + public string? Status { get; set; } + + [JsonProperty("tuners")] + public string? Tuners { get; set; } + + [JsonProperty("uri")] + public string? Uri { get; set; } + + [JsonProperty("uuid")] + public string? Uuid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDeviceMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDeviceMediaContainer.cs new file mode 100644 index 0000000..f6a55b1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDeviceMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class MediaContainerWithDeviceMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Device")] + public List? Device { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDirectory.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDirectory.cs new file mode 100644 index 0000000..80cbcfb --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDirectory.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class MediaContainerWithDirectory + { + + [JsonProperty("MediaContainer")] + public MediaContainerWithDirectoryMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDirectoryMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDirectoryMediaContainer.cs new file mode 100644 index 0000000..22cbc72 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithDirectoryMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class MediaContainerWithDirectoryMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Directory")] + public List? Directory { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithHubs.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithHubs.cs new file mode 100644 index 0000000..38cbaa2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithHubs.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class MediaContainerWithHubs + { + + [JsonProperty("MediaContainer")] + public MediaContainerWithHubsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithHubsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithHubsMediaContainer.cs new file mode 100644 index 0000000..e4c0c99 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithHubsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class MediaContainerWithHubsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Hub")] + public List? Hub { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithLineup.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithLineup.cs new file mode 100644 index 0000000..42b62db --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithLineup.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class MediaContainerWithLineup + { + + [JsonProperty("MediaContainer")] + public MediaContainerWithLineupMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithLineupMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithLineupMediaContainer.cs new file mode 100644 index 0000000..655f795 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithLineupMediaContainer.cs @@ -0,0 +1,64 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class MediaContainerWithLineupMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Lineup")] + public List? Lineup { get; set; } + + /// + /// The UUID of this set lineups + /// + [JsonProperty("uuid")] + public string? Uuid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithMetadata.cs new file mode 100644 index 0000000..bb98624 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithMetadata.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class MediaContainerWithMetadata + { + + [JsonProperty("MediaContainer")] + public MediaContainerWithMetadataMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithMetadataMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithMetadataMediaContainer.cs new file mode 100644 index 0000000..7e55146 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithMetadataMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class MediaContainerWithMetadataMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Metadata")] + public List? Metadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithNestedMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithNestedMetadata.cs new file mode 100644 index 0000000..63b98e8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithNestedMetadata.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class MediaContainerWithNestedMetadata + { + + [JsonProperty("MediaContainer")] + public MediaContainerWithNestedMetadataMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithNestedMetadataMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithNestedMetadataMediaContainer.cs new file mode 100644 index 0000000..718be8b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithNestedMetadataMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class MediaContainerWithNestedMetadataMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("MetadataItem")] + public List? MetadataItem { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadata.cs new file mode 100644 index 0000000..ad1acf3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadata.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class MediaContainerWithPlaylistMetadata + { + + [JsonProperty("MediaContainer")] + public MediaContainerWithPlaylistMetadataMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadataMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadataMediaContainer.cs new file mode 100644 index 0000000..c466265 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadataMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class MediaContainerWithPlaylistMetadataMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Metadata")] + public List? Metadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadataMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadataMetadata.cs new file mode 100644 index 0000000..406f8c0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithPlaylistMetadataMetadata.cs @@ -0,0 +1,430 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.
+ /// + /// + ///
+ /// Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items.
+ ///
+ /// Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
+ /// + ///
+ ///
+ public class MediaContainerWithPlaylistMetadataMetadata + { + + /// + /// If we return this as true then this playlist cannot be altered or deleted directly by the client. + /// + [JsonProperty("readOnly")] + public bool? ReadOnly { get; set; } + + /// + /// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). + /// + [JsonProperty("composite")] + public object? Composite { get; set; } + + /// + /// When present, the duration for the item, in units of milliseconds. + /// + [JsonProperty("duration")] + public long? Duration { get; set; } + + /// + /// The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. + /// + [JsonProperty("key")] + public object? Key { get; set; } + + /// + /// For shows and seasons, contains the number of total episodes. + /// + [JsonProperty("leafCount")] + public long? LeafCount { get; set; } + + /// + /// The type of the playlist. + /// + [JsonProperty("playlistType")] + public Models.Components.PlaylistType? PlaylistType { get; set; } + + /// + /// Whether or not the playlist is smart. + /// + [JsonProperty("smart")] + public bool? Smart { get; set; } + + /// + /// If this is a special playlist, this returns its type (e.g. favorites). + /// + [JsonProperty("specialPlaylistType")] + public string? SpecialPlaylistType { get; set; } + + /// + /// The title of the item (e.g. “300” or “The Simpsons”) + /// + [JsonProperty("title")] + public object? Title { get; set; } + + /// + /// The type of the video item, such as `movie`, `episode`, or `clip`. + /// + [JsonProperty("type")] + public object? Type { get; set; } + + /// + /// When present, contains the disc number for a track on multi-disc albums. + /// + [JsonProperty("absoluteIndex")] + public long? AbsoluteIndex { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was added to the library. + /// + [JsonProperty("addedAt")] + public long? AddedAt { get; set; } + + /// + /// When present, the URL for the background artwork for the item. + /// + [JsonProperty("art")] + public object? Art { get; set; } + + /// + /// Some rating systems separate reviewer ratings from audience ratings + /// + [JsonProperty("audienceRating")] + public double? AudienceRating { get; set; } + + /// + /// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). + /// + [JsonProperty("audienceRatingImage")] + public object? AudienceRatingImage { get; set; } + + [JsonProperty("Autotag")] + public List? Autotag { get; set; } + + /// + /// When present, the URL for a banner graphic for the item. + /// + [JsonProperty("banner")] + public object? Banner { get; set; } + + /// + /// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). + /// + [JsonProperty("chapterSource")] + public object? ChapterSource { get; set; } + + /// + /// If known, the content rating (e.g. MPAA) for an item. + /// + [JsonProperty("contentRating")] + public object? ContentRating { get; set; } + + [JsonProperty("Country")] + public List? Country { get; set; } + + [JsonProperty("Director")] + public List? Director { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Filter")] + public List? Filter { get; set; } + + [JsonProperty("Genre")] + public List? Genre { get; set; } + + /// + /// The `art` of the grandparent + /// + [JsonProperty("grandparentArt")] + public string? GrandparentArt { get; set; } + + /// + /// The `hero` of the grandparent + /// + [JsonProperty("grandparentHero")] + public string? GrandparentHero { get; set; } + + /// + /// The `key` of the grandparent + /// + [JsonProperty("grandparentKey")] + public string? GrandparentKey { get; set; } + + /// + /// The `ratingKey` of the grandparent + /// + [JsonProperty("grandparentRatingKey")] + public string? GrandparentRatingKey { get; set; } + + /// + /// The `theme` of the grandparent + /// + [JsonProperty("grandparentTheme")] + public string? GrandparentTheme { get; set; } + + /// + /// The `thumb` of the grandparent + /// + [JsonProperty("grandparentThumb")] + public string? GrandparentThumb { get; set; } + + /// + /// The `title` of the grandparent + /// + [JsonProperty("grandparentTitle")] + public string? GrandparentTitle { get; set; } + + [JsonProperty("Guid")] + public List? Guid { get; set; } + + /// + /// When present, the URL for a hero image for the item. + /// + [JsonProperty("hero")] + public object? Hero { get; set; } + + [JsonProperty("Image")] + public List? Image { get; set; } + + /// + /// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. + /// + [JsonProperty("index")] + public long? Index { get; set; } + + /// + /// When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. + /// + [JsonProperty("lastViewedAt")] + public long? LastViewedAt { get; set; } + + [JsonProperty("Media")] + public List? Media { get; set; } + + /// + /// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. + /// + [JsonProperty("originallyAvailableAt")] + public object? OriginallyAvailableAt { get; set; } + + /// + /// When present, used to indicate an item's original title, e.g. a movie's foreign title. + /// + [JsonProperty("originalTitle")] + public object? OriginalTitle { get; set; } + + /// + /// The `hero` of the parent + /// + [JsonProperty("parentHero")] + public string? ParentHero { get; set; } + + /// + /// The `index` of the parent + /// + [JsonProperty("parentIndex")] + public long? ParentIndex { get; set; } + + /// + /// The `key` of the parent + /// + [JsonProperty("parentKey")] + public string? ParentKey { get; set; } + + /// + /// The `ratingKey` of the parent + /// + [JsonProperty("parentRatingKey")] + public string? ParentRatingKey { get; set; } + + /// + /// The `thumb` of the parent + /// + [JsonProperty("parentThumb")] + public string? ParentThumb { get; set; } + + /// + /// The `title` of the parent + /// + [JsonProperty("parentTitle")] + public string? ParentTitle { get; set; } + + /// + /// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. + /// + [JsonProperty("primaryExtraKey")] + public object? PrimaryExtraKey { get; set; } + + /// + /// Prompt to give the user for this directory (such as `Search Movies`) + /// + [JsonProperty("prompt")] + public string? Prompt { get; set; } + + /// + /// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. + /// + [JsonProperty("rating")] + public double? Rating { get; set; } + + [JsonProperty("Rating")] + public List? RatingArray { get; set; } + + /// + /// Number of ratings under this metadata + /// + [JsonProperty("ratingCount")] + public long? RatingCount { get; set; } + + /// + /// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. + /// + [JsonProperty("ratingImage")] + public object? RatingImage { get; set; } + + /// + /// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. + /// + [JsonProperty("ratingKey")] + public object? RatingKey { get; set; } + + [JsonProperty("Role")] + public List? Role { get; set; } + + /// + /// Indicates this is a search directory + /// + [JsonProperty("search")] + public bool? Search { get; set; } + + /// + /// Used by old clients to provide nested menus allowing for primative (but structured) navigation. + /// + [JsonProperty("secondary")] + public bool? Secondary { get; set; } + + /// + /// When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. + /// + [JsonProperty("skipChildren")] + public bool? SkipChildren { get; set; } + + /// + /// When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). + /// + [JsonProperty("skipParent")] + public bool? SkipParent { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Sort")] + public List? Sort { get; set; } + + /// + /// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). + /// + [JsonProperty("studio")] + public object? Studio { get; set; } + + /// + /// The subtype of the video item, such as `photo` when the video item is in a photo library + /// + [JsonProperty("subtype")] + public object? Subtype { get; set; } + + /// + /// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). + /// + [JsonProperty("summary")] + public object? Summary { get; set; } + + /// + /// When present, a pithy one-liner about the item (usually only seen for movies). + /// + [JsonProperty("tagline")] + public object? Tagline { get; set; } + + /// + /// When present, the URL for theme music for the item (usually only for TV shows). + /// + [JsonProperty("theme")] + public object? Theme { get; set; } + + /// + /// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. + /// + [JsonProperty("thumb")] + public object? Thumb { get; set; } + + /// + /// Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). + /// + [JsonProperty("titleSort")] + public object? TitleSort { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). + /// + [JsonProperty("updatedAt")] + public long? UpdatedAt { get; set; } + + /// + /// When the user has rated an item, this contains the user rating + /// + [JsonProperty("userRating")] + public double? UserRating { get; set; } + + /// + /// When a users has completed watched or listened to an item, this attribute contains the number of consumptions. + /// + [JsonProperty("viewCount")] + public long? ViewCount { get; set; } + + /// + /// For shows and seasons, contains the number of viewed episodes. + /// + [JsonProperty("viewedLeafCount")] + public long? ViewedLeafCount { get; set; } + + /// + /// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. + /// + [JsonProperty("viewOffset")] + public long? ViewOffset { get; set; } + + [JsonProperty("Writer")] + public List? Writer { get; set; } + + /// + /// When present, the year associated with the item's release (e.g. release year for a movie). + /// + [JsonProperty("year")] + public long? Year { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSettings.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSettings.cs new file mode 100644 index 0000000..7552c68 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSettings.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class MediaContainerWithSettings + { + + [JsonProperty("MediaContainer")] + public MediaContainerWithSettingsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSettingsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSettingsMediaContainer.cs new file mode 100644 index 0000000..68a267c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSettingsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class MediaContainerWithSettingsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Setting")] + public List? Setting { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSubscription.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSubscription.cs new file mode 100644 index 0000000..51062c1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSubscription.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class MediaContainerWithSubscription + { + + [JsonProperty("MediaContainer")] + public MediaContainerWithSubscriptionMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSubscriptionMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSubscriptionMediaContainer.cs new file mode 100644 index 0000000..4339a08 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaContainerWithSubscriptionMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class MediaContainerWithSubscriptionMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("MediaSubscription")] + public List? MediaSubscription { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaGrabOperation.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaGrabOperation.cs new file mode 100644 index 0000000..05df1d0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaGrabOperation.cs @@ -0,0 +1,70 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// A media grab opration represents a scheduled or active recording of media
+ /// + /// + /// + /// + ///
+ public class MediaGrabOperation + { + + [JsonProperty("currentSize")] + public long? CurrentSize { get; set; } + + [JsonProperty("grabberIdentifier")] + public string? GrabberIdentifier { get; set; } + + [JsonProperty("grabberProtocol")] + public string? GrabberProtocol { get; set; } + + [JsonProperty("id")] + public string? Id { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("mediaIndex")] + public long? MediaIndex { get; set; } + + [JsonProperty("mediaSubscriptionID")] + public long? MediaSubscriptionID { get; set; } + + /// + /// Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.
+ /// + /// + ///
+ /// Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items.
+ ///
+ /// Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
+ /// + ///
+ ///
+ [JsonProperty("Metadata")] + public Models.Components.Metadata? Metadata { get; set; } + + [JsonProperty("percent")] + public double? Percent { get; set; } + + [JsonProperty("provider")] + public string? Provider { get; set; } + + [JsonProperty("status")] + public Models.Components.Status? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaQuery.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaQuery.cs new file mode 100644 index 0000000..dd9333f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaQuery.cs @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + + public class MediaQuery + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MediaSubscription.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MediaSubscription.cs new file mode 100644 index 0000000..4448bfb --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MediaSubscription.cs @@ -0,0 +1,99 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// A media subscription contains a representation of metadata desired to be recorded
+ /// + /// + /// + /// + ///
+ public class MediaSubscription + { + + [JsonProperty("title")] + public string? Title { get; set; } + + /// + /// The metadata type of the root item of the subscription + /// + [JsonProperty("type")] + public long? Type { get; set; } + + [JsonProperty("airingsType")] + public AiringsType? AiringsType { get; set; } + + [JsonProperty("createdAt")] + public long? CreatedAt { get; set; } + + /// + /// Media Matching Hints + /// + [JsonProperty("Directory")] + public Dictionary? Directory { get; set; } + + /// + /// Only included if `includeStorage` is specified + /// + [JsonProperty("durationTotal")] + public long? DurationTotal { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("librarySectionTitle")] + public string? LibrarySectionTitle { get; set; } + + [JsonProperty("locationPath")] + public string? LocationPath { get; set; } + + [JsonProperty("MediaGrabOperation")] + public List? MediaGrabOperation { get; set; } + + /// + /// Media Matching Hints + /// + [JsonProperty("Playlist")] + public Dictionary? Playlist { get; set; } + + [JsonProperty("Setting")] + public List? Setting { get; set; } + + /// + /// Only included if `includeStorage` is specified + /// + [JsonProperty("storageTotal")] + public long? StorageTotal { get; set; } + + /// + /// The library section id for where the item is to be recorded + /// + [JsonProperty("targetLibrarySectionID")] + public long? TargetLibrarySectionID { get; set; } + + /// + /// The library section location id for where the item is to be recorded + /// + [JsonProperty("targetSectionLocationID")] + public long? TargetSectionLocationID { get; set; } + + /// + /// Media Matching Hints + /// + [JsonProperty("Video")] + public Dictionary? Video { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Metadata.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Metadata.cs new file mode 100644 index 0000000..57dbcad --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Metadata.cs @@ -0,0 +1,406 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.
+ /// + /// + ///
+ /// Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items.
+ ///
+ /// Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
+ /// + ///
+ ///
+ public class Metadata + { + + /// + /// The title of the item (e.g. “300” or “The Simpsons”) + /// + [JsonProperty("title")] + public object? Title { get; set; } + + /// + /// The type of the video item, such as `movie`, `episode`, or `clip`. + /// + [JsonProperty("type")] + public object? Type { get; set; } + + /// + /// When present, contains the disc number for a track on multi-disc albums. + /// + [JsonProperty("absoluteIndex")] + public long? AbsoluteIndex { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was added to the library. + /// + [JsonProperty("addedAt")] + public long? AddedAt { get; set; } + + /// + /// When present, the URL for the background artwork for the item. + /// + [JsonProperty("art")] + public object? Art { get; set; } + + /// + /// Some rating systems separate reviewer ratings from audience ratings + /// + [JsonProperty("audienceRating")] + public double? AudienceRating { get; set; } + + /// + /// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). + /// + [JsonProperty("audienceRatingImage")] + public object? AudienceRatingImage { get; set; } + + [JsonProperty("Autotag")] + public List? Autotag { get; set; } + + /// + /// When present, the URL for a banner graphic for the item. + /// + [JsonProperty("banner")] + public object? Banner { get; set; } + + /// + /// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). + /// + [JsonProperty("chapterSource")] + public object? ChapterSource { get; set; } + + /// + /// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). + /// + [JsonProperty("composite")] + public object? Composite { get; set; } + + /// + /// If known, the content rating (e.g. MPAA) for an item. + /// + [JsonProperty("contentRating")] + public object? ContentRating { get; set; } + + [JsonProperty("Country")] + public List? Country { get; set; } + + [JsonProperty("Director")] + public List? Director { get; set; } + + /// + /// When present, the duration for the item, in units of milliseconds. + /// + [JsonProperty("duration")] + public long? Duration { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Filter")] + public List? Filter { get; set; } + + [JsonProperty("Genre")] + public List? Genre { get; set; } + + /// + /// The `art` of the grandparent + /// + [JsonProperty("grandparentArt")] + public string? GrandparentArt { get; set; } + + /// + /// The `hero` of the grandparent + /// + [JsonProperty("grandparentHero")] + public string? GrandparentHero { get; set; } + + /// + /// The `key` of the grandparent + /// + [JsonProperty("grandparentKey")] + public string? GrandparentKey { get; set; } + + /// + /// The `ratingKey` of the grandparent + /// + [JsonProperty("grandparentRatingKey")] + public string? GrandparentRatingKey { get; set; } + + /// + /// The `theme` of the grandparent + /// + [JsonProperty("grandparentTheme")] + public string? GrandparentTheme { get; set; } + + /// + /// The `thumb` of the grandparent + /// + [JsonProperty("grandparentThumb")] + public string? GrandparentThumb { get; set; } + + /// + /// The `title` of the grandparent + /// + [JsonProperty("grandparentTitle")] + public string? GrandparentTitle { get; set; } + + [JsonProperty("Guid")] + public List? Guid { get; set; } + + /// + /// When present, the URL for a hero image for the item. + /// + [JsonProperty("hero")] + public object? Hero { get; set; } + + [JsonProperty("Image")] + public List? Image { get; set; } + + /// + /// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. + /// + [JsonProperty("index")] + public long? Index { get; set; } + + /// + /// The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. + /// + [JsonProperty("key")] + public object? Key { get; set; } + + /// + /// When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. + /// + [JsonProperty("lastViewedAt")] + public long? LastViewedAt { get; set; } + + /// + /// For shows and seasons, contains the number of total episodes. + /// + [JsonProperty("leafCount")] + public long? LeafCount { get; set; } + + [JsonProperty("Media")] + public List? Media { get; set; } + + /// + /// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. + /// + [JsonProperty("originallyAvailableAt")] + public object? OriginallyAvailableAt { get; set; } + + /// + /// When present, used to indicate an item's original title, e.g. a movie's foreign title. + /// + [JsonProperty("originalTitle")] + public object? OriginalTitle { get; set; } + + /// + /// The `hero` of the parent + /// + [JsonProperty("parentHero")] + public string? ParentHero { get; set; } + + /// + /// The `index` of the parent + /// + [JsonProperty("parentIndex")] + public long? ParentIndex { get; set; } + + /// + /// The `key` of the parent + /// + [JsonProperty("parentKey")] + public string? ParentKey { get; set; } + + /// + /// The `ratingKey` of the parent + /// + [JsonProperty("parentRatingKey")] + public string? ParentRatingKey { get; set; } + + /// + /// The `thumb` of the parent + /// + [JsonProperty("parentThumb")] + public string? ParentThumb { get; set; } + + /// + /// The `title` of the parent + /// + [JsonProperty("parentTitle")] + public string? ParentTitle { get; set; } + + /// + /// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. + /// + [JsonProperty("primaryExtraKey")] + public object? PrimaryExtraKey { get; set; } + + /// + /// Prompt to give the user for this directory (such as `Search Movies`) + /// + [JsonProperty("prompt")] + public string? Prompt { get; set; } + + /// + /// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. + /// + [JsonProperty("rating")] + public double? Rating { get; set; } + + [JsonProperty("Rating")] + public List? RatingArray { get; set; } + + /// + /// Number of ratings under this metadata + /// + [JsonProperty("ratingCount")] + public long? RatingCount { get; set; } + + /// + /// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. + /// + [JsonProperty("ratingImage")] + public object? RatingImage { get; set; } + + /// + /// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. + /// + [JsonProperty("ratingKey")] + public object? RatingKey { get; set; } + + [JsonProperty("Role")] + public List? Role { get; set; } + + /// + /// Indicates this is a search directory + /// + [JsonProperty("search")] + public bool? Search { get; set; } + + /// + /// Used by old clients to provide nested menus allowing for primative (but structured) navigation. + /// + [JsonProperty("secondary")] + public bool? Secondary { get; set; } + + /// + /// When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. + /// + [JsonProperty("skipChildren")] + public bool? SkipChildren { get; set; } + + /// + /// When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). + /// + [JsonProperty("skipParent")] + public bool? SkipParent { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Sort")] + public List? Sort { get; set; } + + /// + /// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). + /// + [JsonProperty("studio")] + public object? Studio { get; set; } + + /// + /// The subtype of the video item, such as `photo` when the video item is in a photo library + /// + [JsonProperty("subtype")] + public object? Subtype { get; set; } + + /// + /// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). + /// + [JsonProperty("summary")] + public object? Summary { get; set; } + + /// + /// When present, a pithy one-liner about the item (usually only seen for movies). + /// + [JsonProperty("tagline")] + public object? Tagline { get; set; } + + /// + /// When present, the URL for theme music for the item (usually only for TV shows). + /// + [JsonProperty("theme")] + public object? Theme { get; set; } + + /// + /// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. + /// + [JsonProperty("thumb")] + public object? Thumb { get; set; } + + /// + /// Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). + /// + [JsonProperty("titleSort")] + public object? TitleSort { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). + /// + [JsonProperty("updatedAt")] + public long? UpdatedAt { get; set; } + + /// + /// When the user has rated an item, this contains the user rating + /// + [JsonProperty("userRating")] + public double? UserRating { get; set; } + + /// + /// When a users has completed watched or listened to an item, this attribute contains the number of consumptions. + /// + [JsonProperty("viewCount")] + public long? ViewCount { get; set; } + + /// + /// For shows and seasons, contains the number of viewed episodes. + /// + [JsonProperty("viewedLeafCount")] + public long? ViewedLeafCount { get; set; } + + /// + /// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. + /// + [JsonProperty("viewOffset")] + public long? ViewOffset { get; set; } + + [JsonProperty("Writer")] + public List? Writer { get; set; } + + /// + /// When present, the year associated with the item's release (e.g. release year for a movie). + /// + [JsonProperty("year")] + public long? Year { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/MetadataItem.cs b/LukeHagar/PlexAPI/SDK/Models/Components/MetadataItem.cs new file mode 100644 index 0000000..e221908 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/MetadataItem.cs @@ -0,0 +1,409 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.
+ /// + /// + ///
+ /// Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items.
+ ///
+ /// Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
+ /// + ///
+ ///
+ public class MetadataItem + { + + /// + /// The title of the item (e.g. “300” or “The Simpsons”) + /// + [JsonProperty("title")] + public object? Title { get; set; } + + /// + /// The type of the video item, such as `movie`, `episode`, or `clip`. + /// + [JsonProperty("type")] + public object? Type { get; set; } + + /// + /// When present, contains the disc number for a track on multi-disc albums. + /// + [JsonProperty("absoluteIndex")] + public long? AbsoluteIndex { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was added to the library. + /// + [JsonProperty("addedAt")] + public long? AddedAt { get; set; } + + /// + /// When present, the URL for the background artwork for the item. + /// + [JsonProperty("art")] + public object? Art { get; set; } + + /// + /// Some rating systems separate reviewer ratings from audience ratings + /// + [JsonProperty("audienceRating")] + public double? AudienceRating { get; set; } + + /// + /// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). + /// + [JsonProperty("audienceRatingImage")] + public object? AudienceRatingImage { get; set; } + + [JsonProperty("Autotag")] + public List? Autotag { get; set; } + + /// + /// When present, the URL for a banner graphic for the item. + /// + [JsonProperty("banner")] + public object? Banner { get; set; } + + /// + /// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). + /// + [JsonProperty("chapterSource")] + public object? ChapterSource { get; set; } + + /// + /// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). + /// + [JsonProperty("composite")] + public object? Composite { get; set; } + + /// + /// If known, the content rating (e.g. MPAA) for an item. + /// + [JsonProperty("contentRating")] + public object? ContentRating { get; set; } + + [JsonProperty("Country")] + public List? Country { get; set; } + + [JsonProperty("Director")] + public List? Director { get; set; } + + /// + /// When present, the duration for the item, in units of milliseconds. + /// + [JsonProperty("duration")] + public long? Duration { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Filter")] + public List? Filter { get; set; } + + [JsonProperty("Genre")] + public List? Genre { get; set; } + + /// + /// The `art` of the grandparent + /// + [JsonProperty("grandparentArt")] + public string? GrandparentArt { get; set; } + + /// + /// The `hero` of the grandparent + /// + [JsonProperty("grandparentHero")] + public string? GrandparentHero { get; set; } + + /// + /// The `key` of the grandparent + /// + [JsonProperty("grandparentKey")] + public string? GrandparentKey { get; set; } + + /// + /// The `ratingKey` of the grandparent + /// + [JsonProperty("grandparentRatingKey")] + public string? GrandparentRatingKey { get; set; } + + /// + /// The `theme` of the grandparent + /// + [JsonProperty("grandparentTheme")] + public string? GrandparentTheme { get; set; } + + /// + /// The `thumb` of the grandparent + /// + [JsonProperty("grandparentThumb")] + public string? GrandparentThumb { get; set; } + + /// + /// The `title` of the grandparent + /// + [JsonProperty("grandparentTitle")] + public string? GrandparentTitle { get; set; } + + [JsonProperty("Guid")] + public List? Guid { get; set; } + + /// + /// When present, the URL for a hero image for the item. + /// + [JsonProperty("hero")] + public object? Hero { get; set; } + + [JsonProperty("Image")] + public List? Image { get; set; } + + /// + /// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. + /// + [JsonProperty("index")] + public long? Index { get; set; } + + /// + /// The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. + /// + [JsonProperty("key")] + public object? Key { get; set; } + + /// + /// When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. + /// + [JsonProperty("lastViewedAt")] + public long? LastViewedAt { get; set; } + + /// + /// For shows and seasons, contains the number of total episodes. + /// + [JsonProperty("leafCount")] + public long? LeafCount { get; set; } + + [JsonProperty("Media")] + public List? Media { get; set; } + + /// + /// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. + /// + [JsonProperty("originallyAvailableAt")] + public object? OriginallyAvailableAt { get; set; } + + /// + /// When present, used to indicate an item's original title, e.g. a movie's foreign title. + /// + [JsonProperty("originalTitle")] + public object? OriginalTitle { get; set; } + + /// + /// The `hero` of the parent + /// + [JsonProperty("parentHero")] + public string? ParentHero { get; set; } + + /// + /// The `index` of the parent + /// + [JsonProperty("parentIndex")] + public long? ParentIndex { get; set; } + + /// + /// The `key` of the parent + /// + [JsonProperty("parentKey")] + public string? ParentKey { get; set; } + + /// + /// The `ratingKey` of the parent + /// + [JsonProperty("parentRatingKey")] + public string? ParentRatingKey { get; set; } + + /// + /// The `thumb` of the parent + /// + [JsonProperty("parentThumb")] + public string? ParentThumb { get; set; } + + /// + /// The `title` of the parent + /// + [JsonProperty("parentTitle")] + public string? ParentTitle { get; set; } + + /// + /// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. + /// + [JsonProperty("primaryExtraKey")] + public object? PrimaryExtraKey { get; set; } + + /// + /// Prompt to give the user for this directory (such as `Search Movies`) + /// + [JsonProperty("prompt")] + public string? Prompt { get; set; } + + /// + /// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. + /// + [JsonProperty("rating")] + public double? Rating { get; set; } + + [JsonProperty("Rating")] + public List? RatingArray { get; set; } + + /// + /// Number of ratings under this metadata + /// + [JsonProperty("ratingCount")] + public long? RatingCount { get; set; } + + /// + /// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. + /// + [JsonProperty("ratingImage")] + public object? RatingImage { get; set; } + + /// + /// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. + /// + [JsonProperty("ratingKey")] + public object? RatingKey { get; set; } + + [JsonProperty("Role")] + public List? Role { get; set; } + + /// + /// Indicates this is a search directory + /// + [JsonProperty("search")] + public bool? Search { get; set; } + + /// + /// Used by old clients to provide nested menus allowing for primative (but structured) navigation. + /// + [JsonProperty("secondary")] + public bool? Secondary { get; set; } + + /// + /// When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. + /// + [JsonProperty("skipChildren")] + public bool? SkipChildren { get; set; } + + /// + /// When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). + /// + [JsonProperty("skipParent")] + public bool? SkipParent { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Sort")] + public List? Sort { get; set; } + + /// + /// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). + /// + [JsonProperty("studio")] + public object? Studio { get; set; } + + /// + /// The subtype of the video item, such as `photo` when the video item is in a photo library + /// + [JsonProperty("subtype")] + public object? Subtype { get; set; } + + /// + /// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). + /// + [JsonProperty("summary")] + public object? Summary { get; set; } + + /// + /// When present, a pithy one-liner about the item (usually only seen for movies). + /// + [JsonProperty("tagline")] + public object? Tagline { get; set; } + + /// + /// When present, the URL for theme music for the item (usually only for TV shows). + /// + [JsonProperty("theme")] + public object? Theme { get; set; } + + /// + /// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. + /// + [JsonProperty("thumb")] + public object? Thumb { get; set; } + + /// + /// Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). + /// + [JsonProperty("titleSort")] + public object? TitleSort { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). + /// + [JsonProperty("updatedAt")] + public long? UpdatedAt { get; set; } + + /// + /// When the user has rated an item, this contains the user rating + /// + [JsonProperty("userRating")] + public double? UserRating { get; set; } + + /// + /// When a users has completed watched or listened to an item, this attribute contains the number of consumptions. + /// + [JsonProperty("viewCount")] + public long? ViewCount { get; set; } + + /// + /// For shows and seasons, contains the number of viewed episodes. + /// + [JsonProperty("viewedLeafCount")] + public long? ViewedLeafCount { get; set; } + + /// + /// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. + /// + [JsonProperty("viewOffset")] + public long? ViewOffset { get; set; } + + [JsonProperty("Writer")] + public List? Writer { get; set; } + + /// + /// When present, the year associated with the item's release (e.g. release year for a movie). + /// + [JsonProperty("year")] + public long? Year { get; set; } + + [JsonProperty("MetadataItem")] + public List? MetadataItemValue { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Part.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Part.cs new file mode 100644 index 0000000..62f0eb2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Part.cs @@ -0,0 +1,78 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `Part` represents a particular file or "part" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part.
+ /// + /// + /// + /// + ///
+ public class Part + { + + [JsonProperty("audioProfile")] + public object? AudioProfile { get; set; } + + /// + /// The container of the media file, such as `mp4` or `mkv` + /// + [JsonProperty("container")] + public object? Container { get; set; } + + /// + /// The duration of the media item, in milliseconds + /// + [JsonProperty("duration")] + public long? Duration { get; set; } + + /// + /// The local file path at which the part is stored on the server + /// + [JsonProperty("file")] + public object? File { get; set; } + + [JsonProperty("has64bitOffsets")] + public bool? Has64bitOffsets { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + /// + /// The key from which the media can be streamed + /// + [JsonProperty("key")] + public object? Key { get; set; } + + [JsonProperty("optimizedForStreaming")] + public bool? OptimizedForStreaming { get; set; } + + /// + /// The size of the media, in bytes + /// + [JsonProperty("size")] + public long? Size { get; set; } + + [JsonProperty("Stream")] + public List? Stream { get; set; } + + [JsonProperty("videoProfile")] + public object? VideoProfile { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Pivot.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Pivot.cs similarity index 95% rename from LukeHagar/PlexAPI/SDK/Models/Requests/Pivot.cs rename to LukeHagar/PlexAPI/SDK/Models/Components/Pivot.cs index c143ca9..ea96ce1 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Pivot.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Pivot.cs @@ -7,7 +7,7 @@ // //------------------------------------------------------------------------------ #nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests +namespace LukeHagar.PlexAPI.SDK.Models.Components { using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; @@ -15,21 +15,21 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class Pivot { + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("type")] + public string? Type { get; set; } + + [JsonProperty("context")] + public string? Context { get; set; } + [JsonProperty("id")] public string? Id { get; set; } [JsonProperty("key")] public string? Key { get; set; } - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("context")] - public string? Context { get; set; } - [JsonProperty("symbol")] public string? Symbol { get; set; } } diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Player.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Player.cs new file mode 100644 index 0000000..7840adf --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Player.cs @@ -0,0 +1,111 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// Information about the player being used for playback + /// + public class Player + { + + /// + /// The title of the client + /// + [JsonProperty("title")] + public string? Title { get; set; } + + /// + /// The remote address + /// + [JsonProperty("address")] + public string? Address { get; set; } + + /// + /// Indicating if the client is playing from the local LAN + /// + [JsonProperty("local")] + public bool? Local { get; set; } + + /// + /// The identifier of the client + /// + [JsonProperty("machineIdentifier")] + public string? MachineIdentifier { get; set; } + + /// + /// The model of the client + /// + [JsonProperty("model")] + public string? Model { get; set; } + + /// + /// The platform of the client + /// + [JsonProperty("platform")] + public string? Platform { get; set; } + + /// + /// The platformVersion of the client + /// + [JsonProperty("platformVersion")] + public string? PlatformVersion { get; set; } + + /// + /// The product name of the client + /// + [JsonProperty("product")] + public string? Product { get; set; } + + /// + /// Indicating if the client is playing over a relay connection + /// + [JsonProperty("relayed")] + public bool? Relayed { get; set; } + + /// + /// The client's public address + /// + [JsonProperty("remotePublicAddress")] + public string? RemotePublicAddress { get; set; } + + /// + /// Indicating if the client is playing over HTTPS + /// + [JsonProperty("secure")] + public bool? Secure { get; set; } + + /// + /// The client's last reported state + /// + [JsonProperty("state")] + public string? State { get; set; } + + /// + /// The id of the user + /// + [JsonProperty("userID")] + public long? UserID { get; set; } + + /// + /// The vendor of the client + /// + [JsonProperty("vendor")] + public string? Vendor { get; set; } + + /// + /// The version of the client + /// + [JsonProperty("version")] + public string? Version { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/PlaylistType.cs b/LukeHagar/PlexAPI/SDK/Models/Components/PlaylistType.cs new file mode 100644 index 0000000..9b4bbbd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/PlaylistType.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The type of the 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/LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200.cs b/LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200.cs new file mode 100644 index 0000000..facdc20 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class PostResponses200 + { + + [JsonProperty("MediaContainer")] + public PostResponses200MediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200MediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200MediaContainer.cs new file mode 100644 index 0000000..de58f2c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200MediaContainer.cs @@ -0,0 +1,76 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class PostResponses200MediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("color")] + public string? Color { get; set; } + + [JsonProperty("endTimeOffset")] + public long? EndTimeOffset { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + [JsonProperty("startTimeOffset")] + public long? StartTimeOffset { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("type")] + public PostResponses200Type? Type { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200Type.cs b/LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200Type.cs new file mode 100644 index 0000000..f87ab46 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/PostResponses200Type.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum PostResponses200Type + { + [JsonProperty("intro")] + Intro, + [JsonProperty("commercial")] + Commercial, + [JsonProperty("bookmark")] + Bookmark, + [JsonProperty("resume")] + Resume, + [JsonProperty("credit")] + Credit, + } + + public static class PostResponses200TypeExtension + { + public static string Value(this PostResponses200Type value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static PostResponses200Type ToEnum(this string value) + { + foreach(var field in typeof(PostResponses200Type).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 PostResponses200Type) + { + return (PostResponses200Type)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum PostResponses200Type"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Protocol.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Protocol.cs new file mode 100644 index 0000000..7f3124a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Protocol.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum Protocol + { + [JsonProperty("http")] + Http, + [JsonProperty("hls")] + Hls, + [JsonProperty("dash")] + Dash, + } + + public static class ProtocolExtension + { + public static string Value(this Protocol value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Protocol ToEnum(this string value) + { + foreach(var field in typeof(Protocol).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 Protocol) + { + return (Protocol)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Protocol"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/RecommendationsVisibility.cs b/LukeHagar/PlexAPI/SDK/Models/Components/RecommendationsVisibility.cs new file mode 100644 index 0000000..91c4fa5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/RecommendationsVisibility.cs @@ -0,0 +1,72 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The visibility of this hub in recommendations:
+ /// + /// + /// - all: Visible to all users
+ /// - none: Visible to no users
+ /// - admin: Visible to only admin users
+ /// - shared: Visible to shared users
+ /// + ///
+ ///
+ public enum RecommendationsVisibility + { + [JsonProperty("all")] + All, + [JsonProperty("none")] + None, + [JsonProperty("admin")] + Admin, + [JsonProperty("shared")] + Shared, + } + + public static class RecommendationsVisibilityExtension + { + public static string Value(this RecommendationsVisibility value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static RecommendationsVisibility ToEnum(this string value) + { + foreach(var field in typeof(RecommendationsVisibility).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 RecommendationsVisibility) + { + return (RecommendationsVisibility)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum RecommendationsVisibility"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200.cs b/LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200.cs new file mode 100644 index 0000000..210274b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class RequestHandlerSlashGetResponses200 + { + + [JsonProperty("MediaContainer")] + public RequestHandlerSlashGetResponses200MediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200Directory.cs b/LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200Directory.cs new file mode 100644 index 0000000..a37340e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200Directory.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class RequestHandlerSlashGetResponses200Directory + { + + [JsonProperty("count")] + public long? Count { get; set; } + + /// + /// The key where this directory is found + /// + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200MediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200MediaContainer.cs new file mode 100644 index 0000000..6edfa41 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/RequestHandlerSlashGetResponses200MediaContainer.cs @@ -0,0 +1,211 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class RequestHandlerSlashGetResponses200MediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { 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 long? Livetv { get; set; } + + [JsonProperty("machineIdentifier")] + public object? MachineIdentifier { get; set; } + + [JsonProperty("mediaProviders")] + public bool? MediaProviders { get; set; } + + [JsonProperty("multiuser")] + public bool? Multiuser { get; set; } + + [JsonProperty("musicAnalysis")] + public long? MusicAnalysis { get; set; } + + [JsonProperty("myPlex")] + public bool? MyPlex { get; set; } + + [JsonProperty("myPlexMappingState")] + public object? MyPlexMappingState { get; set; } + + [JsonProperty("myPlexSigninState")] + public object? MyPlexSigninState { get; set; } + + [JsonProperty("myPlexSubscription")] + public bool? MyPlexSubscription { get; set; } + + [JsonProperty("myPlexUsername")] + public string? MyPlexUsername { get; set; } + + [JsonProperty("offlineTranscode")] + public object? OfflineTranscode { get; set; } + + /// + /// A comma-separated list of features which are enabled for the server owner + /// + [JsonProperty("ownerFeatures")] + public string? OwnerFeatures { get; set; } + + [JsonProperty("platform")] + public string? Platform { get; set; } + + [JsonProperty("platformVersion")] + public string? PlatformVersion { get; set; } + + [JsonProperty("pluginHost")] + public bool? PluginHost { get; set; } + + [JsonProperty("pushNotifications")] + public bool? PushNotifications { get; set; } + + [JsonProperty("readOnlyLibraries")] + public bool? ReadOnlyLibraries { get; set; } + + [JsonProperty("streamingBrainABRVersion")] + public long? StreamingBrainABRVersion { get; set; } + + [JsonProperty("streamingBrainVersion")] + public long? StreamingBrainVersion { get; set; } + + [JsonProperty("sync")] + public bool? Sync { get; set; } + + [JsonProperty("transcoderActiveVideoSessions")] + public long? TranscoderActiveVideoSessions { get; set; } + + [JsonProperty("transcoderAudio")] + public bool? TranscoderAudio { get; set; } + + [JsonProperty("transcoderLyrics")] + public bool? TranscoderLyrics { get; set; } + + [JsonProperty("transcoderPhoto")] + public bool? TranscoderPhoto { get; set; } + + [JsonProperty("transcoderSubtitles")] + public bool? TranscoderSubtitles { get; set; } + + [JsonProperty("transcoderVideo")] + public bool? TranscoderVideo { get; set; } + + /// + /// The suggested video quality bitrates to present to the user + /// + [JsonProperty("transcoderVideoBitrates")] + public object? TranscoderVideoBitrates { get; set; } + + [JsonProperty("transcoderVideoQualities")] + public string? TranscoderVideoQualities { get; set; } + + /// + /// The suggested video resolutions to the above quality bitrates + /// + [JsonProperty("transcoderVideoResolutions")] + public object? TranscoderVideoResolutions { get; set; } + + [JsonProperty("updatedAt")] + public long? UpdatedAt { get; set; } + + [JsonProperty("updater")] + public bool? Updater { get; set; } + + [JsonProperty("version")] + public string? Version { get; set; } + + [JsonProperty("voiceSearch")] + public bool? VoiceSearch { get; set; } + + [JsonProperty("Directory")] + public List? Directory { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Security.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Security.cs index 7f78381..f996cab 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Components/Security.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Security.cs @@ -15,6 +15,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components { [SpeakeasyMetadata("security:scheme=true,type=apiKey,subType=header,name=X-Plex-Token")] - public string? AccessToken { get; set; } + public string? Token { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Session.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Session.cs new file mode 100644 index 0000000..7d106b7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Session.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// Information about the playback session + /// + public class Session + { + + /// + /// The bandwidth used by this client's playback in kbps + /// + [JsonProperty("bandwidth")] + public long? Bandwidth { get; set; } + + /// + /// The id of the playback session + /// + [JsonProperty("id")] + public string? Id { get; set; } + + /// + /// The location of the client + /// + [JsonProperty("location")] + public SessionLocation? Location { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/SessionLocation.cs b/LukeHagar/PlexAPI/SDK/Models/Components/SessionLocation.cs new file mode 100644 index 0000000..608d774 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/SessionLocation.cs @@ -0,0 +1,60 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The location of the client + /// + public enum SessionLocation + { + [JsonProperty("lan")] + Lan, + [JsonProperty("wan")] + Wan, + } + + public static class SessionLocationExtension + { + public static string Value(this SessionLocation value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static SessionLocation ToEnum(this string value) + { + foreach(var field in typeof(SessionLocation).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 SessionLocation) + { + return (SessionLocation)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum SessionLocation"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Setting.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Setting.cs new file mode 100644 index 0000000..dd7aaa4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Setting.cs @@ -0,0 +1,82 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// A configuration setting or preference + /// + public class Setting + { + + /// + /// The type of the value of this setting + /// + [JsonProperty("type")] + public Models.Components.Type? Type { get; set; } + + /// + /// The default value of this setting + /// + [JsonProperty("default", NullValueHandling = NullValueHandling.Include)] + public Default? Default { get; set; } + + /// + /// Whether the setting is considered advanced and normally hidden from the user + /// + [JsonProperty("advanced")] + public bool? Advanced { get; set; } + + /// + /// The possible values for this setting if restricted. The list is `|` separated with `value:name` entries. + /// + [JsonProperty("enumValues")] + public string? EnumValues { get; set; } + + /// + /// The group name of this setting to aid in display of a hierarchy + /// + [JsonProperty("group")] + public string? Group { get; set; } + + /// + /// Whether the setting is hidden or not + /// + [JsonProperty("hidden")] + public bool? Hidden { get; set; } + + /// + /// The query parameter name for this setting + /// + [JsonProperty("id")] + public string? Id { get; set; } + + /// + /// A user-friendly name for the setting + /// + [JsonProperty("label")] + public string? Label { get; set; } + + /// + /// A description of the setting + /// + [JsonProperty("summary")] + public string? Summary { get; set; } + + /// + /// The current value of this setting + /// + [JsonProperty("value", NullValueHandling = NullValueHandling.Include)] + public Value? Value { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/SlashGetResponses200.cs b/LukeHagar/PlexAPI/SDK/Models/Components/SlashGetResponses200.cs new file mode 100644 index 0000000..cf2a763 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/SlashGetResponses200.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class SlashGetResponses200 + { + + [JsonProperty("MediaContainer")] + public SlashGetResponses200MediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/SlashGetResponses200MediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Components/SlashGetResponses200MediaContainer.cs new file mode 100644 index 0000000..6087ac4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/SlashGetResponses200MediaContainer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class SlashGetResponses200MediaContainer + { + + /// + /// The flavors of directory found here:
+ /// + /// + /// - Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users.
+ /// - Secondary: These are marked with `"secondary": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation.
+ /// - Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `"search": true` which used to be used to allow clients to build search dialogs on the fly. + ///
+ ///
+ [JsonProperty("content")] + public string? Content { get; set; } + + [JsonProperty("allowSync")] + public bool? AllowSync { get; set; } + + [JsonProperty("art")] + public string? Art { get; set; } + + [JsonProperty("Directory")] + public List? Directory { get; set; } + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + [JsonProperty("librarySectionID")] + public long? LibrarySectionID { get; set; } + + [JsonProperty("mediaTagPrefix")] + public string? MediaTagPrefix { get; set; } + + [JsonProperty("mediaTagVersion")] + public long? MediaTagVersion { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + [JsonProperty("sortAsc")] + public bool? SortAsc { get; set; } + + [JsonProperty("thumb")] + public string? Thumb { get; set; } + + [JsonProperty("title1")] + public string? Title1 { get; set; } + + [JsonProperty("viewGroup")] + public string? ViewGroup { get; set; } + + [JsonProperty("viewMode")] + public long? ViewMode { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Sort.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Sort.cs new file mode 100644 index 0000000..1a15f81 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Sort.cs @@ -0,0 +1,105 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Each `Sort` object contains a description of the sort field.
+ /// + /// + /// + /// + ///
+ public class Sort + { + + /// + /// The title of the field. + /// + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("type")] + public string? Type { get; set; } + + [JsonProperty("art")] + public string? Art { get; set; } + + [JsonProperty("content")] + public bool? Content { get; set; } + + [JsonProperty("filter")] + public string? Filter { get; set; } + + [JsonProperty("hasPrefs")] + public bool? HasPrefs { get; set; } + + [JsonProperty("hasStoreServices")] + public bool? HasStoreServices { get; set; } + + [JsonProperty("hubKey")] + public string? HubKey { get; set; } + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The key to use in the sort field to make items sort by this item + /// + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("lastAccessedAt")] + public long? LastAccessedAt { get; set; } + + [JsonProperty("Pivot")] + public List? Pivot { get; set; } + + [JsonProperty("share")] + public long? Share { get; set; } + + [JsonProperty("thumb")] + public string? Thumb { get; set; } + + [JsonProperty("titleBar")] + public string? TitleBar { get; set; } + + /// + /// If present, this sort is the default and in this direction + /// + [JsonProperty("default")] + public SortDefault? Default { get; set; } + + /// + /// This default diction of this sort + /// + [JsonProperty("defaultDirection")] + public DefaultDirection? DefaultDirection { get; set; } + + /// + /// The key for sorting this field in reverse order + /// + [JsonProperty("descKey")] + public string? DescKey { get; set; } + + /// + /// The key to use to get items sorted by this field and indexed by the first character + /// + [JsonProperty("firstCharacterKey")] + public string? FirstCharacterKey { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/SortDefault.cs b/LukeHagar/PlexAPI/SDK/Models/Components/SortDefault.cs new file mode 100644 index 0000000..a68f324 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/SortDefault.cs @@ -0,0 +1,60 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// If present, this sort is the default and in this direction + /// + public enum SortDefault + { + [JsonProperty("asc")] + Asc, + [JsonProperty("desc")] + Desc, + } + + public static class SortDefaultExtension + { + public static string Value(this SortDefault value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static SortDefault ToEnum(this string value) + { + foreach(var field in typeof(SortDefault).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 SortDefault) + { + return (SortDefault)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum SortDefault"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/SortPivot.cs b/LukeHagar/PlexAPI/SDK/Models/Components/SortPivot.cs new file mode 100644 index 0000000..2a98b8a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/SortPivot.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class SortPivot + { + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("type")] + public string? Type { get; set; } + + [JsonProperty("context")] + public string? Context { get; set; } + + [JsonProperty("id")] + public string? Id { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("symbol")] + public string? Symbol { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Status.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Status.cs new file mode 100644 index 0000000..17f6574 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Status.cs @@ -0,0 +1,69 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum Status + { + [JsonProperty("inactive")] + Inactive, + [JsonProperty("scheduled")] + Scheduled, + [JsonProperty("inprogress")] + Inprogress, + [JsonProperty("complete")] + Complete, + [JsonProperty("cancelled")] + Cancelled, + [JsonProperty("error")] + Error, + [JsonProperty("postprocessing")] + Postprocessing, + [JsonProperty("paused")] + Paused, + } + + public static class StatusExtension + { + public static string Value(this Status value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Status ToEnum(this string value) + { + foreach(var field in typeof(Status).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 Status) + { + return (Status)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Status"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Stream.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Stream.cs new file mode 100644 index 0000000..a7fab92 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Stream.cs @@ -0,0 +1,137 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization).
+ /// + /// + /// + /// + ///
+ public class Stream + { + + [JsonProperty("default")] + public bool? Default { get; set; } + + [JsonProperty("audioChannelLayout")] + public object? AudioChannelLayout { get; set; } + + [JsonProperty("bitDepth")] + public long? BitDepth { get; set; } + + [JsonProperty("bitrate")] + public long? Bitrate { get; set; } + + /// + /// For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video. + /// + [JsonProperty("canAutoSync")] + public bool? CanAutoSync { get; set; } + + [JsonProperty("chromaLocation")] + public object? ChromaLocation { get; set; } + + [JsonProperty("chromaSubsampling")] + public object? ChromaSubsampling { get; set; } + + /// + /// The codec of the stream, such as `h264` or `aac` + /// + [JsonProperty("codec")] + public object? Codec { get; set; } + + [JsonProperty("colorPrimaries")] + public object? ColorPrimaries { get; set; } + + [JsonProperty("colorRange")] + public object? ColorRange { get; set; } + + [JsonProperty("colorSpace")] + public object? ColorSpace { get; set; } + + [JsonProperty("colorTrc")] + public object? ColorTrc { get; set; } + + /// + /// A friendly name for the stream, often comprised of the language and codec information + /// + [JsonProperty("displayTitle")] + public object? DisplayTitle { get; set; } + + [JsonProperty("frameRate")] + public double? FrameRate { get; set; } + + [JsonProperty("hasScalingMatrix")] + public object? HasScalingMatrix { get; set; } + + [JsonProperty("height")] + public long? Height { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + /// + /// If the stream is part of the `Part` and not an external resource, the index of the stream within that part + /// + [JsonProperty("index")] + public long? Index { get; set; } + + /// + /// If the stream is independently streamable, the key from which it can be streamed + /// + [JsonProperty("key")] + public object? Key { get; set; } + + [JsonProperty("language")] + public object? Language { get; set; } + + /// + /// The three character language code for the stream contents + /// + [JsonProperty("languageCode")] + public object? LanguageCode { get; set; } + + [JsonProperty("level")] + public long? Level { get; set; } + + [JsonProperty("profile")] + public object? Profile { get; set; } + + [JsonProperty("refFrames")] + public long? RefFrames { get; set; } + + [JsonProperty("samplingRate")] + public long? SamplingRate { get; set; } + + [JsonProperty("selected")] + public bool? Selected { get; set; } + + [JsonProperty("streamIdentifier")] + public long? StreamIdentifier { get; set; } + + /// + /// A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics + /// + [JsonProperty("streamType")] + public long? StreamType { get; set; } + + [JsonProperty("width")] + public long? Width { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Subtitles.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Subtitles.cs new file mode 100644 index 0000000..86f2742 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Subtitles.cs @@ -0,0 +1,67 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum Subtitles + { + [JsonProperty("auto")] + Auto, + [JsonProperty("burn")] + Burn, + [JsonProperty("none")] + None, + [JsonProperty("sidecar")] + Sidecar, + [JsonProperty("embedded")] + Embedded, + [JsonProperty("segmented")] + Segmented, + [JsonProperty("unknown")] + Unknown, + } + + public static class SubtitlesExtension + { + public static string Value(this Subtitles value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Subtitles ToEnum(this string value) + { + foreach(var field in typeof(Subtitles).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 Subtitles) + { + return (Subtitles)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Subtitles"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Tag.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Tag.cs new file mode 100644 index 0000000..d09fed2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Tag.cs @@ -0,0 +1,70 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// A variety of extra information about a metadata item is included as tags. These tags use their own element names such as `Genre`, `Writer`, `Directory`, and `Role`. Individual tag types may introduce their own extra attributes.
+ /// + /// + /// + /// + ///
+ public class Tag + { + + /// + /// Measure of the confidence of an automatic tag + /// + [JsonProperty("confidence")] + public double? Confidence { get; set; } + + [JsonProperty("context")] + public string? Context { get; set; } + + /// + /// A filter parameter that can be used to query for more content that matches this tag value. + /// + [JsonProperty("filter")] + public object? Filter { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + [JsonProperty("ratingKey")] + public string? RatingKey { get; set; } + + /// + /// The role this actor played + /// + [JsonProperty("role")] + public object? Role { get; set; } + + /// + /// The value of the tag (the name) + /// + [JsonProperty("tag")] + public object? TagValue { get; set; } + + /// + /// Plex identifier for this tag which can be used to fetch additional information from plex.tv + /// + [JsonProperty("tagKey")] + public object? TagKey { get; set; } + + [JsonProperty("tagType")] + public long? TagType { get; set; } + + [JsonProperty("thumb")] + public object? Thumb { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/TranscodeSession.cs b/LukeHagar/PlexAPI/SDK/Models/Components/TranscodeSession.cs new file mode 100644 index 0000000..4322fa6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/TranscodeSession.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// The transcode session if item is currently being transcoded + /// + public class TranscodeSession + { + + [JsonProperty("complete")] + public bool? Complete { get; set; } + + [JsonProperty("context")] + public string? Context { get; set; } + + [JsonProperty("duration")] + public long? Duration { get; set; } + + [JsonProperty("error")] + public bool? Error { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("progress")] + public double? Progress { get; set; } + + [JsonProperty("protocol")] + public string? Protocol { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + [JsonProperty("sourceAudioCodec")] + public string? SourceAudioCodec { get; set; } + + [JsonProperty("sourceVideoCodec")] + public string? SourceVideoCodec { get; set; } + + [JsonProperty("speed")] + public double? Speed { get; set; } + + [JsonProperty("throttled")] + public bool? Throttled { get; set; } + + [JsonProperty("transcodeHwFullPipeline")] + public bool? TranscodeHwFullPipeline { get; set; } + + [JsonProperty("transcodeHwRequested")] + public bool? TranscodeHwRequested { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/TranscodeType.cs b/LukeHagar/PlexAPI/SDK/Models/Components/TranscodeType.cs new file mode 100644 index 0000000..3d77132 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/TranscodeType.cs @@ -0,0 +1,61 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum TranscodeType + { + [JsonProperty("video")] + Video, + [JsonProperty("music")] + Music, + [JsonProperty("audio")] + Audio, + [JsonProperty("subtitles")] + Subtitles, + } + + public static class TranscodeTypeExtension + { + public static string Value(this TranscodeType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static TranscodeType ToEnum(this string value) + { + foreach(var field in typeof(TranscodeType).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 TranscodeType) + { + return (TranscodeType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum TranscodeType"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Type.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Type.cs new file mode 100644 index 0000000..80fc50f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Type.cs @@ -0,0 +1,64 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The type of the value of this setting + /// + public enum Type + { + [JsonProperty("bool")] + Bool, + [JsonProperty("int")] + Int, + [JsonProperty("text")] + Text, + [JsonProperty("double")] + Double, + } + + 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/LukeHagar/PlexAPI/SDK/Models/Components/User.cs b/LukeHagar/PlexAPI/SDK/Models/Components/User.cs new file mode 100644 index 0000000..984d7e4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/User.cs @@ -0,0 +1,39 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// The user playing the content + /// + public class User + { + + /// + /// The username + /// + [JsonProperty("title")] + public string? Title { get; set; } + + /// + /// The id of the user + /// + [JsonProperty("id")] + public string? Id { get; set; } + + /// + /// Thumb image to display for the user + /// + [JsonProperty("thumb")] + public string? Thumb { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Components/Value.cs b/LukeHagar/PlexAPI/SDK/Models/Components/Value.cs new file mode 100644 index 0000000..dd7a00c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Components/Value.cs @@ -0,0 +1,207 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Components +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + using System; + using System.Collections.Generic; + using System.Numerics; + using System.Reflection; + + public class ValueType + { + private ValueType(string value) { Value = value; } + + public string Value { get; private set; } + + public static ValueType Str { get { return new ValueType("str"); } } + + public static ValueType Number { get { return new ValueType("number"); } } + + public static ValueType Boolean { get { return new ValueType("boolean"); } } + + public override string ToString() { return Value; } + public static implicit operator String(ValueType v) { return v.Value; } + public static ValueType FromString(string v) { + switch(v) { + case "str": return Str; + case "number": return Number; + case "boolean": return Boolean; + default: throw new ArgumentException("Invalid value for ValueType"); + } + } + public override bool Equals(object? obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + return Value.Equals(((ValueType)obj).Value); + } + + public override int GetHashCode() + { + return Value.GetHashCode(); + } + } + + + /// + /// The current value of this setting + /// + [JsonConverter(typeof(Value.ValueConverter))] + public class Value + { + public Value(ValueType type) + { + Type = type; + } + + [SpeakeasyMetadata("form:explode=true")] + public string? Str { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public double? Number { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public bool? Boolean { get; set; } + + public ValueType Type { get; set; } + public static Value CreateStr(string str) + { + ValueType typ = ValueType.Str; + + Value res = new Value(typ); + res.Str = str; + return res; + } + public static Value CreateNumber(double number) + { + ValueType typ = ValueType.Number; + + Value res = new Value(typ); + res.Number = number; + return res; + } + public static Value CreateBoolean(bool boolean) + { + ValueType typ = ValueType.Boolean; + + Value res = new Value(typ); + res.Boolean = boolean; + return res; + } + + public class ValueConverter : JsonConverter + { + public override bool CanConvert(System.Type objectType) => objectType == typeof(Value); + + public override bool CanRead => true; + + public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + { + throw new InvalidOperationException("Received unexpected null JSON value"); + } + + var json = JRaw.Create(reader).ToString(); + var fallbackCandidates = new List<(System.Type, object, string)>(); + + if (json[0] == '"' && json[^1] == '"'){ + return new Value(ValueType.Str) + { + Str = json[1..^1] + }; + } + + try + { + var converted = Convert.ToDouble(json); + return new Value(ValueType.Number) + { + Number = converted + }; + } + catch (System.FormatException) + { + // try next option + } + + try + { + var converted = Convert.ToBoolean(json); + return new Value(ValueType.Boolean) + { + Boolean = converted + }; + } + catch (System.FormatException) + { + // try next option + } + + if (fallbackCandidates.Count > 0) + { + fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); + foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) + { + try + { + return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next fallback option + } + catch (Exception) + { + throw; + } + } + } + + throw new InvalidOperationException("Could not deserialize into any supported types."); + } + + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) + { + if (value == null) + { + throw new InvalidOperationException("Unexpected null JSON value."); + } + + Value res = (Value)value; + + if (res.Str != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Str)); + return; + } + + if (res.Number != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Number)); + return; + } + + if (res.Boolean != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); + return; + } + } + + } + + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsBadRequest.cs deleted file mode 100644 index 07936e7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class AddPlaylistContentsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class AddPlaylistContentsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public AddPlaylistContentsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use AddPlaylistContentsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public AddPlaylistContentsBadRequest( - AddPlaylistContentsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsErrors.cs deleted file mode 100644 index bfcbde7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class AddPlaylistContentsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsPlaylistsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsPlaylistsErrors.cs deleted file mode 100644 index edcff97..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsPlaylistsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class AddPlaylistContentsPlaylistsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsUnauthorized.cs deleted file mode 100644 index 3f4b332..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class AddPlaylistContentsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class AddPlaylistContentsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public AddPlaylistContentsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use AddPlaylistContentsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public AddPlaylistContentsUnauthorized( - AddPlaylistContentsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesBadRequest.cs deleted file mode 100644 index dafda25..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class ApplyUpdatesBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class ApplyUpdatesBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public ApplyUpdatesBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use ApplyUpdatesBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public ApplyUpdatesBadRequest( - ApplyUpdatesBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesErrors.cs deleted file mode 100644 index 560a50b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class ApplyUpdatesErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesUnauthorized.cs deleted file mode 100644 index 5c9da4e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class ApplyUpdatesUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class ApplyUpdatesUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public ApplyUpdatesUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use ApplyUpdatesUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public ApplyUpdatesUnauthorized( - ApplyUpdatesUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesUpdaterErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesUpdaterErrors.cs deleted file mode 100644 index 4c30df5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesUpdaterErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class ApplyUpdatesUpdaterErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesActivitiesErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesActivitiesErrors.cs deleted file mode 100644 index 1b2a6ed..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesActivitiesErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class CancelServerActivitiesActivitiesErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesBadRequest.cs deleted file mode 100644 index f85cb89..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class CancelServerActivitiesBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class CancelServerActivitiesBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public CancelServerActivitiesBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use CancelServerActivitiesBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public CancelServerActivitiesBadRequest( - CancelServerActivitiesBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesErrors.cs deleted file mode 100644 index ef7acb5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class CancelServerActivitiesErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesUnauthorized.cs deleted file mode 100644 index a4cd9d3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class CancelServerActivitiesUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class CancelServerActivitiesUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public CancelServerActivitiesUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use CancelServerActivitiesUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public CancelServerActivitiesUnauthorized( - CancelServerActivitiesUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesBadRequest.cs deleted file mode 100644 index 468917f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class CheckForUpdatesBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class CheckForUpdatesBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public CheckForUpdatesBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use CheckForUpdatesBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public CheckForUpdatesBadRequest( - CheckForUpdatesBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesErrors.cs deleted file mode 100644 index e17e538..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class CheckForUpdatesErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesUnauthorized.cs deleted file mode 100644 index 1ad8164..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class CheckForUpdatesUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class CheckForUpdatesUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public CheckForUpdatesUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use CheckForUpdatesUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public CheckForUpdatesUnauthorized( - CheckForUpdatesUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesUpdaterErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesUpdaterErrors.cs deleted file mode 100644 index 3270e75..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesUpdaterErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class CheckForUpdatesUpdaterErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsBadRequest.cs deleted file mode 100644 index de06e8f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class ClearPlaylistContentsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class ClearPlaylistContentsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public ClearPlaylistContentsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use ClearPlaylistContentsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public ClearPlaylistContentsBadRequest( - ClearPlaylistContentsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsErrors.cs deleted file mode 100644 index b5158b4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class ClearPlaylistContentsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsPlaylistsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsPlaylistsErrors.cs deleted file mode 100644 index c807472..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsPlaylistsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class ClearPlaylistContentsPlaylistsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsUnauthorized.cs deleted file mode 100644 index 2f30e4e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class ClearPlaylistContentsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class ClearPlaylistContentsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public ClearPlaylistContentsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use ClearPlaylistContentsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public ClearPlaylistContentsUnauthorized( - ClearPlaylistContentsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistBadRequest.cs deleted file mode 100644 index 2812584..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class CreatePlaylistBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class CreatePlaylistBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public CreatePlaylistBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use CreatePlaylistBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public CreatePlaylistBadRequest( - CreatePlaylistBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistErrors.cs deleted file mode 100644 index 93f374a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class CreatePlaylistErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistPlaylistsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistPlaylistsErrors.cs deleted file mode 100644 index 7926567..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistPlaylistsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class CreatePlaylistPlaylistsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistUnauthorized.cs deleted file mode 100644 index 99de2fd..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class CreatePlaylistUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class CreatePlaylistUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public CreatePlaylistUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use CreatePlaylistUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public CreatePlaylistUnauthorized( - CreatePlaylistUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryBadRequest.cs deleted file mode 100644 index f72dba9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class DeleteLibraryBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class DeleteLibraryBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public DeleteLibraryBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use DeleteLibraryBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public DeleteLibraryBadRequest( - DeleteLibraryBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryErrors.cs deleted file mode 100644 index a0720ad..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class DeleteLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryLibraryErrors.cs deleted file mode 100644 index 196cee7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class DeleteLibraryLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryUnauthorized.cs deleted file mode 100644 index 20ba7cd..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class DeleteLibraryUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class DeleteLibraryUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public DeleteLibraryUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use DeleteLibraryUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public DeleteLibraryUnauthorized( - DeleteLibraryUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistBadRequest.cs deleted file mode 100644 index 611c039..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class DeletePlaylistBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class DeletePlaylistBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public DeletePlaylistBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use DeletePlaylistBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public DeletePlaylistBadRequest( - DeletePlaylistBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistErrors.cs deleted file mode 100644 index 867658c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class DeletePlaylistErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistPlaylistsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistPlaylistsErrors.cs deleted file mode 100644 index 3bef1e9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistPlaylistsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class DeletePlaylistPlaylistsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistUnauthorized.cs deleted file mode 100644 index 8d70cf2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class DeletePlaylistUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class DeletePlaylistUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public DeletePlaylistUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use DeletePlaylistUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public DeletePlaylistUnauthorized( - DeletePlaylistUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailBadRequest.cs deleted file mode 100644 index 329ae8a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class EnablePaperTrailBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class EnablePaperTrailBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public EnablePaperTrailBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use EnablePaperTrailBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public EnablePaperTrailBadRequest( - EnablePaperTrailBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailErrors.cs deleted file mode 100644 index bedb0c0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class EnablePaperTrailErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailLogErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailLogErrors.cs deleted file mode 100644 index 15ba331..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailLogErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class EnablePaperTrailLogErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailUnauthorized.cs deleted file mode 100644 index 357827b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class EnablePaperTrailUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class EnablePaperTrailUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public EnablePaperTrailUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use EnablePaperTrailUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public EnablePaperTrailUnauthorized( - EnablePaperTrailUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/Errors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/Errors.cs deleted file mode 100644 index 420cda7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/Errors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Errors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryBadRequest.cs deleted file mode 100644 index 2b3a606..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetActorsLibraryBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetActorsLibraryBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetActorsLibraryBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetActorsLibraryBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetActorsLibraryBadRequest( - GetActorsLibraryBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryErrors.cs deleted file mode 100644 index 24e3244..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetActorsLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryLibraryErrors.cs deleted file mode 100644 index b038b60..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetActorsLibraryLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryUnauthorized.cs deleted file mode 100644 index 9b85419..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetActorsLibraryUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetActorsLibraryUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetActorsLibraryUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetActorsLibraryUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetActorsLibraryUnauthorized( - GetActorsLibraryUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesBadRequest.cs deleted file mode 100644 index bea5532..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetAllLibrariesBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetAllLibrariesBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetAllLibrariesBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetAllLibrariesBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetAllLibrariesBadRequest( - GetAllLibrariesBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesErrors.cs deleted file mode 100644 index 4df8756..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetAllLibrariesErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesLibraryErrors.cs deleted file mode 100644 index ac3b39a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetAllLibrariesLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesUnauthorized.cs deleted file mode 100644 index 89fe9ba..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetAllLibrariesUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetAllLibrariesUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetAllLibrariesUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetAllLibrariesUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetAllLibrariesUnauthorized( - GetAllLibrariesUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsBadRequest.cs deleted file mode 100644 index 94c64aa..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetAvailableClientsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetAvailableClientsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetAvailableClientsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetAvailableClientsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetAvailableClientsBadRequest( - GetAvailableClientsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsErrors.cs deleted file mode 100644 index 04a766f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetAvailableClientsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsServerErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsServerErrors.cs deleted file mode 100644 index 82cd077..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsServerErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetAvailableClientsServerErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsUnauthorized.cs deleted file mode 100644 index 696f8da..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetAvailableClientsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetAvailableClientsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetAvailableClientsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetAvailableClientsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetAvailableClientsUnauthorized( - GetAvailableClientsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsBadRequest.cs deleted file mode 100644 index 6b8c80b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetBandwidthStatisticsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetBandwidthStatisticsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetBandwidthStatisticsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetBandwidthStatisticsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetBandwidthStatisticsBadRequest( - GetBandwidthStatisticsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsErrors.cs deleted file mode 100644 index 044ba5c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetBandwidthStatisticsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsStatisticsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsStatisticsErrors.cs deleted file mode 100644 index 3ed5a16..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsStatisticsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetBandwidthStatisticsStatisticsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsUnauthorized.cs deleted file mode 100644 index be6b713..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetBandwidthStatisticsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetBandwidthStatisticsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetBandwidthStatisticsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetBandwidthStatisticsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetBandwidthStatisticsUnauthorized( - GetBandwidthStatisticsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageBadRequest.cs deleted file mode 100644 index e52eb8c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetBannerImageBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetBannerImageBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetBannerImageBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetBannerImageBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetBannerImageBadRequest( - GetBannerImageBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageErrors.cs deleted file mode 100644 index b8c9603..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetBannerImageErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageMediaErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageMediaErrors.cs deleted file mode 100644 index b8b37a8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageMediaErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetBannerImageMediaErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageUnauthorized.cs deleted file mode 100644 index cc7d9db..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetBannerImageUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetBannerImageUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetBannerImageUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetBannerImageUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetBannerImageUnauthorized( - GetBannerImageUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksBadRequest.cs deleted file mode 100644 index ff9610f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetButlerTasksBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetButlerTasksBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetButlerTasksBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetButlerTasksBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetButlerTasksBadRequest( - GetButlerTasksBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksButlerErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksButlerErrors.cs deleted file mode 100644 index b4749ec..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksButlerErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetButlerTasksButlerErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksErrors.cs deleted file mode 100644 index e10155f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetButlerTasksErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksUnauthorized.cs deleted file mode 100644 index ec2411f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetButlerTasksUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetButlerTasksUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetButlerTasksUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetButlerTasksUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetButlerTasksUnauthorized( - GetButlerTasksUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataBadRequest.cs deleted file mode 100644 index f4c82f9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetCompanionsDataBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetCompanionsDataBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetCompanionsDataBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetCompanionsDataBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetCompanionsDataBadRequest( - GetCompanionsDataBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataErrors.cs deleted file mode 100644 index 61bf0d0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetCompanionsDataErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataPlexErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataPlexErrors.cs deleted file mode 100644 index d3ba652..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataPlexErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetCompanionsDataPlexErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataUnauthorized.cs deleted file mode 100644 index e48df4c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetCompanionsDataUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetCompanionsDataUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetCompanionsDataUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetCompanionsDataUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetCompanionsDataUnauthorized( - GetCompanionsDataUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryBadRequest.cs deleted file mode 100644 index e42f8ee..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetCountriesLibraryBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetCountriesLibraryBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetCountriesLibraryBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetCountriesLibraryBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetCountriesLibraryBadRequest( - GetCountriesLibraryBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryErrors.cs deleted file mode 100644 index e42a14f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetCountriesLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryLibraryErrors.cs deleted file mode 100644 index afdb9ff..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetCountriesLibraryLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryUnauthorized.cs deleted file mode 100644 index 7d70925..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetCountriesLibraryUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetCountriesLibraryUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetCountriesLibraryUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetCountriesLibraryUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetCountriesLibraryUnauthorized( - GetCountriesLibraryUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesBadRequest.cs deleted file mode 100644 index 85534ae..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetDevicesBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetDevicesBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetDevicesBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetDevicesBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetDevicesBadRequest( - GetDevicesBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesErrors.cs deleted file mode 100644 index c5eb9f5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetDevicesErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesServerErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesServerErrors.cs deleted file mode 100644 index c448016..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesServerErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetDevicesServerErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesUnauthorized.cs deleted file mode 100644 index a9fd14a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetDevicesUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetDevicesUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetDevicesUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetDevicesUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetDevicesUnauthorized( - GetDevicesUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashBadRequest.cs deleted file mode 100644 index 35dceb5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetFileHashBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetFileHashBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetFileHashBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetFileHashBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetFileHashBadRequest( - GetFileHashBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashErrors.cs deleted file mode 100644 index 0dad8cf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetFileHashErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashLibraryErrors.cs deleted file mode 100644 index 2874277..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetFileHashLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashUnauthorized.cs deleted file mode 100644 index eda5b59..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetFileHashUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetFileHashUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetFileHashUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetFileHashUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetFileHashUnauthorized( - GetFileHashUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryBadRequest.cs deleted file mode 100644 index a02d6b9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetGenresLibraryBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetGenresLibraryBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetGenresLibraryBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetGenresLibraryBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetGenresLibraryBadRequest( - GetGenresLibraryBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryErrors.cs deleted file mode 100644 index 4e75988..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetGenresLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryLibraryErrors.cs deleted file mode 100644 index 217387f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetGenresLibraryLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryUnauthorized.cs deleted file mode 100644 index 89ec64a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetGenresLibraryUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetGenresLibraryUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetGenresLibraryUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetGenresLibraryUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetGenresLibraryUnauthorized( - GetGenresLibraryUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataBadRequest.cs deleted file mode 100644 index 258b4c1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetGeoDataBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetGeoDataBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetGeoDataBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetGeoDataBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetGeoDataBadRequest( - GetGeoDataBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataErrors.cs deleted file mode 100644 index 47c1efb..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetGeoDataErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataPlexErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataPlexErrors.cs deleted file mode 100644 index a81be48..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataPlexErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetGeoDataPlexErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataUnauthorized.cs deleted file mode 100644 index cb5f4e1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetGeoDataUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetGeoDataUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetGeoDataUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetGeoDataUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetGeoDataUnauthorized( - GetGeoDataUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsBadRequest.cs deleted file mode 100644 index b0c842d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetGlobalHubsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetGlobalHubsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetGlobalHubsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetGlobalHubsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetGlobalHubsBadRequest( - GetGlobalHubsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsErrors.cs deleted file mode 100644 index f241bcc..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetGlobalHubsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsHubsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsHubsErrors.cs deleted file mode 100644 index 44e9f7e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsHubsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetGlobalHubsHubsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsUnauthorized.cs deleted file mode 100644 index 2b7a473..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetGlobalHubsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetGlobalHubsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetGlobalHubsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetGlobalHubsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetGlobalHubsUnauthorized( - GetGlobalHubsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataBadRequest.cs deleted file mode 100644 index 50ea2f9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetHomeDataBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetHomeDataBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetHomeDataBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetHomeDataBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetHomeDataBadRequest( - GetHomeDataBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataErrors.cs deleted file mode 100644 index b386cd2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetHomeDataErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataPlexErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataPlexErrors.cs deleted file mode 100644 index 0201df9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataPlexErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetHomeDataPlexErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataUnauthorized.cs deleted file mode 100644 index 1ecd07c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetHomeDataUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetHomeDataUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetHomeDataUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetHomeDataUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetHomeDataUnauthorized( - GetHomeDataUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsBadRequest.cs deleted file mode 100644 index 8e47d71..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetLibraryDetailsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetLibraryDetailsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetLibraryDetailsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetLibraryDetailsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetLibraryDetailsBadRequest( - GetLibraryDetailsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsErrors.cs deleted file mode 100644 index 8257d45..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryDetailsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsLibraryErrors.cs deleted file mode 100644 index 29b61c7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryDetailsLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsUnauthorized.cs deleted file mode 100644 index d089ef3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetLibraryDetailsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetLibraryDetailsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetLibraryDetailsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetLibraryDetailsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetLibraryDetailsUnauthorized( - GetLibraryDetailsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsBadRequest.cs deleted file mode 100644 index 8d9b120..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetLibraryHubsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetLibraryHubsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetLibraryHubsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetLibraryHubsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetLibraryHubsBadRequest( - GetLibraryHubsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsErrors.cs deleted file mode 100644 index 4b750e0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryHubsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsHubsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsHubsErrors.cs deleted file mode 100644 index 84b7d45..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsHubsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryHubsHubsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsUnauthorized.cs deleted file mode 100644 index c7ba10c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetLibraryHubsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetLibraryHubsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetLibraryHubsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetLibraryHubsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetLibraryHubsUnauthorized( - GetLibraryHubsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsBadRequest.cs deleted file mode 100644 index 5599666..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetLibraryItemsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetLibraryItemsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetLibraryItemsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetLibraryItemsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetLibraryItemsBadRequest( - GetLibraryItemsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsErrors.cs deleted file mode 100644 index 3743e0e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsLibraryErrors.cs deleted file mode 100644 index 05f178b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsUnauthorized.cs deleted file mode 100644 index 8bad1b0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetLibraryItemsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetLibraryItemsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetLibraryItemsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetLibraryItemsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetLibraryItemsUnauthorized( - GetLibraryItemsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllBadRequest.cs deleted file mode 100644 index 1988c3d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetLibrarySectionsAllBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetLibrarySectionsAllBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetLibrarySectionsAllBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetLibrarySectionsAllBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetLibrarySectionsAllBadRequest( - GetLibrarySectionsAllBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllErrors.cs deleted file mode 100644 index b600d9a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllLibraryErrors.cs deleted file mode 100644 index d05a1cd..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllUnauthorized.cs deleted file mode 100644 index a171728..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetLibrarySectionsAllUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetLibrarySectionsAllUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetLibrarySectionsAllUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetLibrarySectionsAllUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetLibrarySectionsAllUnauthorized( - GetLibrarySectionsAllUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataBadRequest.cs deleted file mode 100644 index cb1dda8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetMediaMetaDataBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetMediaMetaDataBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetMediaMetaDataBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetMediaMetaDataBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetMediaMetaDataBadRequest( - GetMediaMetaDataBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataErrors.cs deleted file mode 100644 index d1b10f8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataLibraryErrors.cs deleted file mode 100644 index ff2499d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataUnauthorized.cs deleted file mode 100644 index c0082be..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetMediaMetaDataUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetMediaMetaDataUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetMediaMetaDataUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetMediaMetaDataUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetMediaMetaDataUnauthorized( - GetMediaMetaDataUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersBadRequest.cs deleted file mode 100644 index 9b33b1d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetMediaProvidersBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetMediaProvidersBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetMediaProvidersBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetMediaProvidersBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetMediaProvidersBadRequest( - GetMediaProvidersBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersErrors.cs deleted file mode 100644 index 6c4b0b5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaProvidersErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersServerErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersServerErrors.cs deleted file mode 100644 index 3bd18f0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersServerErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaProvidersServerErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersUnauthorized.cs deleted file mode 100644 index a911ba1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetMediaProvidersUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetMediaProvidersUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetMediaProvidersUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetMediaProvidersUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetMediaProvidersUnauthorized( - GetMediaProvidersUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenBadRequest.cs deleted file mode 100644 index de27fd2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetMetadataChildrenBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetMetadataChildrenBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetMetadataChildrenBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetMetadataChildrenBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetMetadataChildrenBadRequest( - GetMetadataChildrenBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenErrors.cs deleted file mode 100644 index a973602..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMetadataChildrenErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenLibraryErrors.cs deleted file mode 100644 index 7afae73..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMetadataChildrenLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenUnauthorized.cs deleted file mode 100644 index 4da851f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetMetadataChildrenUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetMetadataChildrenUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetMetadataChildrenUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetMetadataChildrenUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetMetadataChildrenUnauthorized( - GetMetadataChildrenUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountBadRequest.cs deleted file mode 100644 index 957ba0f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetMyPlexAccountBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetMyPlexAccountBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetMyPlexAccountBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetMyPlexAccountBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetMyPlexAccountBadRequest( - GetMyPlexAccountBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountErrors.cs deleted file mode 100644 index e29e27d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMyPlexAccountErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountServerErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountServerErrors.cs deleted file mode 100644 index 20c3684..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountServerErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMyPlexAccountServerErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountUnauthorized.cs deleted file mode 100644 index 59b80d7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetMyPlexAccountUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetMyPlexAccountUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetMyPlexAccountUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetMyPlexAccountUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetMyPlexAccountUnauthorized( - GetMyPlexAccountUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPinBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPinBadRequest.cs deleted file mode 100644 index 811cd5e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPinBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetPinBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetPinBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetPinBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetPinBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetPinBadRequest( - GetPinBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPinErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPinErrors.cs deleted file mode 100644 index b39ee92..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPinErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPinErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistBadRequest.cs deleted file mode 100644 index 51ba7ed..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetPlaylistBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetPlaylistBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetPlaylistBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetPlaylistBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetPlaylistBadRequest( - GetPlaylistBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsBadRequest.cs deleted file mode 100644 index 077d89a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetPlaylistContentsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetPlaylistContentsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetPlaylistContentsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetPlaylistContentsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetPlaylistContentsBadRequest( - GetPlaylistContentsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsErrors.cs deleted file mode 100644 index 32e3c8b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistContentsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsPlaylistsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsPlaylistsErrors.cs deleted file mode 100644 index 75357b0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsPlaylistsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistContentsPlaylistsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsUnauthorized.cs deleted file mode 100644 index 7ae2a75..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetPlaylistContentsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetPlaylistContentsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetPlaylistContentsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetPlaylistContentsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetPlaylistContentsUnauthorized( - GetPlaylistContentsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistErrors.cs deleted file mode 100644 index d97d8ed..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistPlaylistsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistPlaylistsErrors.cs deleted file mode 100644 index f0169ad..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistPlaylistsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistPlaylistsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistUnauthorized.cs deleted file mode 100644 index dfa213f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetPlaylistUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetPlaylistUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetPlaylistUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetPlaylistUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetPlaylistUnauthorized( - GetPlaylistUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsBadRequest.cs deleted file mode 100644 index 8d7a0f6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetPlaylistsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetPlaylistsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetPlaylistsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetPlaylistsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetPlaylistsBadRequest( - GetPlaylistsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsErrors.cs deleted file mode 100644 index 7ceeaf6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsPlaylistsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsPlaylistsErrors.cs deleted file mode 100644 index 63b4a3a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsPlaylistsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistsPlaylistsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsUnauthorized.cs deleted file mode 100644 index b9a2ffc..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetPlaylistsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetPlaylistsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetPlaylistsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetPlaylistsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetPlaylistsUnauthorized( - GetPlaylistsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryBadRequest.cs deleted file mode 100644 index 704a9b7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetRecentlyAddedLibraryBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetRecentlyAddedLibraryBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetRecentlyAddedLibraryBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetRecentlyAddedLibraryBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetRecentlyAddedLibraryBadRequest( - GetRecentlyAddedLibraryBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryErrors.cs deleted file mode 100644 index f9002fa..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryLibraryErrors.cs deleted file mode 100644 index ac38ae5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedLibraryLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryUnauthorized.cs deleted file mode 100644 index 8d582e6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetRecentlyAddedLibraryUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetRecentlyAddedLibraryUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetRecentlyAddedLibraryUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetRecentlyAddedLibraryUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetRecentlyAddedLibraryUnauthorized( - GetRecentlyAddedLibraryUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataBadRequest.cs deleted file mode 100644 index abe8c55..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetRefreshLibraryMetadataBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetRefreshLibraryMetadataBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetRefreshLibraryMetadataBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetRefreshLibraryMetadataBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetRefreshLibraryMetadataBadRequest( - GetRefreshLibraryMetadataBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataErrors.cs deleted file mode 100644 index bdcb88a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRefreshLibraryMetadataErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataLibraryErrors.cs deleted file mode 100644 index 25dc42c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRefreshLibraryMetadataLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataUnauthorized.cs deleted file mode 100644 index 84ae6f9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetRefreshLibraryMetadataUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetRefreshLibraryMetadataUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetRefreshLibraryMetadataUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetRefreshLibraryMetadataUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetRefreshLibraryMetadataUnauthorized( - GetRefreshLibraryMetadataUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoBadRequest.cs deleted file mode 100644 index 53c3e90..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetResizedPhotoBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetResizedPhotoBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetResizedPhotoBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetResizedPhotoBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetResizedPhotoBadRequest( - GetResizedPhotoBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoErrors.cs deleted file mode 100644 index 82133e4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetResizedPhotoErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoServerErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoServerErrors.cs deleted file mode 100644 index a74701f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoServerErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetResizedPhotoServerErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoUnauthorized.cs deleted file mode 100644 index 10fee73..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetResizedPhotoUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetResizedPhotoUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetResizedPhotoUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetResizedPhotoUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetResizedPhotoUnauthorized( - GetResizedPhotoUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsBadRequest.cs deleted file mode 100644 index 357515d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetResourcesStatisticsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetResourcesStatisticsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetResourcesStatisticsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetResourcesStatisticsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetResourcesStatisticsBadRequest( - GetResourcesStatisticsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsErrors.cs deleted file mode 100644 index cdacf86..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetResourcesStatisticsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsStatisticsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsStatisticsErrors.cs deleted file mode 100644 index 6a5b22b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsStatisticsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetResourcesStatisticsStatisticsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsUnauthorized.cs deleted file mode 100644 index 25d41ab..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetResourcesStatisticsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetResourcesStatisticsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetResourcesStatisticsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetResourcesStatisticsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetResourcesStatisticsUnauthorized( - GetResourcesStatisticsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesBadRequest.cs deleted file mode 100644 index 7912c6a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetSearchAllLibrariesBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetSearchAllLibrariesBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetSearchAllLibrariesBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetSearchAllLibrariesBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetSearchAllLibrariesBadRequest( - GetSearchAllLibrariesBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesErrors.cs deleted file mode 100644 index 1774d69..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchAllLibrariesErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesLibraryErrors.cs deleted file mode 100644 index cf28485..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchAllLibrariesLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesUnauthorized.cs deleted file mode 100644 index d93dd47..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetSearchAllLibrariesUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetSearchAllLibrariesUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetSearchAllLibrariesUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetSearchAllLibrariesUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetSearchAllLibrariesUnauthorized( - GetSearchAllLibrariesUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryBadRequest.cs deleted file mode 100644 index 3f2e252..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetSearchLibraryBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetSearchLibraryBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetSearchLibraryBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetSearchLibraryBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetSearchLibraryBadRequest( - GetSearchLibraryBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryErrors.cs deleted file mode 100644 index 59fa798..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryLibraryErrors.cs deleted file mode 100644 index f3c28d3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchLibraryLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryUnauthorized.cs deleted file mode 100644 index 99810a2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetSearchLibraryUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetSearchLibraryUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetSearchLibraryUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetSearchLibraryUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetSearchLibraryUnauthorized( - GetSearchLibraryUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsBadRequest.cs deleted file mode 100644 index 0277a0a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetSearchResultsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetSearchResultsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetSearchResultsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetSearchResultsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetSearchResultsBadRequest( - GetSearchResultsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsErrors.cs deleted file mode 100644 index 23efe20..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchResultsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsSearchErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsSearchErrors.cs deleted file mode 100644 index 5e5807f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsSearchErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchResultsSearchErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsUnauthorized.cs deleted file mode 100644 index bce7a1d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetSearchResultsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetSearchResultsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetSearchResultsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetSearchResultsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetSearchResultsUnauthorized( - GetSearchResultsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesActivitiesErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesActivitiesErrors.cs deleted file mode 100644 index fe9b6ad..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesActivitiesErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetServerActivitiesActivitiesErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesBadRequest.cs deleted file mode 100644 index bee9579..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetServerActivitiesBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetServerActivitiesBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetServerActivitiesBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerActivitiesBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetServerActivitiesBadRequest( - GetServerActivitiesBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesErrors.cs deleted file mode 100644 index 83a0a20..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetServerActivitiesErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesUnauthorized.cs deleted file mode 100644 index 25acfbb..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetServerActivitiesUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetServerActivitiesUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetServerActivitiesUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerActivitiesUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetServerActivitiesUnauthorized( - GetServerActivitiesUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesBadRequest.cs deleted file mode 100644 index 3b39ed1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetServerCapabilitiesBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetServerCapabilitiesBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetServerCapabilitiesBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerCapabilitiesBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetServerCapabilitiesBadRequest( - GetServerCapabilitiesBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesErrors.cs deleted file mode 100644 index 46e59a6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetServerCapabilitiesErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesUnauthorized.cs deleted file mode 100644 index f624e17..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetServerCapabilitiesUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetServerCapabilitiesUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetServerCapabilitiesUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerCapabilitiesUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetServerCapabilitiesUnauthorized( - GetServerCapabilitiesUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerIdentityRequestTimeout.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerIdentityRequestTimeout.cs deleted file mode 100644 index 0193c42..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerIdentityRequestTimeout.cs +++ /dev/null @@ -1,74 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Net.Http; - - public class GetServerIdentityRequestTimeoutPayload - { - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Request Timeout - /// - public class GetServerIdentityRequestTimeout : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetServerIdentityRequestTimeoutPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerIdentityRequestTimeout.Payload.Code instead.")] - public int? Code { get; set; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerIdentityRequestTimeout.Payload.Message instead.")] - private string? _message { get; set; } - - private static string ErrorMessage(GetServerIdentityRequestTimeoutPayload payload, string body) - { - string? message = payload.Message; - if (!string.IsNullOrEmpty(message)) - { - return message; - } - - return "API error occurred"; - } - - public GetServerIdentityRequestTimeout( - GetServerIdentityRequestTimeoutPayload payload, - HttpResponseMessage rawResponse, - string body - ): base(ErrorMessage(payload, body), rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Code = payload.Code; - _message = payload.Message; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListBadRequest.cs deleted file mode 100644 index 23e74b1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetServerListBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetServerListBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetServerListBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerListBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetServerListBadRequest( - GetServerListBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListErrors.cs deleted file mode 100644 index 1e71cfa..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetServerListErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListServerErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListServerErrors.cs deleted file mode 100644 index ed71b03..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListServerErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetServerListServerErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListUnauthorized.cs deleted file mode 100644 index dd16486..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetServerListUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetServerListUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetServerListUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerListUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetServerListUnauthorized( - GetServerListUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesBadRequest.cs deleted file mode 100644 index f3d8e05..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetServerPreferencesBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetServerPreferencesBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetServerPreferencesBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerPreferencesBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetServerPreferencesBadRequest( - GetServerPreferencesBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesErrors.cs deleted file mode 100644 index 1fbc9fc..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetServerPreferencesErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesServerErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesServerErrors.cs deleted file mode 100644 index 8b2332b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesServerErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetServerPreferencesServerErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesUnauthorized.cs deleted file mode 100644 index c7a4e98..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetServerPreferencesUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetServerPreferencesUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetServerPreferencesUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerPreferencesUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetServerPreferencesUnauthorized( - GetServerPreferencesUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesBadRequest.cs deleted file mode 100644 index 130d1bf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetServerResourcesBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetServerResourcesBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetServerResourcesBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerResourcesBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetServerResourcesBadRequest( - GetServerResourcesBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesErrors.cs deleted file mode 100644 index 30c5384..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetServerResourcesErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesPlexErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesPlexErrors.cs deleted file mode 100644 index 799af8d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesPlexErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetServerResourcesPlexErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesUnauthorized.cs deleted file mode 100644 index 0debe67..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetServerResourcesUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetServerResourcesUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetServerResourcesUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetServerResourcesUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetServerResourcesUnauthorized( - GetServerResourcesUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryBadRequest.cs deleted file mode 100644 index 51b650d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetSessionHistoryBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetSessionHistoryBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetSessionHistoryBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetSessionHistoryBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetSessionHistoryBadRequest( - GetSessionHistoryBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryErrors.cs deleted file mode 100644 index 9d18434..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSessionHistoryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistorySessionsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistorySessionsErrors.cs deleted file mode 100644 index 07ca65d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistorySessionsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSessionHistorySessionsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryUnauthorized.cs deleted file mode 100644 index 6ef1c8e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetSessionHistoryUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetSessionHistoryUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetSessionHistoryUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetSessionHistoryUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetSessionHistoryUnauthorized( - GetSessionHistoryUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsBadRequest.cs deleted file mode 100644 index eeb9c7a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetSessionsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetSessionsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetSessionsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetSessionsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetSessionsBadRequest( - GetSessionsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsErrors.cs deleted file mode 100644 index e017aa7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSessionsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsSessionsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsSessionsErrors.cs deleted file mode 100644 index 6741eb7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsSessionsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSessionsSessionsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsUnauthorized.cs deleted file mode 100644 index 1dd75f3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetSessionsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetSessionsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetSessionsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetSessionsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetSessionsUnauthorized( - GetSessionsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationAuthenticationErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationAuthenticationErrors.cs deleted file mode 100644 index 9f4b11e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationAuthenticationErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSourceConnectionInformationAuthenticationErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationBadRequest.cs deleted file mode 100644 index f4c8bd7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetSourceConnectionInformationBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetSourceConnectionInformationBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetSourceConnectionInformationBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetSourceConnectionInformationBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetSourceConnectionInformationBadRequest( - GetSourceConnectionInformationBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationErrors.cs deleted file mode 100644 index 4813094..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSourceConnectionInformationErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationUnauthorized.cs deleted file mode 100644 index a95a2a5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetSourceConnectionInformationUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetSourceConnectionInformationUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetSourceConnectionInformationUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetSourceConnectionInformationUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetSourceConnectionInformationUnauthorized( - GetSourceConnectionInformationUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsBadRequest.cs deleted file mode 100644 index ea80ae4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetStatisticsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetStatisticsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetStatisticsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetStatisticsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetStatisticsBadRequest( - GetStatisticsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsErrors.cs deleted file mode 100644 index 896b12c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetStatisticsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsStatisticsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsStatisticsErrors.cs deleted file mode 100644 index de9b69a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsStatisticsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetStatisticsStatisticsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsUnauthorized.cs deleted file mode 100644 index 8b29782..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetStatisticsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetStatisticsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetStatisticsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetStatisticsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetStatisticsUnauthorized( - GetStatisticsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageBadRequest.cs deleted file mode 100644 index 81964e9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetThumbImageBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetThumbImageBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetThumbImageBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetThumbImageBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetThumbImageBadRequest( - GetThumbImageBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageErrors.cs deleted file mode 100644 index 91f9629..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetThumbImageErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageMediaErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageMediaErrors.cs deleted file mode 100644 index e756143..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageMediaErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetThumbImageMediaErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageUnauthorized.cs deleted file mode 100644 index f8b1f1f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetThumbImageUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetThumbImageUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetThumbImageUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetThumbImageUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetThumbImageUnauthorized( - GetThumbImageUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineBadRequest.cs deleted file mode 100644 index 74f38fe..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetTimelineBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetTimelineBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetTimelineBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTimelineBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetTimelineBadRequest( - GetTimelineBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineErrors.cs deleted file mode 100644 index aa91d35..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTimelineErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineUnauthorized.cs deleted file mode 100644 index 28ac44c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetTimelineUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetTimelineUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetTimelineUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTimelineUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetTimelineUnauthorized( - GetTimelineUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineVideoErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineVideoErrors.cs deleted file mode 100644 index c09abc4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineVideoErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTimelineVideoErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdBadRequest.cs deleted file mode 100644 index a886f9c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetTokenByPinIdBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetTokenByPinIdBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetTokenByPinIdBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTokenByPinIdBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetTokenByPinIdBadRequest( - GetTokenByPinIdBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdErrors.cs deleted file mode 100644 index 6c4eafe..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTokenByPinIdErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdPlexErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdPlexErrors.cs deleted file mode 100644 index 2cd8031..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdPlexErrors.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTokenByPinIdPlexErrors - { - - [JsonProperty("code")] - public long? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdResponseBody.cs deleted file mode 100644 index 501aebb..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdResponseBody.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetTokenByPinIdResponseBodyPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Not Found or Expired - /// - public class GetTokenByPinIdResponseBody : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetTokenByPinIdResponseBodyPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTokenByPinIdResponseBody.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetTokenByPinIdResponseBody( - GetTokenByPinIdResponseBodyPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsAuthenticationErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsAuthenticationErrors.cs deleted file mode 100644 index 63d82b8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsAuthenticationErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTokenDetailsAuthenticationErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsBadRequest.cs deleted file mode 100644 index a299dad..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetTokenDetailsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetTokenDetailsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetTokenDetailsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTokenDetailsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetTokenDetailsBadRequest( - GetTokenDetailsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsErrors.cs deleted file mode 100644 index c8bbe23..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTokenDetailsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsUnauthorized.cs deleted file mode 100644 index 5c51705..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetTokenDetailsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetTokenDetailsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetTokenDetailsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTokenDetailsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetTokenDetailsUnauthorized( - GetTokenDetailsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentBadRequest.cs deleted file mode 100644 index 5f667ea..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetTopWatchedContentBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetTopWatchedContentBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetTopWatchedContentBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTopWatchedContentBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetTopWatchedContentBadRequest( - GetTopWatchedContentBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentErrors.cs deleted file mode 100644 index cc858af..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTopWatchedContentErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentLibraryErrors.cs deleted file mode 100644 index 1da7151..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTopWatchedContentLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentUnauthorized.cs deleted file mode 100644 index 4491dab..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetTopWatchedContentUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetTopWatchedContentUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetTopWatchedContentUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTopWatchedContentUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetTopWatchedContentUnauthorized( - GetTopWatchedContentUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsBadRequest.cs deleted file mode 100644 index 3841cac..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetTranscodeSessionsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetTranscodeSessionsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetTranscodeSessionsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTranscodeSessionsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetTranscodeSessionsBadRequest( - GetTranscodeSessionsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsErrors.cs deleted file mode 100644 index 5da3a00..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTranscodeSessionsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsSessionsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsSessionsErrors.cs deleted file mode 100644 index 5bfc528..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsSessionsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTranscodeSessionsSessionsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsUnauthorized.cs deleted file mode 100644 index 599eeda..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetTranscodeSessionsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetTranscodeSessionsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetTranscodeSessionsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTranscodeSessionsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetTranscodeSessionsUnauthorized( - GetTranscodeSessionsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenAuthenticationErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenAuthenticationErrors.cs deleted file mode 100644 index a06d23f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenAuthenticationErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTransientTokenAuthenticationErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenBadRequest.cs deleted file mode 100644 index e7ed5ba..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetTransientTokenBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetTransientTokenBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetTransientTokenBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTransientTokenBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetTransientTokenBadRequest( - GetTransientTokenBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenErrors.cs deleted file mode 100644 index 931b64a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTransientTokenErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenUnauthorized.cs deleted file mode 100644 index 285ec60..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetTransientTokenUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetTransientTokenUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetTransientTokenUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetTransientTokenUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetTransientTokenUnauthorized( - GetTransientTokenUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusBadRequest.cs deleted file mode 100644 index 0025e6f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetUpdateStatusBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetUpdateStatusBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetUpdateStatusBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetUpdateStatusBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetUpdateStatusBadRequest( - GetUpdateStatusBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusErrors.cs deleted file mode 100644 index 2ab10c9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetUpdateStatusErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusUnauthorized.cs deleted file mode 100644 index 3f3fdfa..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetUpdateStatusUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetUpdateStatusUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetUpdateStatusUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetUpdateStatusUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetUpdateStatusUnauthorized( - GetUpdateStatusUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusUpdaterErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusUpdaterErrors.cs deleted file mode 100644 index 8d28f2c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusUpdaterErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetUpdateStatusUpdaterErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsBadRequest.cs deleted file mode 100644 index de5054b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetUserFriendsBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetUserFriendsBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetUserFriendsBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetUserFriendsBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetUserFriendsBadRequest( - GetUserFriendsBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsErrors.cs deleted file mode 100644 index 7ab621f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetUserFriendsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsPlexErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsPlexErrors.cs deleted file mode 100644 index 00de94b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsPlexErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetUserFriendsPlexErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsUnauthorized.cs deleted file mode 100644 index 1a93fd9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetUserFriendsUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetUserFriendsUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetUserFriendsUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetUserFriendsUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetUserFriendsUnauthorized( - GetUserFriendsUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersBadRequest.cs deleted file mode 100644 index 78e786f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetUsersBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetUsersBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetUsersBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetUsersBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetUsersBadRequest( - GetUsersBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersErrors.cs deleted file mode 100644 index 478115e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetUsersErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersUnauthorized.cs deleted file mode 100644 index 51280d9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetUsersUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetUsersUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetUsersUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetUsersUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetUsersUnauthorized( - GetUsersUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersUsersErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersUsersErrors.cs deleted file mode 100644 index de207cd..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersUsersErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetUsersUsersErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListBadRequest.cs deleted file mode 100644 index 158a21f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetWatchListBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetWatchListBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetWatchListBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetWatchListBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetWatchListBadRequest( - GetWatchListBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListErrors.cs deleted file mode 100644 index 29d5078..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetWatchListErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListUnauthorized.cs deleted file mode 100644 index b1bc0f5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetWatchListUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetWatchListUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public GetWatchListUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use GetWatchListUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public GetWatchListUnauthorized( - GetWatchListUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListWatchlistErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListWatchlistErrors.cs deleted file mode 100644 index 756424e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListWatchlistErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetWatchListWatchlistErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/LogLineBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/LogLineBadRequest.cs deleted file mode 100644 index 76b0c0e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/LogLineBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class LogLineBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class LogLineBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public LogLineBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use LogLineBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public LogLineBadRequest( - LogLineBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/LogLineErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/LogLineErrors.cs deleted file mode 100644 index a0c5036..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/LogLineErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class LogLineErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/LogLineLogErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/LogLineLogErrors.cs deleted file mode 100644 index c2835c6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/LogLineLogErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class LogLineLogErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/LogLineUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/LogLineUnauthorized.cs deleted file mode 100644 index f374199..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/LogLineUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class LogLineUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class LogLineUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public LogLineUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use LogLineUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public LogLineUnauthorized( - LogLineUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineBadRequest.cs deleted file mode 100644 index e472478..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class LogMultiLineBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class LogMultiLineBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public LogMultiLineBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use LogMultiLineBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public LogMultiLineBadRequest( - LogMultiLineBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineErrors.cs deleted file mode 100644 index e74dc52..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class LogMultiLineErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineLogErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineLogErrors.cs deleted file mode 100644 index ccd5028..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineLogErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class LogMultiLineLogErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineUnauthorized.cs deleted file mode 100644 index 8c824b5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class LogMultiLineUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class LogMultiLineUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public LogMultiLineUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use LogMultiLineUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public LogMultiLineUnauthorized( - LogMultiLineUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedBadRequest.cs deleted file mode 100644 index ea53e83..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class MarkPlayedBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class MarkPlayedBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public MarkPlayedBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use MarkPlayedBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public MarkPlayedBadRequest( - MarkPlayedBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedErrors.cs deleted file mode 100644 index f494ae3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class MarkPlayedErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedMediaErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedMediaErrors.cs deleted file mode 100644 index 6a0facc..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedMediaErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class MarkPlayedMediaErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedUnauthorized.cs deleted file mode 100644 index c19342b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class MarkPlayedUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class MarkPlayedUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public MarkPlayedUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use MarkPlayedUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public MarkPlayedUnauthorized( - MarkPlayedUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedBadRequest.cs deleted file mode 100644 index 2bf7a16..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class MarkUnplayedBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class MarkUnplayedBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public MarkUnplayedBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use MarkUnplayedBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public MarkUnplayedBadRequest( - MarkUnplayedBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedErrors.cs deleted file mode 100644 index a6e2db0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class MarkUnplayedErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedMediaErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedMediaErrors.cs deleted file mode 100644 index 1ad4ae6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedMediaErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class MarkUnplayedMediaErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedUnauthorized.cs deleted file mode 100644 index 8a707b9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class MarkUnplayedUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class MarkUnplayedUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public MarkUnplayedUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use MarkUnplayedUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public MarkUnplayedUnauthorized( - MarkUnplayedUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchBadRequest.cs deleted file mode 100644 index 17e7949..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class PerformSearchBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class PerformSearchBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public PerformSearchBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use PerformSearchBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public PerformSearchBadRequest( - PerformSearchBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchErrors.cs deleted file mode 100644 index 54b3900..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class PerformSearchErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchSearchErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchSearchErrors.cs deleted file mode 100644 index c025993..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchSearchErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class PerformSearchSearchErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchUnauthorized.cs deleted file mode 100644 index 689942c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class PerformSearchUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class PerformSearchUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public PerformSearchUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use PerformSearchUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public PerformSearchUnauthorized( - PerformSearchUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchBadRequest.cs deleted file mode 100644 index 7eb46ae..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class PerformVoiceSearchBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class PerformVoiceSearchBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public PerformVoiceSearchBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use PerformVoiceSearchBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public PerformVoiceSearchBadRequest( - PerformVoiceSearchBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchErrors.cs deleted file mode 100644 index e2283e0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class PerformVoiceSearchErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchSearchErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchSearchErrors.cs deleted file mode 100644 index 658e61b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchSearchErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class PerformVoiceSearchSearchErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchUnauthorized.cs deleted file mode 100644 index bc7d0dd..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class PerformVoiceSearchUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class PerformVoiceSearchUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public PerformVoiceSearchUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use PerformVoiceSearchUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public PerformVoiceSearchUnauthorized( - PerformVoiceSearchUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataAuthenticationErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataAuthenticationErrors.cs deleted file mode 100644 index a01dc60..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataAuthenticationErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class PostUsersSignInDataAuthenticationErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataBadRequest.cs deleted file mode 100644 index 8c68811..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class PostUsersSignInDataBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class PostUsersSignInDataBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public PostUsersSignInDataBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use PostUsersSignInDataBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public PostUsersSignInDataBadRequest( - PostUsersSignInDataBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataErrors.cs deleted file mode 100644 index bd23aa8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class PostUsersSignInDataErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataUnauthorized.cs deleted file mode 100644 index 3936706..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class PostUsersSignInDataUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class PostUsersSignInDataUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public PostUsersSignInDataUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use PostUsersSignInDataUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public PostUsersSignInDataUnauthorized( - PostUsersSignInDataUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksBadRequest.cs deleted file mode 100644 index 2e87637..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class StartAllTasksBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class StartAllTasksBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public StartAllTasksBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use StartAllTasksBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public StartAllTasksBadRequest( - StartAllTasksBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksButlerErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksButlerErrors.cs deleted file mode 100644 index c1483a6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksButlerErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StartAllTasksButlerErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksErrors.cs deleted file mode 100644 index b023951..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StartAllTasksErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksUnauthorized.cs deleted file mode 100644 index 0527c9a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class StartAllTasksUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class StartAllTasksUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public StartAllTasksUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use StartAllTasksUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public StartAllTasksUnauthorized( - StartAllTasksUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskBadRequest.cs deleted file mode 100644 index d670414..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class StartTaskBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class StartTaskBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public StartTaskBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use StartTaskBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public StartTaskBadRequest( - StartTaskBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskButlerErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskButlerErrors.cs deleted file mode 100644 index 2bfa3c0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskButlerErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StartTaskButlerErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskErrors.cs deleted file mode 100644 index 485c77b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StartTaskErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskUnauthorized.cs deleted file mode 100644 index 9044c59..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class StartTaskUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class StartTaskUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public StartTaskUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use StartTaskUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public StartTaskUnauthorized( - StartTaskUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeBadRequest.cs deleted file mode 100644 index e07de52..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class StartUniversalTranscodeBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class StartUniversalTranscodeBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public StartUniversalTranscodeBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use StartUniversalTranscodeBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public StartUniversalTranscodeBadRequest( - StartUniversalTranscodeBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeErrors.cs deleted file mode 100644 index 844e31b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StartUniversalTranscodeErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeUnauthorized.cs deleted file mode 100644 index a2d2185..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class StartUniversalTranscodeUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class StartUniversalTranscodeUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public StartUniversalTranscodeUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use StartUniversalTranscodeUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public StartUniversalTranscodeUnauthorized( - StartUniversalTranscodeUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeVideoErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeVideoErrors.cs deleted file mode 100644 index ffee773..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeVideoErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StartUniversalTranscodeVideoErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksBadRequest.cs deleted file mode 100644 index c79b479..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class StopAllTasksBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class StopAllTasksBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public StopAllTasksBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use StopAllTasksBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public StopAllTasksBadRequest( - StopAllTasksBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksButlerErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksButlerErrors.cs deleted file mode 100644 index c7a1b96..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksButlerErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StopAllTasksButlerErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksErrors.cs deleted file mode 100644 index 7b45aa0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StopAllTasksErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksUnauthorized.cs deleted file mode 100644 index da2383d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class StopAllTasksUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class StopAllTasksUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public StopAllTasksUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use StopAllTasksUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public StopAllTasksUnauthorized( - StopAllTasksUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskBadRequest.cs deleted file mode 100644 index 090b50d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class StopTaskBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class StopTaskBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public StopTaskBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use StopTaskBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public StopTaskBadRequest( - StopTaskBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskButlerErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskButlerErrors.cs deleted file mode 100644 index d860632..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskButlerErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StopTaskButlerErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskErrors.cs deleted file mode 100644 index 69ad7ed..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StopTaskErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskUnauthorized.cs deleted file mode 100644 index 60bd046..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class StopTaskUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class StopTaskUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public StopTaskUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use StopTaskUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public StopTaskUnauthorized( - StopTaskUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionBadRequest.cs deleted file mode 100644 index 5b805fa..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class StopTranscodeSessionBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class StopTranscodeSessionBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public StopTranscodeSessionBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use StopTranscodeSessionBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public StopTranscodeSessionBadRequest( - StopTranscodeSessionBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionErrors.cs deleted file mode 100644 index 806d86b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StopTranscodeSessionErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionSessionsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionSessionsErrors.cs deleted file mode 100644 index 31c84de..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionSessionsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StopTranscodeSessionSessionsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionUnauthorized.cs deleted file mode 100644 index 9ed7dbd..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class StopTranscodeSessionUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class StopTranscodeSessionUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public StopTranscodeSessionUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use StopTranscodeSessionUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public StopTranscodeSessionUnauthorized( - StopTranscodeSessionUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressBadRequest.cs deleted file mode 100644 index b08174b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class UpdatePlayProgressBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class UpdatePlayProgressBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public UpdatePlayProgressBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use UpdatePlayProgressBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public UpdatePlayProgressBadRequest( - UpdatePlayProgressBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressErrors.cs deleted file mode 100644 index 564f307..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class UpdatePlayProgressErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressMediaErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressMediaErrors.cs deleted file mode 100644 index 47f6a8b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressMediaErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class UpdatePlayProgressMediaErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressUnauthorized.cs deleted file mode 100644 index 1945233..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class UpdatePlayProgressUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class UpdatePlayProgressUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public UpdatePlayProgressUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use UpdatePlayProgressUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public UpdatePlayProgressUnauthorized( - UpdatePlayProgressUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistBadRequest.cs deleted file mode 100644 index 544b69b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class UpdatePlaylistBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class UpdatePlaylistBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public UpdatePlaylistBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use UpdatePlaylistBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public UpdatePlaylistBadRequest( - UpdatePlaylistBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistErrors.cs deleted file mode 100644 index 2062f12..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class UpdatePlaylistErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistPlaylistsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistPlaylistsErrors.cs deleted file mode 100644 index 065d435..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistPlaylistsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class UpdatePlaylistPlaylistsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistUnauthorized.cs deleted file mode 100644 index 2d7f08d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class UpdatePlaylistUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class UpdatePlaylistUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public UpdatePlaylistUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use UpdatePlaylistUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public UpdatePlaylistUnauthorized( - UpdatePlaylistUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistBadRequest.cs deleted file mode 100644 index 0ca0792..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistBadRequest.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class UploadPlaylistBadRequestPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class UploadPlaylistBadRequest : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public UploadPlaylistBadRequestPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use UploadPlaylistBadRequest.Payload.Errors instead.")] - public List? Errors { get; set; } - - public UploadPlaylistBadRequest( - UploadPlaylistBadRequestPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistErrors.cs deleted file mode 100644 index 30ec9cb..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class UploadPlaylistErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistPlaylistsErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistPlaylistsErrors.cs deleted file mode 100644 index 765b39c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistPlaylistsErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class UploadPlaylistPlaylistsErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistUnauthorized.cs deleted file mode 100644 index dbf0508..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistUnauthorized.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class UploadPlaylistUnauthorizedPayload - { - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class UploadPlaylistUnauthorized : PlexAPIError - { - /// - /// The original data that was passed to this exception. - /// - public UploadPlaylistUnauthorizedPayload Payload { get; } - - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible. Use UploadPlaylistUnauthorized.Payload.Errors instead.")] - public List? Errors { get; set; } - - public UploadPlaylistUnauthorized( - UploadPlaylistUnauthorizedPayload payload, - HttpResponseMessage rawResponse, - string body - ): base("API error occurred", rawResponse, body) - { - Payload = payload; - - #pragma warning disable CS0618 - Errors = payload.Errors; - #pragma warning restore CS0618 - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Account.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Account.cs index 3edc5cf..6e6ff0c 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Account.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Account.cs @@ -15,28 +15,10 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class Account { + [JsonProperty("globalViewCount")] + public long? GlobalViewCount { get; set; } + [JsonProperty("id")] - public int? Id { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("name")] - public string? Name { get; set; } - - [JsonProperty("defaultAudioLanguage")] - public string? DefaultAudioLanguage { get; set; } - - [JsonProperty("autoSelectAudio")] - public bool? AutoSelectAudio { get; set; } - - [JsonProperty("defaultSubtitleLanguage")] - public string? DefaultSubtitleLanguage { get; set; } - - [JsonProperty("subtitleMode")] - public int? SubtitleMode { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } + public long? Id { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Action.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Action.cs index bd712f6..c0778f3 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Action.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Action.cs @@ -11,14 +11,52 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests { using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; + using System; - public class Action + /// + /// The action to perform for this item on this optimizer queue + /// + public enum Action { - - [JsonProperty("id")] - public string Id { get; set; } = default!; - - [JsonProperty("key")] - public string Key { get; set; } = default!; + [JsonProperty("reprocess")] + Reprocess, + [JsonProperty("disable")] + Disable, + [JsonProperty("enable")] + Enable, } + + public static class ActionExtension + { + public static string Value(this Action value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Action ToEnum(this string value) + { + foreach(var field in typeof(Action).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 Action) + { + return (Action)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Action"); + } + } + } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ActiveDirection.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ActiveDirection.cs deleted file mode 100644 index 5c41274..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/ActiveDirection.cs +++ /dev/null @@ -1,64 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- public enum ActiveDirection - { - [JsonProperty("asc")] - Ascending, - [JsonProperty("desc")] - Descending, - } - - public static class ActiveDirectionExtension - { - public static string Value(this ActiveDirection value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static ActiveDirection ToEnum(this string value) - { - foreach(var field in typeof(ActiveDirection).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 ActiveDirection) - { - return (ActiveDirection)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum ActiveDirection"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Activity.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Activity.cs index 51806e8..304fad7 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Activity.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Activity.cs @@ -9,35 +9,65 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; + using System.Collections.Generic; public class Activity { - [JsonProperty("uuid")] - public string? Uuid { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - + /// + /// Indicates whether this activity can be cancelled + /// [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; } + /// + /// An object with additional values + /// + [JsonProperty("Context")] + public Dictionary? Context { get; set; } + /// + /// A progress percentage. A value of -1 means the progress is indeterminate + /// [JsonProperty("progress")] public double? Progress { get; set; } - [JsonProperty("Context")] - public Context? Context { get; set; } + /// + /// An object with the response to the async opperation + /// + [JsonProperty("Response")] + public Dictionary? Response { get; set; } + + /// + /// A user-friendly sub-title for this activity + /// + [JsonProperty("subtitle")] + public string? Subtitle { get; set; } + + /// + /// A user-friendly title for this activity + /// + [JsonProperty("title")] + public string? Title { get; set; } + + /// + /// The type of activity + /// + [JsonProperty("type")] + public string? Type { get; set; } + + /// + /// The user this activity belongs to + /// + [JsonProperty("userID")] + public long? UserID { get; set; } + + /// + /// The ID of the activity + /// + [JsonProperty("uuid")] + public string? Uuid { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddCollectionItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddCollectionItemsRequest.cs new file mode 100644 index 0000000..9f6cf98 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddCollectionItemsRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class AddCollectionItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The collection id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=collectionId")] + public long CollectionId { get; set; } = default!; + + /// + /// The URI describing the items to add to this collection + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=uri")] + public string Uri { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddCollectionItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddCollectionItemsResponse.cs new file mode 100644 index 0000000..8aa4e5d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddCollectionItemsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class AddCollectionItemsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceRequest.cs new file mode 100644 index 0000000..4507251 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class AddDeviceRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The URI of the device. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=uri")] + public string? Uri { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceResponse.cs new file mode 100644 index 0000000..61d8447 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class AddDeviceResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithDevice? MediaContainerWithDevice { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRDVR.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRDVR.cs new file mode 100644 index 0000000..da2ac9f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRDVR.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class AddDeviceToDVRDVR + { + + [JsonProperty("Device")] + public List? Device { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("language")] + public string? Language { get; set; } + + [JsonProperty("lineup")] + public string? Lineup { get; set; } + + [JsonProperty("uuid")] + public string? Uuid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRDVRsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRDVRsMediaContainer.cs new file mode 100644 index 0000000..ba2bfc6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRDVRsMediaContainer.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class AddDeviceToDVRDVRsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + /// + /// A status indicator. If present and non-zero, indicates an error + /// + [JsonProperty("status")] + public long? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRMediaContainer.cs new file mode 100644 index 0000000..74700df --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRMediaContainer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class AddDeviceToDVRMediaContainer + { + + [JsonProperty("MediaContainer")] + public AddDeviceToDVRDVRsMediaContainer? MediaContainer { get; set; } + + [JsonProperty("DVR")] + public List? Dvr { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRRequest.cs new file mode 100644 index 0000000..50a7e5f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class AddDeviceToDVRRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the DVR. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=dvrId")] + public long DvrId { get; set; } = default!; + + /// + /// The ID of the device to add. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=deviceId")] + public long DeviceId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRResponse.cs new file mode 100644 index 0000000..e7d5dc6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class AddDeviceToDVRResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public AddDeviceToDVRResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRResponseBody.cs new file mode 100644 index 0000000..35978fe --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDeviceToDVRResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class AddDeviceToDVRResponseBody + { + + [JsonProperty("MediaContainer")] + public AddDeviceToDVRMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsMediaContainer.cs new file mode 100644 index 0000000..574a109 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class AddDownloadQueueItemsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("AddedQueueItems")] + public List? AddedQueueItems { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsRequest.cs new file mode 100644 index 0000000..4693656 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsRequest.cs @@ -0,0 +1,265 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class AddDownloadQueueItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The queue id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=queueId")] + public long QueueId { get; set; } = default!; + + /// + /// Keys to add + /// + [SpeakeasyMetadata("queryParam:style=form,explode=false,name=keys")] + public List Keys { get; set; } = default!; + + /// + /// Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=advancedSubtitles")] + public Models.Components.AdvancedSubtitles? AdvancedSubtitles { get; set; } + + /// + /// Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=audioBoost")] + public long? AudioBoost { get; set; } + + /// + /// Target video number of audio channels. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=audioChannelCount")] + public long? AudioChannelCount { get; set; } + + /// + /// Indicates the client supports ABR. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustQuality")] + public BoolInt? AutoAdjustQuality { get; set; } + + /// + /// Indicates if the server should adjust subtitles based on Voice Activity Data. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustSubtitle")] + public BoolInt? AutoAdjustSubtitle { get; set; } + + /// + /// Indicates the client supports direct playing the indicated content. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directPlay")] + public BoolInt? DirectPlay { get; set; } + + /// + /// Indicates the client supports direct streaming the video of the indicated content. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStream")] + public BoolInt? DirectStream { get; set; } + + /// + /// Indicates the client supports direct streaming the audio of the indicated content. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStreamAudio")] + public BoolInt? DirectStreamAudio { get; set; } + + /// + /// Indicates if resolution should be adjusted for orientation. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=disableResolutionRotation")] + public BoolInt? DisableResolutionRotation { get; set; } + + /// + /// Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=hasMDE")] + public BoolInt? HasMDE { get; set; } + + /// + /// Network type of the client, can be used to help determine target bitrate. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=location")] + public Models.Components.Location? Location { get; set; } + + /// + /// Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaBufferSize")] + public long? MediaBufferSize { get; set; } + + /// + /// Index of the media to transcode. -1 or not specified indicates let the server choose. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaIndex")] + public long? MediaIndex { get; set; } + + /// + /// Target bitrate for audio only files (in kbps, used to transcode). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=musicBitrate")] + public long? MusicBitrate { get; set; } + + /// + /// Offset from the start of the media (in seconds). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=offset")] + public double? Offset { get; set; } + + /// + /// Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=partIndex")] + public long? PartIndex { get; set; } + + /// + /// Internal PMS path of the media to transcode. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=path")] + public string? Path { get; set; } + + /// + /// Maximum bitrate (in kbps) to use in ABR. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=peakBitrate")] + public long? PeakBitrate { get; set; } + + /// + /// Target photo resolution. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=photoResolution")] + public string? PhotoResolution { get; set; } + + /// + /// Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=protocol")] + public Models.Components.Protocol? Protocol { get; set; } + + /// + /// Number of seconds to include in each transcoded segment + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=secondsPerSegment")] + public long? SecondsPerSegment { get; set; } + + /// + /// Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subtitleSize")] + public long? SubtitleSize { get; set; } + + /// + /// Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subtitles")] + public Models.Components.Subtitles? Subtitles { get; set; } + + /// + /// Target video bitrate (in kbps). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=videoBitrate")] + public long? VideoBitrate { get; set; } + + /// + /// Target photo quality. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=videoQuality")] + public long? VideoQuality { get; set; } + + /// + /// Target maximum video resolution. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=videoResolution")] + public string? VideoResolution { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsResponse.cs new file mode 100644 index 0000000..ad95e7c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class AddDownloadQueueItemsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public AddDownloadQueueItemsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsResponseBody.cs new file mode 100644 index 0000000..adb2ae5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddDownloadQueueItemsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class AddDownloadQueueItemsResponseBody + { + + [JsonProperty("MediaContainer")] + public AddDownloadQueueItemsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddExtrasRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddExtrasRequest.cs new file mode 100644 index 0000000..16841ff --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddExtrasRequest.cs @@ -0,0 +1,105 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class AddExtrasRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + /// + /// The metadata type of the extra + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=extraType")] + public long? ExtraType { get; set; } + + /// + /// The URL of the extra + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] + public string Url { get; set; } = default!; + + /// + /// The title to filter by or assign + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=title")] + public string? Title { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddExtrasResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddExtrasResponse.cs new file mode 100644 index 0000000..2fa5301 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddExtrasResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class AddExtrasResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupDVR.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupDVR.cs new file mode 100644 index 0000000..2ca0d8c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupDVR.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class AddLineupDVR + { + + [JsonProperty("Device")] + public List? Device { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("language")] + public string? Language { get; set; } + + [JsonProperty("lineup")] + public string? Lineup { get; set; } + + [JsonProperty("uuid")] + public string? Uuid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupDVRsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupDVRsMediaContainer.cs new file mode 100644 index 0000000..1a61ed2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupDVRsMediaContainer.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class AddLineupDVRsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + /// + /// A status indicator. If present and non-zero, indicates an error + /// + [JsonProperty("status")] + public long? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupMediaContainer.cs new file mode 100644 index 0000000..304b770 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupMediaContainer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class AddLineupMediaContainer + { + + [JsonProperty("MediaContainer")] + public AddLineupDVRsMediaContainer? MediaContainer { get; set; } + + [JsonProperty("DVR")] + public List? Dvr { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupRequest.cs new file mode 100644 index 0000000..d78af2a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class AddLineupRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the DVR. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=dvrId")] + public long DvrId { get; set; } = default!; + + /// + /// The lineup to delete + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=lineup")] + public string Lineup { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupResponse.cs new file mode 100644 index 0000000..f504383 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class AddLineupResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public AddLineupResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupResponseBody.cs new file mode 100644 index 0000000..eec3abc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddLineupResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class AddLineupResponseBody + { + + [JsonProperty("MediaContainer")] + public AddLineupMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsMediaContainer.cs deleted file mode 100644 index 281fc9f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsMediaContainer.cs +++ /dev/null @@ -1,32 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class AddPlaylistContentsMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("leafCountAdded")] - public int? LeafCountAdded { get; set; } - - [JsonProperty("leafCountRequested")] - public int? LeafCountRequested { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsMetadata.cs deleted file mode 100644 index 00d2255..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsMetadata.cs +++ /dev/null @@ -1,57 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class AddPlaylistContentsMetadata - { - - [JsonProperty("ratingKey")] - public string? RatingKey { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("guid")] - public string? Guid { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("summary")] - public string? Summary { get; set; } - - [JsonProperty("smart")] - public bool? Smart { get; set; } - - [JsonProperty("playlistType")] - public string? PlaylistType { get; set; } - - [JsonProperty("composite")] - public string? Composite { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - [JsonProperty("addedAt")] - public int? AddedAt { get; set; } - - [JsonProperty("updatedAt")] - public int? UpdatedAt { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsRequest.cs deleted file mode 100644 index d8ad129..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsRequest.cs +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.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; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsResponse.cs deleted file mode 100644 index 49caa31..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - - /// - /// Playlist Updated - /// - public AddPlaylistContentsResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsResponseBody.cs deleted file mode 100644 index ca8d3cc..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistContentsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Playlist Updated - /// - public class AddPlaylistContentsResponseBody - { - - [JsonProperty("MediaContainer")] - public AddPlaylistContentsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistItemsRequest.cs new file mode 100644 index 0000000..ae1b57b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistItemsRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class AddPlaylistItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistId")] + public long PlaylistId { 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 add to a playlist. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=playQueueID")] + public long? PlayQueueID { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistItemsResponse.cs new file mode 100644 index 0000000..3846dba --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddPlaylistItemsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class AddPlaylistItemsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddProviderRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddProviderRequest.cs new file mode 100644 index 0000000..0b06993 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddProviderRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class AddProviderRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The URL of the media provider to add. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] + public string Url { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddProviderResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddProviderResponse.cs new file mode 100644 index 0000000..02111f2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddProviderResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class AddProviderResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddSectionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddSectionRequest.cs new file mode 100644 index 0000000..c5ae1df --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddSectionRequest.cs @@ -0,0 +1,146 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class AddSectionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The name of the new section + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=name")] + public string Name { get; set; } = default!; + + /// + /// The type of library section + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long Type { get; set; } = default!; + + /// + /// The scanner this section should use + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=scanner")] + public string? Scanner { get; set; } + + /// + /// The agent this section should use for metadata + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=agent")] + public string Agent { get; set; } = default!; + + /// + /// The agent group id for this section + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=metadataAgentProviderGroupId")] + public string? MetadataAgentProviderGroupId { get; set; } + + /// + /// The language of this section + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=language")] + public string Language { get; set; } = default!; + + /// + /// The locations on disk to add to this section + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=locations")] + public List? Locations { get; set; } + + /// + /// The preferences for this section + /// + [SpeakeasyMetadata("queryParam:style=deepObject,explode=true,name=prefs")] + public QueryParamPrefs? Prefs { get; set; } + + /// + /// If set, paths are relative to `Media Upload` path + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=relative")] + public BoolInt? Relative { get; set; } + + /// + /// If set, import media from iTunes. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=importFromiTunes")] + public BoolInt? ImportFromiTunes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddSectionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddSectionResponse.cs new file mode 100644 index 0000000..f6b7528 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddSectionResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class AddSectionResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public SlashGetResponses200? SlashGetResponses200 { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddSubtitlesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddSubtitlesRequest.cs new file mode 100644 index 0000000..02ccb40 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddSubtitlesRequest.cs @@ -0,0 +1,111 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class AddSubtitlesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=title")] + public string? Title { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=language")] + public string? Language { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaItemID")] + public long? MediaItemID { get; set; } + + /// + /// The URL of the subtitle. If not provided, the contents of the subtitle must be in the post body + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] + public string? Url { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=format")] + public string? Format { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=forced")] + public BoolInt? Forced { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=hearingImpaired")] + public BoolInt? HearingImpaired { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddSubtitlesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddSubtitlesResponse.cs new file mode 100644 index 0000000..0c33f4e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddSubtitlesResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class AddSubtitlesResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddToPlayQueueRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddToPlayQueueRequest.cs new file mode 100644 index 0000000..14ba8f5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddToPlayQueueRequest.cs @@ -0,0 +1,108 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class AddToPlayQueueRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the play queue. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playQueueId")] + public long PlayQueueId { get; set; } = default!; + + /// + /// The content URI for what we're adding to the queue. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=uri")] + public string? Uri { get; set; } + + /// + /// The ID of the playlist to add to the playQueue. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=playlistID")] + public string? PlaylistID { get; set; } + + /// + /// Play this item next (defaults to 0 - queueing at the end of manually queued items). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=next")] + public BoolInt? Next { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddToPlayQueueResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddToPlayQueueResponse.cs new file mode 100644 index 0000000..2feea16 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddToPlayQueueResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class AddToPlayQueueResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AddedQueueItems.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AddedQueueItems.cs new file mode 100644 index 0000000..3a215fc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AddedQueueItems.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class AddedQueueItems + { + + /// + /// The queue item id that was added or the existing one if an item already exists in this queue with the same parameters + /// + [JsonProperty("id")] + public long? Id { get; set; } + + /// + /// The key added to the queue + /// + [JsonProperty("key")] + public string? Key { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AdvancedSubtitles.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AdvancedSubtitles.cs new file mode 100644 index 0000000..75744ac --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AdvancedSubtitles.cs @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum AdvancedSubtitles + { + [JsonProperty("auto")] + Auto, + [JsonProperty("burn")] + Burn, + [JsonProperty("none")] + None, + [JsonProperty("sidecar")] + Sidecar, + [JsonProperty("embedded")] + Embedded, + [JsonProperty("segmented")] + Segmented, + } + + public static class AdvancedSubtitlesExtension + { + public static string Value(this AdvancedSubtitles value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static AdvancedSubtitles ToEnum(this string value) + { + foreach(var field in typeof(AdvancedSubtitles).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 AdvancedSubtitles) + { + return (AdvancedSubtitles)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum AdvancedSubtitles"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AllLibraries.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AllLibraries.cs deleted file mode 100644 index 18fe783..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/AllLibraries.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Indicates if the user has access to all libraries. - /// - public enum AllLibraries - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AllowCameraUpload.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AllowCameraUpload.cs deleted file mode 100644 index 0731c82..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/AllowCameraUpload.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Indicates if the user is allowed to upload from a camera. - /// - public enum AllowCameraUpload - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AllowChannels.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AllowChannels.cs deleted file mode 100644 index 3f0ac59..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/AllowChannels.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Indicates if the user has access to channels. - /// - public enum AllowChannels - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AllowSubtitleAdmin.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AllowSubtitleAdmin.cs deleted file mode 100644 index ee3c00e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/AllowSubtitleAdmin.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Indicates if the user can manage subtitles. - /// - public enum AllowSubtitleAdmin - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AllowSync.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AllowSync.cs deleted file mode 100644 index b30166f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/AllowSync.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Indicates if the user is allowed to sync media. - /// - public enum AllowSync - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AllowTuners.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AllowTuners.cs deleted file mode 100644 index 49a1a9d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/AllowTuners.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Indicates if the user is allowed to use tuners. - /// - public enum AllowTuners - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AnalyzeMetadataRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AnalyzeMetadataRequest.cs new file mode 100644 index 0000000..5a96c94 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AnalyzeMetadataRequest.cs @@ -0,0 +1,99 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class AnalyzeMetadataRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + /// + /// Set the offset to be used for thumbnails + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=thumbOffset")] + public double? ThumbOffset { get; set; } + + /// + /// Set the offset to be used for artwork + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=artOffset")] + public double? ArtOffset { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AnalyzeMetadataResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AnalyzeMetadataResponse.cs new file mode 100644 index 0000000..61dd992 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AnalyzeMetadataResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class AnalyzeMetadataResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ApplyUpdatesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ApplyUpdatesRequest.cs index 810d12b..cc4bd0f 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/ApplyUpdatesRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ApplyUpdatesRequest.cs @@ -9,22 +9,88 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.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 + /// Indicates the client accepts the indicated media types /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=tonight")] - public Tonight? Tonight { get; set; } + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; /// - /// Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`. + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install immediately. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=tonight")] + public BoolInt? 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; } + public BoolInt? Skip { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Args.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Args.cs new file mode 100644 index 0000000..5e93ec9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Args.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// The new values for the metadata item + /// + public class Args + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Attributes.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Attributes.cs index eb86f5d..47a552d 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Attributes.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Attributes.cs @@ -10,24 +10,11 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests { using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; /// - /// Attributes associated with the marker. + /// The attributes to assign to this marker /// public class Attributes { - - /// - /// The identifier for the attributes. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// The version number of the marker attributes. - /// - [JsonProperty("version")] - public long? Version { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AutoSelectSubtitle.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AutoSelectSubtitle.cs deleted file mode 100644 index 112c467..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/AutoSelectSubtitle.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled) - /// - public enum AutoSelectSubtitle - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AutocompleteRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AutocompleteRequest.cs new file mode 100644 index 0000000..bad35a6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AutocompleteRequest.cs @@ -0,0 +1,108 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class AutocompleteRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// Item type + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long? Type { get; set; } + + /// + /// The "field" stands in for any field, the value is a partial string for matching + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=field.query")] + public string? FieldQuery { get; set; } + + /// + /// This is a complex query built of several parameters. See API Info section for information on building media queries + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")] + public MediaQuery? MediaQuery { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/AutocompleteResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/AutocompleteResponse.cs new file mode 100644 index 0000000..5ca2b01 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/AutocompleteResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class AutocompleteResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Bandwidth.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Bandwidth.cs new file mode 100644 index 0000000..85a35d8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Bandwidth.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class Bandwidth + { + + /// + /// The bandwidth at this time in kbps + /// + [JsonProperty("bandwidth")] + public long? BandwidthValue { get; set; } + + /// + /// The user-friendly resolution at this time + /// + [JsonProperty("resolution")] + public string? Resolution { get; set; } + + /// + /// Media playback time where this bandwidth started + /// + [JsonProperty("time")] + public long? Time { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Bandwidths.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Bandwidths.cs new file mode 100644 index 0000000..78e6163 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Bandwidths.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth + /// + public class Bandwidths + { + + [JsonProperty("Bandwidth")] + public List? Bandwidth { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Billing.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Billing.cs deleted file mode 100644 index 65d9745..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Billing.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Billing - { - - [JsonProperty("internalPaymentMethod")] - public InternalPaymentMethod InternalPaymentMethod { get; set; } = default!; - - [JsonProperty("paymentMethodId", NullValueHandling = NullValueHandling.Include)] - public long? PaymentMethodId { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ButlerTask.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ButlerTask.cs index 8229879..74cb4e0 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/ButlerTask.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ButlerTask.cs @@ -15,22 +15,40 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class ButlerTask { - [JsonProperty("name")] - public string? Name { get; set; } - - [JsonProperty("interval")] - public double? Interval { get; set; } - - [JsonProperty("scheduleRandomized")] - public bool? ScheduleRandomized { get; set; } + /// + /// A user-friendly description of the task + /// + [JsonProperty("description")] + public string? Description { get; set; } + /// + /// Whether this task is enabled or not + /// [JsonProperty("enabled")] public bool? Enabled { get; set; } + /// + /// The interval (in days) of when this task is run. A value of 1 is run every day, 7 is every week, etc. + /// + [JsonProperty("interval")] + public long? Interval { get; set; } + + /// + /// The name of the task + /// + [JsonProperty("name")] + public string? Name { get; set; } + + /// + /// Indicates whether the timing of the task is randomized within the butler interval + /// + [JsonProperty("scheduleRandomized")] + public bool? ScheduleRandomized { get; set; } + + /// + /// A user-friendly title of the task + /// [JsonProperty("title")] public string? Title { get; set; } - - [JsonProperty("description")] - public string? Description { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CancelActivityRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelActivityRequest.cs new file mode 100644 index 0000000..540f5e5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelActivityRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class CancelActivityRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The UUID of the activity to cancel. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=activityId")] + public string ActivityId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CancelActivityResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelActivityResponse.cs new file mode 100644 index 0000000..e2c49b7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelActivityResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class CancelActivityResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CancelGrabRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelGrabRequest.cs new file mode 100644 index 0000000..16ed6af --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelGrabRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class CancelGrabRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the operation. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=operationId")] + public string OperationId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CancelGrabResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelGrabResponse.cs new file mode 100644 index 0000000..8230e16 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelGrabResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class CancelGrabResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CancelRefreshRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelRefreshRequest.cs new file mode 100644 index 0000000..bee648c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelRefreshRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class CancelRefreshRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CancelRefreshResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelRefreshResponse.cs new file mode 100644 index 0000000..15fbf4b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelRefreshResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class CancelRefreshResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CancelServerActivitiesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelServerActivitiesRequest.cs deleted file mode 100644 index c4dacf4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/CancelServerActivitiesRequest.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.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/LukeHagar/PlexAPI/SDK/Models/Requests/CancelServerActivitiesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CancelServerActivitiesResponse.cs deleted file mode 100644 index 8c3d143..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/CancelServerActivitiesResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ChannelMapping.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ChannelMapping.cs new file mode 100644 index 0000000..0bc9a17 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ChannelMapping.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// The mapping of changes, passed as a map of device channel to lineup VCN. + /// + public class ChannelMapping + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ChannelMappingByKey.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ChannelMappingByKey.cs new file mode 100644 index 0000000..56f2d09 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ChannelMappingByKey.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// The mapping of changes, passed as a map of device channel to lineup key. + /// + public class ChannelMappingByKey + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Chapter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Chapter.cs deleted file mode 100644 index 38b0fee..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Chapter.cs +++ /dev/null @@ -1,39 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The thumbnail for the chapter - /// - public class Chapter - { - - [JsonProperty("id")] - public long Id { get; set; } = default!; - - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - [JsonProperty("index")] - public long Index { get; set; } = default!; - - [JsonProperty("startTimeOffset")] - public long StartTimeOffset { get; set; } = default!; - - [JsonProperty("endTimeOffset")] - public long EndTimeOffset { get; set; } = default!; - - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CheckForUpdatesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CheckForUpdatesRequest.cs deleted file mode 100644 index c453e3b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/CheckForUpdatesRequest.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.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/LukeHagar/PlexAPI/SDK/Models/Requests/CheckForUpdatesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CheckForUpdatesResponse.cs deleted file mode 100644 index 2155383..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/CheckForUpdatesResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CheckUpdatesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CheckUpdatesRequest.cs new file mode 100644 index 0000000..6e8be36 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CheckUpdatesRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class CheckUpdatesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Indicate that you want to start download any updates found. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=download")] + public BoolInt? Download { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CheckUpdatesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CheckUpdatesResponse.cs new file mode 100644 index 0000000..0ccfbcb --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CheckUpdatesResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class CheckUpdatesResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ChromaSubsampling.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ChromaSubsampling.cs new file mode 100644 index 0000000..b322cd2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ChromaSubsampling.cs @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// Use the specified chroma subsambling.
+ /// + /// + /// - 0: 411
+ /// - 1: 420
+ /// - 2: 422
+ /// - 3: 444
+ /// Defaults to 3 (444) + ///
+ ///
+ public enum ChromaSubsampling + { + Zero = 0, + One = 1, + Two = 2, + Three = 3, + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CleanBundlesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CleanBundlesResponse.cs new file mode 100644 index 0000000..59faa2a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CleanBundlesResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class CleanBundlesResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlayQueueRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlayQueueRequest.cs new file mode 100644 index 0000000..944d81c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlayQueueRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ClearPlayQueueRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the play queue. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playQueueId")] + public long PlayQueueId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlayQueueResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlayQueueResponse.cs new file mode 100644 index 0000000..2a1b80f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlayQueueResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ClearPlayQueueResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistContentsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistContentsRequest.cs deleted file mode 100644 index 45fec92..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistContentsRequest.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.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/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistContentsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistContentsResponse.cs deleted file mode 100644 index 58c7319..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistContentsResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistItemsRequest.cs new file mode 100644 index 0000000..16beea7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistItemsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ClearPlaylistItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistId")] + public long PlaylistId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistItemsResponse.cs new file mode 100644 index 0000000..83e8a38 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ClearPlaylistItemsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ClearPlaylistItemsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Collection.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Collection.cs deleted file mode 100644 index 6adbae6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Collection.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Collection - { - - /// - /// The user-made collection this media item belongs to - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapChannelMapping.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapChannelMapping.cs new file mode 100644 index 0000000..dd62e86 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapChannelMapping.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class ComputeChannelMapChannelMapping + { + + [JsonProperty("channelKey")] + public string? ChannelKey { get; set; } + + /// + /// The channel description on the device + /// + [JsonProperty("deviceIdentifier")] + public string? DeviceIdentifier { get; set; } + + [JsonProperty("favorite")] + public bool? Favorite { get; set; } + + /// + /// The channel identifier in the lineup + /// + [JsonProperty("lineupIdentifier")] + public string? LineupIdentifier { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapMediaContainer.cs new file mode 100644 index 0000000..9d36204 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class ComputeChannelMapMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("ChannelMapping")] + public List? ChannelMapping { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapRequest.cs new file mode 100644 index 0000000..c0960f6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ComputeChannelMapRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The URI describing the device + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=device")] + public string DeviceQueryParameter { get; set; } = default!; + + /// + /// The URI describing the lineup + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=lineup")] + public string Lineup { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapResponse.cs new file mode 100644 index 0000000..11a9834 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ComputeChannelMapResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public ComputeChannelMapResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapResponseBody.cs new file mode 100644 index 0000000..a6d4756 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ComputeChannelMapResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class ComputeChannelMapResponseBody + { + + [JsonProperty("MediaContainer")] + public ComputeChannelMapMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ConnectWebSocketRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ConnectWebSocketRequest.cs new file mode 100644 index 0000000..9f156f4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ConnectWebSocketRequest.cs @@ -0,0 +1,100 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class ConnectWebSocketRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example:
+ /// + /// + ///
+ /// - `filters=-log`: All event types except logs (the default).
+ /// - `filters=foo,bar`: Only the foo and bar event types.
+ /// - `filters=`: All events types.
+ /// - `filters=-foo,bar`: All event types except foo and bar.
+ /// + ///
+ ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=filter")] + public List? Filter { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ConnectWebSocketResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ConnectWebSocketResponse.cs new file mode 100644 index 0000000..19e3e48 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ConnectWebSocketResponse.cs @@ -0,0 +1,39 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ConnectWebSocketResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public byte[]? Bytes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Connection.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Connection.cs new file mode 100644 index 0000000..a26f1fd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Connection.cs @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class Connection + { + + [JsonProperty("address")] + public string? Address { get; set; } + + /// + /// Indicates if the connection is the server's LAN address + /// + [JsonProperty("local")] + public bool? Local { get; set; } + + [JsonProperty("port")] + public long? Port { get; set; } + + [JsonProperty("protocol")] + public string? Protocol { get; set; } + + /// + /// Indicates the connection is over a relayed connection + /// + [JsonProperty("relay")] + public bool? Relay { get; set; } + + [JsonProperty("uri")] + public string? Uri { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Connections.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Connections.cs deleted file mode 100644 index c220f78..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Connections.cs +++ /dev/null @@ -1,61 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Connections - { - - /// - /// The protocol used for the connection (http, https, etc) - /// - [JsonProperty("protocol")] - public Protocol Protocol { get; set; } = default!; - - /// - /// The (ip) address or domain name used for the connection - /// - [JsonProperty("address")] - public string Address { get; set; } = default!; - - /// - /// The port used for the connection - /// - [JsonProperty("port")] - public int Port { get; set; } = default!; - - /// - /// The full URI of the connection - /// - [JsonProperty("uri")] - public string Uri { get; set; } = default!; - - /// - /// If the connection is local address - /// - [JsonProperty("local")] - public bool Local { get; set; } = default!; - - /// - /// If the connection is relayed through plex.direct - /// - [JsonProperty("relay")] - public bool Relay { get; set; } = default!; - - /// - /// If the connection is using IPv6 - /// - [JsonProperty("IPv6")] - public bool IPv6 { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Context.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Context.cs deleted file mode 100644 index 15ddbe0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Context.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Context - { - - [JsonProperty("librarySectionID")] - public string? LibrarySectionID { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Country.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Country.cs index e5ad4a2..a3e410d 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Country.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Country.cs @@ -9,33 +9,53 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; - /// - /// The filter query string for country media items. - /// public class Country { /// - /// The unique identifier for the country.
+ /// Three letter code + ///
+ [JsonProperty("code")] + public string? Code { get; set; } + + [JsonProperty("example")] + public string? Example { get; set; } + + /// + /// - `0`: The country is divided into regions, and following the key will lead to a list of regions.
/// /// - /// NOTE: This is different for each Plex server and is not globally unique.
+ /// - `1`: The county is divided by postal codes, and an example code is returned in `example`.
+ /// - `2`: The country has a single postal code, returned in `example`.
/// ///
///
- [JsonProperty("id")] - public int Id { get; set; } = default!; + [JsonProperty("flavor")] + public Flavor? Flavor { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } /// - /// The country of origin of this media item + /// Three letter language code /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; + [JsonProperty("language")] + public string? Language { get; set; } - [JsonProperty("filter")] - public string Filter { get; set; } = default!; + /// + /// The title of the language + /// + [JsonProperty("languageTitle")] + public string? LanguageTitle { 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/LukeHagar/PlexAPI/SDK/Models/Requests/CreateCollectionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateCollectionRequest.cs new file mode 100644 index 0000000..c4592cc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateCollectionRequest.cs @@ -0,0 +1,114 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class CreateCollectionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The section where this collection will be created + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=sectionId")] + public string SectionId { get; set; } = default!; + + /// + /// The title to filter by or assign + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=title")] + public string? Title { get; set; } + + /// + /// Whether this is a smart collection/playlist + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=smart")] + public bool? Smart { get; set; } + + /// + /// The URI for processing the smart collection. Required for a smart collection + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=uri")] + public string? Uri { get; set; } + + /// + /// The metadata type to filter by + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long? Type { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateCollectionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateCollectionResponse.cs new file mode 100644 index 0000000..3470ad4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateCollectionResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class CreateCollectionResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateCustomHubRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateCustomHubRequest.cs new file mode 100644 index 0000000..ed68b52 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateCustomHubRequest.cs @@ -0,0 +1,114 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class CreateCustomHubRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The section ID for the hubs to reorder + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// The metadata item on which to base this hub. This must currently be a collection + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=metadataItemId")] + public long MetadataItemId { get; set; } = default!; + + /// + /// Whether this hub should be displayed in recommended + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=promotedToRecommended")] + public BoolInt? PromotedToRecommended { get; set; } + + /// + /// Whether this hub should be displayed in admin's home + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=promotedToOwnHome")] + public BoolInt? PromotedToOwnHome { get; set; } + + /// + /// Whether this hub should be displayed in shared user's home + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=promotedToSharedHome")] + public BoolInt? PromotedToSharedHome { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateCustomHubResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateCustomHubResponse.cs new file mode 100644 index 0000000..c3debcf --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateCustomHubResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class CreateCustomHubResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDVRRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDVRRequest.cs new file mode 100644 index 0000000..1b2ec5c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDVRRequest.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class CreateDVRRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The EPG lineup. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=lineup")] + public string? Lineup { get; set; } + + /// + /// The device. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=device")] + public List? DeviceQueryParameter { get; set; } + + /// + /// The language. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=language")] + public string? Language { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDVRResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDVRResponse.cs new file mode 100644 index 0000000..5a9d401 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDVRResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class CreateDVRResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public DvrRequestHandlerSlashGetResponses200? DvrRequestHandlerSlashGetResponses200 { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueMediaContainer.cs new file mode 100644 index 0000000..e9d24bb --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class CreateDownloadQueueMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("DownloadQueue")] + public List? DownloadQueue { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueResponse.cs new file mode 100644 index 0000000..01b35c7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class CreateDownloadQueueResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public CreateDownloadQueueResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueResponseBody.cs new file mode 100644 index 0000000..eb236bc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateDownloadQueueResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class CreateDownloadQueueResponseBody + { + + [JsonProperty("MediaContainer")] + public CreateDownloadQueueMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerMediaContainer.cs new file mode 100644 index 0000000..c5b18a3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerMediaContainer.cs @@ -0,0 +1,76 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class CreateMarkerMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("color")] + public string? Color { get; set; } + + [JsonProperty("endTimeOffset")] + public long? EndTimeOffset { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + [JsonProperty("startTimeOffset")] + public long? StartTimeOffset { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("type")] + public CreateMarkerType? Type { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerRequest.cs new file mode 100644 index 0000000..4763e93 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerRequest.cs @@ -0,0 +1,112 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class CreateMarkerRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + /// + /// The type of marker to edit/create + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long Type { get; set; } = default!; + + /// + /// The start time of the marker + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=startTimeOffset")] + public long StartTimeOffset { get; set; } = default!; + + /// + /// The end time of the marker + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=endTimeOffset")] + public long? EndTimeOffset { get; set; } + + /// + /// The attributes to assign to this marker + /// + [SpeakeasyMetadata("queryParam:style=deepObject,explode=true,name=attributes")] + public Attributes? Attributes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerResponse.cs new file mode 100644 index 0000000..26f896e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class CreateMarkerResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public CreateMarkerResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerResponseBody.cs new file mode 100644 index 0000000..703b546 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class CreateMarkerResponseBody + { + + [JsonProperty("MediaContainer")] + public CreateMarkerMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerType.cs new file mode 100644 index 0000000..1d62378 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateMarkerType.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum CreateMarkerType + { + [JsonProperty("intro")] + Intro, + [JsonProperty("commercial")] + Commercial, + [JsonProperty("bookmark")] + Bookmark, + [JsonProperty("resume")] + Resume, + [JsonProperty("credit")] + Credit, + } + + public static class CreateMarkerTypeExtension + { + public static string Value(this CreateMarkerType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static CreateMarkerType ToEnum(this string value) + { + foreach(var field in typeof(CreateMarkerType).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 CreateMarkerType) + { + return (CreateMarkerType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum CreateMarkerType"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueMediaContainer.cs new file mode 100644 index 0000000..32a74c1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueMediaContainer.cs @@ -0,0 +1,107 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class CreatePlayQueueMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + /// + /// The ID of the play queue, which is used in subsequent requests. + /// + [JsonProperty("playQueueID")] + public long? PlayQueueID { get; set; } + + /// + /// Defines where the "Up Next" region starts + /// + [JsonProperty("playQueueLastAddedItemID")] + public string? PlayQueueLastAddedItemID { get; set; } + + /// + /// The queue item ID of the currently selected item. + /// + [JsonProperty("playQueueSelectedItemID")] + public long? PlayQueueSelectedItemID { get; set; } + + /// + /// The offset of the selected item in the play queue, from the beginning of the queue. + /// + [JsonProperty("playQueueSelectedItemOffset")] + public long? PlayQueueSelectedItemOffset { get; set; } + + /// + /// The metadata item ID of the currently selected item (matches `ratingKey` attribute in metadata item if the media provider is a library). + /// + [JsonProperty("playQueueSelectedMetadataItemID")] + public long? PlayQueueSelectedMetadataItemID { get; set; } + + /// + /// Whether or not the queue is shuffled. + /// + [JsonProperty("playQueueShuffled")] + public bool? PlayQueueShuffled { get; set; } + + /// + /// The original URI used to create the play queue. + /// + [JsonProperty("playQueueSourceURI")] + public string? PlayQueueSourceURI { get; set; } + + /// + /// The total number of items in the play queue. + /// + [JsonProperty("playQueueTotalCount")] + public long? PlayQueueTotalCount { get; set; } + + /// + /// The version of the play queue. It increments every time a change is made to the play queue to assist clients in knowing when to refresh. + /// + [JsonProperty("playQueueVersion")] + public long? PlayQueueVersion { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueRequest.cs new file mode 100644 index 0000000..66d4484 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueRequest.cs @@ -0,0 +1,145 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class CreatePlayQueueRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The content URI for what we're playing. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=uri")] + public string? Uri { get; set; } + + /// + /// the ID of the playlist we're playing. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=playlistID")] + public long? PlaylistID { get; set; } + + /// + /// The type of play queue to create + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public Models.Requests.Type Type { get; set; } = default!; + + /// + /// The key of the first item to play, defaults to the first in the play queue. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=key")] + public string? Key { get; set; } + + /// + /// Whether to shuffle the playlist, defaults to 0. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=shuffle")] + public BoolInt? Shuffle { get; set; } + + /// + /// If the PQ is bigger than the window, fill any empty space with wraparound items, defaults to 0. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=repeat")] + public BoolInt? Repeat { get; set; } + + /// + /// Whether to create a continuous play queue (e.g. from an episode), defaults to 0. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=continuous")] + public BoolInt? Continuous { get; set; } + + /// + /// Number of trailers to prepend a movie with not including the pre-roll. If omitted the pre-roll will not be returned in the play queue. When resuming a movie `extrasPrefixCount` should be omitted as a parameter instead of passing 0. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=extrasPrefixCount")] + public long? ExtrasPrefixCount { get; set; } + + /// + /// Only applies to queues of type photo, whether to retrieve all descendent photos from an album or section, defaults to 1. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=recursive")] + public BoolInt? Recursive { get; set; } + + /// + /// Only applies to queues of type show or seasons, whether to return a queue that is started on the On Deck episode if one exists. Otherwise begins the play queue on the beginning of the show or season. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=onDeck")] + public BoolInt? OnDeck { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueResponse.cs new file mode 100644 index 0000000..274090c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class CreatePlayQueueResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public CreatePlayQueueResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueResponseBody.cs new file mode 100644 index 0000000..d702260 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlayQueueResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class CreatePlayQueueResponseBody + { + + [JsonProperty("MediaContainer")] + public CreatePlayQueueMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistMediaContainer.cs deleted file mode 100644 index 44df662..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistMediaContainer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class CreatePlaylistMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistMetadata.cs deleted file mode 100644 index b907bab..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistMetadata.cs +++ /dev/null @@ -1,66 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class CreatePlaylistMetadata - { - - [JsonProperty("ratingKey")] - public string? RatingKey { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("guid")] - public string? Guid { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("summary")] - public string? Summary { get; set; } - - [JsonProperty("smart")] - public bool? Smart { get; set; } - - [JsonProperty("playlistType")] - public string? PlaylistType { get; set; } - - [JsonProperty("icon")] - public string? Icon { get; set; } - - [JsonProperty("viewCount")] - public int? ViewCount { get; set; } - - [JsonProperty("lastViewedAt")] - public int? LastViewedAt { get; set; } - - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - [JsonProperty("addedAt")] - public int? AddedAt { get; set; } - - [JsonProperty("updatedAt")] - public int? UpdatedAt { get; set; } - - [JsonProperty("composite")] - public string? Composite { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistQueryParamType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistQueryParamType.cs deleted file mode 100644 index 2d219b9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistQueryParamType.cs +++ /dev/null @@ -1,80 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// type of playlist to create - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class CreatePlaylistQueryParamType : IEquatable - { - public static readonly CreatePlaylistQueryParamType Audio = new CreatePlaylistQueryParamType("audio"); - public static readonly CreatePlaylistQueryParamType Video = new CreatePlaylistQueryParamType("video"); - public static readonly CreatePlaylistQueryParamType Photo = new CreatePlaylistQueryParamType("photo"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["audio"] = Audio, - ["video"] = Video, - ["photo"] = Photo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private CreatePlaylistQueryParamType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static CreatePlaylistQueryParamType Of(string value) - { - return _values.GetOrAdd(value, _ => new CreatePlaylistQueryParamType(value)); - } - - public static implicit operator CreatePlaylistQueryParamType(string value) => Of(value); - public static implicit operator string(CreatePlaylistQueryParamType createplaylistqueryparamtype) => createplaylistqueryparamtype.Value; - - public static CreatePlaylistQueryParamType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as CreatePlaylistQueryParamType); - - public bool Equals(CreatePlaylistQueryParamType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistRequest.cs index f1bb9e0..bcde121 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistRequest.cs @@ -9,45 +9,88 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; public class CreatePlaylistRequest { /// - /// name of the playlist + /// Indicates the client accepts the indicated media types /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=title")] - public string Title { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; /// - /// type of playlist to create + /// An opaque identifier unique to the client /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] - public CreatePlaylistQueryParamType Type { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } /// - /// whether the playlist is smart or not + /// The name of the client product /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=smart")] - public Smart Smart { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } /// - /// the content URI for the playlist + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The content URI for what we're playing (e.g. `library://...`). /// [SpeakeasyMetadata("queryParam:style=form,explode=true,name=uri")] - public string Uri { get; set; } = default!; + public string? Uri { get; set; } /// - /// the play queue to copy to a playlist + /// To create a playlist from an existing play queue. /// [SpeakeasyMetadata("queryParam:style=form,explode=true,name=playQueueID")] - public double? PlayQueueID { get; set; } + public long? PlayQueueID { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistResponse.cs index b7d3951..a8a0f7c 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistResponse.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistResponse.cs @@ -9,7 +9,7 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; using System; using System.Net.Http; @@ -33,8 +33,8 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public HttpResponseMessage RawResponse { get; set; } = default!; /// - /// returns all playlists + /// OK /// - public CreatePlaylistResponseBody? Object { get; set; } + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistResponseBody.cs deleted file mode 100644 index 8262b8b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/CreatePlaylistResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// returns all playlists - /// - public class CreatePlaylistResponseBody - { - - [JsonProperty("MediaContainer")] - public CreatePlaylistMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionMediaContainer.cs new file mode 100644 index 0000000..b71b4ed --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class CreateSubscriptionMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("MediaSubscription")] + public List? MediaSubscription { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionQueryParamPrefs.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionQueryParamPrefs.cs new file mode 100644 index 0000000..e73e54a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionQueryParamPrefs.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// Subscription preferences. + /// + public class CreateSubscriptionQueryParamPrefs + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionRequest.cs new file mode 100644 index 0000000..268af06 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionRequest.cs @@ -0,0 +1,127 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class CreateSubscriptionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The library section into which we'll grab the media. Not actually required when the subscription is to a playlist. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=targetLibrarySectionID")] + public long? TargetLibrarySectionID { get; set; } + + /// + /// The section location into which to grab. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=targetSectionLocationID")] + public long? TargetSectionLocationID { get; set; } + + /// + /// The type of the thing we're subscribing too (e.g. show, season). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long? Type { get; set; } + + /// + /// Hints describing what we're looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote. + /// + [SpeakeasyMetadata("queryParam:style=deepObject,explode=true,name=hints")] + public Hints? Hints { get; set; } + + /// + /// Subscription preferences. + /// + [SpeakeasyMetadata("queryParam:style=deepObject,explode=true,name=prefs")] + public CreateSubscriptionQueryParamPrefs? Prefs { get; set; } + + /// + /// Subscription parameters.
+ /// + /// + /// - `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into
+ /// - `source`: Required for downloads to indicate the source of the downloaded content.
+ /// + ///
+ ///
+ [SpeakeasyMetadata("queryParam:style=deepObject,explode=true,name=params")] + public Params? Params { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionResponse.cs new file mode 100644 index 0000000..1650395 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class CreateSubscriptionResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public CreateSubscriptionResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionResponseBody.cs new file mode 100644 index 0000000..55d492d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/CreateSubscriptionResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class CreateSubscriptionResponseBody + { + + [JsonProperty("MediaContainer")] + public CreateSubscriptionMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DecisionResult.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DecisionResult.cs new file mode 100644 index 0000000..420d1a5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DecisionResult.cs @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class DecisionResult + { + + /// + /// The maximum bitrate set when item was added + /// + [JsonProperty("availableBandwidth")] + public long? AvailableBandwidth { get; set; } + + [JsonProperty("directPlayDecisionCode")] + public long? DirectPlayDecisionCode { get; set; } + + [JsonProperty("directPlayDecisionText")] + public string? DirectPlayDecisionText { get; set; } + + [JsonProperty("generalDecisionCode")] + public long? GeneralDecisionCode { get; set; } + + [JsonProperty("generalDecisionText")] + public string? GeneralDecisionText { get; set; } + + /// + /// The code indicating the status of evaluation of playback when client indicates `hasMDE=1` + /// + [JsonProperty("mdeDecisionCode")] + public long? MdeDecisionCode { get; set; } + + /// + /// Descriptive text for the above code + /// + [JsonProperty("mdeDecisionText")] + public string? MdeDecisionText { get; set; } + + [JsonProperty("transcodeDecisionCode")] + public long? TranscodeDecisionCode { get; set; } + + [JsonProperty("transcodeDecisionText")] + public string? TranscodeDecisionText { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DefaultSubtitleAccessibility.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DefaultSubtitleAccessibility.cs deleted file mode 100644 index 2cfa801..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/DefaultSubtitleAccessibility.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles) - /// - public enum DefaultSubtitleAccessibility - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DefaultSubtitleForced.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DefaultSubtitleForced.cs deleted file mode 100644 index 6f46977..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/DefaultSubtitleForced.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles) - /// - public enum DefaultSubtitleForced - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCachesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCachesResponse.cs new file mode 100644 index 0000000..1034b72 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCachesResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteCachesResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionItemRequest.cs new file mode 100644 index 0000000..569a1be --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionItemRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteCollectionItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The collection id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=collectionId")] + public long CollectionId { get; set; } = default!; + + /// + /// The item to delete + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=itemId")] + public long ItemId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionItemResponse.cs new file mode 100644 index 0000000..783067c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionItemResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteCollectionItemResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionRequest.cs new file mode 100644 index 0000000..d6d9725 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteCollectionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// Collection Id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=collectionId")] + public long CollectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionResponse.cs new file mode 100644 index 0000000..e4f7983 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCollectionResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteCollectionResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCustomHubRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCustomHubRequest.cs new file mode 100644 index 0000000..b95bbec --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCustomHubRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteCustomHubRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The section ID for the hubs to change + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// The identifier of the hub to change + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=identifier")] + public string Identifier { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCustomHubResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCustomHubResponse.cs new file mode 100644 index 0000000..0046932 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteCustomHubResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteCustomHubResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteDVRRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteDVRRequest.cs new file mode 100644 index 0000000..d4fa66a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteDVRRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteDVRRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the DVR. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=dvrId")] + public long DvrId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteDVRResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteDVRResponse.cs new file mode 100644 index 0000000..8edb01b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteDVRResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteDVRResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteHistoryRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteHistoryRequest.cs new file mode 100644 index 0000000..b422acd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteHistoryRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteHistoryRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The id of the history item (the `historyKey` from above) + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=historyId")] + public long HistoryId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteHistoryResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteHistoryResponse.cs new file mode 100644 index 0000000..34915ea --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteHistoryResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class DeleteHistoryResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public Models.Components.MediaContainer? MediaContainer { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIndexesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIndexesRequest.cs new file mode 100644 index 0000000..c259cdd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIndexesRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteIndexesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIndexesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIndexesResponse.cs new file mode 100644 index 0000000..f0dfe1f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIndexesResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteIndexesResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIntrosRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIntrosRequest.cs new file mode 100644 index 0000000..7c66f9f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIntrosRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteIntrosRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIntrosResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIntrosResponse.cs new file mode 100644 index 0000000..f09cc01 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteIntrosResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteIntrosResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibraryRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibraryRequest.cs deleted file mode 100644 index c4caec5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibraryRequest.cs +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class DeleteLibraryRequest - { - - /// - /// The unique key of the Plex library.
- /// - /// - /// Note: This is unique in the context of the Plex server.
- /// - ///
- ///
- [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")] - public int SectionKey { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibraryResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibraryResponse.cs deleted file mode 100644 index f672400..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibraryResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibrarySectionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibrarySectionRequest.cs new file mode 100644 index 0000000..57f667c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibrarySectionRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteLibrarySectionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public string SectionId { get; set; } = default!; + + /// + /// If set, response will return an activity with the actual deletion process. Otherwise request will return when deletion is complete + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=async")] + public BoolInt? Async { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibrarySectionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibrarySectionResponse.cs new file mode 100644 index 0000000..09b848f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLibrarySectionResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteLibrarySectionResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupDVR.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupDVR.cs new file mode 100644 index 0000000..a96ed9b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupDVR.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class DeleteLineupDVR + { + + [JsonProperty("Device")] + public List? Device { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("language")] + public string? Language { get; set; } + + [JsonProperty("lineup")] + public string? Lineup { get; set; } + + [JsonProperty("uuid")] + public string? Uuid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupDVRsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupDVRsMediaContainer.cs new file mode 100644 index 0000000..910bbc9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupDVRsMediaContainer.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class DeleteLineupDVRsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + /// + /// A status indicator. If present and non-zero, indicates an error + /// + [JsonProperty("status")] + public long? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupMediaContainer.cs new file mode 100644 index 0000000..15a6788 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupMediaContainer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class DeleteLineupMediaContainer + { + + [JsonProperty("MediaContainer")] + public DeleteLineupDVRsMediaContainer? MediaContainer { get; set; } + + [JsonProperty("DVR")] + public List? Dvr { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupRequest.cs new file mode 100644 index 0000000..fd9dcfb --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteLineupRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the DVR. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=dvrId")] + public long DvrId { get; set; } = default!; + + /// + /// The lineup to delete + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=lineup")] + public string Lineup { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupResponse.cs new file mode 100644 index 0000000..dc71fd3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class DeleteLineupResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public DeleteLineupResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupResponseBody.cs new file mode 100644 index 0000000..7872911 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteLineupResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class DeleteLineupResponseBody + { + + [JsonProperty("MediaContainer")] + public DeleteLineupMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMarkerRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMarkerRequest.cs new file mode 100644 index 0000000..4113b40 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMarkerRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteMarkerRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=marker")] + public string Marker { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMarkerResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMarkerResponse.cs new file mode 100644 index 0000000..105e28d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMarkerResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteMarkerResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaItemRequest.cs new file mode 100644 index 0000000..476e2af --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaItemRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteMediaItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=mediaItem")] + public string MediaItem { get; set; } = default!; + + /// + /// Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=proxy")] + public BoolInt? Proxy { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaItemResponse.cs new file mode 100644 index 0000000..9284cbf --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaItemResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteMediaItemResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaProviderRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaProviderRequest.cs new file mode 100644 index 0000000..72140f3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaProviderRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteMediaProviderRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the media provider to delete + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=provider")] + public string Provider { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaProviderResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaProviderResponse.cs new file mode 100644 index 0000000..031588c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMediaProviderResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteMediaProviderResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMetadataItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMetadataItemRequest.cs new file mode 100644 index 0000000..6026f5a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMetadataItemRequest.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteMetadataItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + /// + /// Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=proxy")] + public BoolInt? Proxy { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMetadataItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMetadataItemResponse.cs new file mode 100644 index 0000000..6775241 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteMetadataItemResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteMetadataItemResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlayQueueItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlayQueueItemRequest.cs new file mode 100644 index 0000000..6451bcd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlayQueueItemRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeletePlayQueueItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the play queue. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playQueueId")] + public long PlayQueueId { get; set; } = default!; + + /// + /// The play queue item ID to delete. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playQueueItemId")] + public long PlayQueueItemId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlayQueueItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlayQueueItemResponse.cs new file mode 100644 index 0000000..acc170b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlayQueueItemResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeletePlayQueueItemResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistItemRequest.cs new file mode 100644 index 0000000..2130f1f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistItemRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeletePlaylistItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistId")] + public long PlaylistId { get; set; } = default!; + + /// + /// The generator item ID to delete. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=generatorId")] + public long GeneratorId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistItemResponse.cs new file mode 100644 index 0000000..7082e11 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistItemResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeletePlaylistItemResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistRequest.cs index 5519cb1..17d4044 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeletePlaylistRequest.cs @@ -9,15 +9,82 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; public class DeletePlaylistRequest { /// - /// the ID of the playlist + /// Indicates the client accepts the indicated media types /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistID")] - public double PlaylistID { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistId")] + public long PlaylistId { get; set; } = default!; } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteStreamRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteStreamRequest.cs new file mode 100644 index 0000000..2a1f054 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteStreamRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteStreamRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The id of the stream + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=streamId")] + public long StreamId { get; set; } = default!; + + /// + /// This is not a part of this endpoint but documented here to satisfy OpenAPI + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ext")] + public string Ext { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteStreamResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteStreamResponse.cs new file mode 100644 index 0000000..809a768 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteStreamResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteStreamResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteSubscriptionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteSubscriptionRequest.cs new file mode 100644 index 0000000..97430cd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteSubscriptionRequest.cs @@ -0,0 +1,87 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DeleteSubscriptionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriptionId")] + public long SubscriptionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteSubscriptionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteSubscriptionResponse.cs new file mode 100644 index 0000000..6cba4da --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeleteSubscriptionResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DeleteSubscriptionResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DetectAdsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectAdsRequest.cs new file mode 100644 index 0000000..96763c2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectAdsRequest.cs @@ -0,0 +1,87 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DetectAdsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DetectAdsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectAdsResponse.cs new file mode 100644 index 0000000..e0720b2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectAdsResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DetectAdsResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DetectCreditsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectCreditsRequest.cs new file mode 100644 index 0000000..75582e5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectCreditsRequest.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DetectCreditsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")] + public BoolInt? Force { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=manual")] + public BoolInt? Manual { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DetectCreditsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectCreditsResponse.cs new file mode 100644 index 0000000..a835ffe --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectCreditsResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DetectCreditsResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DetectIntrosRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectIntrosRequest.cs new file mode 100644 index 0000000..a5e4724 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectIntrosRequest.cs @@ -0,0 +1,99 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DetectIntrosRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + /// + /// Indicate whether detection should be re-run + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")] + public BoolInt? Force { get; set; } + + /// + /// The threshold for determining if content is an intro or not + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=threshold")] + public double? Threshold { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DetectIntrosResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectIntrosResponse.cs new file mode 100644 index 0000000..1f27605 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectIntrosResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DetectIntrosResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DetectVoiceActivityRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectVoiceActivityRequest.cs new file mode 100644 index 0000000..ff94973 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectVoiceActivityRequest.cs @@ -0,0 +1,99 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class DetectVoiceActivityRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + /// + /// Indicate whether detection should be re-run + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")] + public BoolInt? Force { get; set; } + + /// + /// Indicate whether detection is manually run + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=manual")] + public BoolInt? Manual { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DetectVoiceActivityResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectVoiceActivityResponse.cs new file mode 100644 index 0000000..e9d0f3f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DetectVoiceActivityResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DetectVoiceActivityResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Device.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Device.cs index 118dc08..d8aab2d 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Device.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Device.cs @@ -9,25 +9,24 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; + using System.Collections.Generic; 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("accessToken")] + public string? AccessToken { get; set; } [JsonProperty("clientIdentifier")] public string? ClientIdentifier { get; set; } - [JsonProperty("createdAt")] - public double? CreatedAt { get; set; } + [JsonProperty("Connection")] + public List? Connection { get; set; } + + [JsonProperty("name")] + public string? Name { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DeviceChannel.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DeviceChannel.cs new file mode 100644 index 0000000..dbbf382 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DeviceChannel.cs @@ -0,0 +1,45 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class DeviceChannel + { + + /// + /// Indicates the channel is DRMed and thus may not be playable + /// + [JsonProperty("drm")] + public bool? Drm { get; set; } + + [JsonProperty("favorite")] + public bool? Favorite { get; set; } + + [JsonProperty("hd")] + public bool? Hd { get; set; } + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("name")] + public string? Name { get; set; } + + [JsonProperty("signalQuality")] + public long? SignalQuality { get; set; } + + [JsonProperty("signalStrength")] + public long? SignalStrength { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Director.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Director.cs deleted file mode 100644 index a5b5c8d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Director.cs +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Director - { - - /// - /// Unique identifier for the director. - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The filter string used to query this director. - /// - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - /// - /// The role of Director - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// A unique 24-character hexadecimal key associated with the director's tag, used for internal identification. - /// - [JsonProperty("tagKey")] - public string TagKey { get; set; } = default!; - - /// - /// The absolute URL of the thumbnail image for the director. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Directory.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Directory.cs index 7c2601e..63d1271 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Directory.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Directory.cs @@ -15,13 +15,37 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class Directory { - [JsonProperty("count")] - public double? Count { get; set; } + /// + /// The filter string to view metadata wit this tag + /// + [JsonProperty("filter")] + public string? Filter { get; set; } - [JsonProperty("key")] - public string? Key { get; set; } + [JsonProperty("id")] + public long? Id { get; set; } - [JsonProperty("title")] - public string? Title { get; set; } + /// + /// The name of the tag + /// + [JsonProperty("tag")] + public string? Tag { get; set; } + + /// + /// The key of this tag. This is a universal key across all PMS instances and plex.tv services + /// + [JsonProperty("tagKey")] + public string? TagKey { get; set; } + + /// + /// The type of the tag + /// + [JsonProperty("tagType")] + public long? TagType { get; set; } + + /// + /// The URL to a thumbnail for this tag + /// + [JsonProperty("thumb")] + public string? Thumb { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DiscoverDevicesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DiscoverDevicesResponse.cs new file mode 100644 index 0000000..fb4f7d7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DiscoverDevicesResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class DiscoverDevicesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithDevice? MediaContainerWithDevice { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Download.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Download.cs deleted file mode 100644 index ffbc46a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Download.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// 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/LukeHagar/PlexAPI/SDK/Models/Requests/DownloadQueue.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DownloadQueue.cs new file mode 100644 index 0000000..b59dff1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DownloadQueue.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class DownloadQueue + { + + [JsonProperty("id")] + public long? Id { get; set; } + + [JsonProperty("itemCount")] + public long? ItemCount { get; set; } + + /// + /// The state of this queue
+ /// + /// + /// - deciding: At least one item is still being decided
+ /// - waiting: At least one item is waiting for transcode and none are currently transcoding
+ /// - processing: At least one item is being transcoded
+ /// - done: All items are available (or potentially expired)
+ /// - error: At least one item has encountered an error
+ /// + ///
+ ///
+ [JsonProperty("status")] + public Models.Requests.Status? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/DownloadQueueItem.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/DownloadQueueItem.cs new file mode 100644 index 0000000..7d1e39f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/DownloadQueueItem.cs @@ -0,0 +1,66 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class DownloadQueueItem + { + + [JsonProperty("DecisionResult")] + public DecisionResult? DecisionResult { get; set; } + + /// + /// The error encountered in transcoding or decision + /// + [JsonProperty("error")] + public string? Error { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("queueId")] + public long? QueueId { get; set; } + + /// + /// The state of the item:
+ /// + /// + /// - deciding: The item decision is pending
+ /// - waiting: The item is waiting for transcode
+ /// - processing: The item is being transcoded
+ /// - available: The item is available for download
+ /// - error: The item encountered an error in the decision or transcode
+ /// - expired: The transcoded item has timed out and is no longer available
+ /// + ///
+ ///
+ [JsonProperty("status")] + public ListDownloadQueueItemsStatus? Status { get; set; } + + /// + /// The transcode session object which is not yet documented otherwise it'd be a $ref here. + /// + [JsonProperty("transcode")] + public Transcode? Transcode { get; set; } + + /// + /// The transcode session if item is currently being transcoded + /// + [JsonProperty("TranscodeSession")] + public TranscodeSession? TranscodeSession { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Dvr.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Dvr.cs new file mode 100644 index 0000000..f80899f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Dvr.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class Dvr + { + + [JsonProperty("Device")] + public List? Device { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("language")] + public string? Language { get; set; } + + [JsonProperty("lineup")] + public string? Lineup { get; set; } + + [JsonProperty("uuid")] + public string? Uuid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EditMarkerRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EditMarkerRequest.cs new file mode 100644 index 0000000..837e7f0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EditMarkerRequest.cs @@ -0,0 +1,118 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class EditMarkerRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + /// + /// The id of the marker to edit + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=marker")] + public string Marker { get; set; } = default!; + + /// + /// The type of marker to edit/create + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long Type { get; set; } = default!; + + /// + /// The start time of the marker + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=startTimeOffset")] + public long StartTimeOffset { get; set; } = default!; + + /// + /// The end time of the marker + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=endTimeOffset")] + public long? EndTimeOffset { get; set; } + + /// + /// The attributes to assign to this marker + /// + [SpeakeasyMetadata("queryParam:style=deepObject,explode=true,name=attributes")] + public QueryParamAttributes? Attributes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EditMarkerResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EditMarkerResponse.cs new file mode 100644 index 0000000..c4cedc5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EditMarkerResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class EditMarkerResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public PostResponses200? PostResponses200 { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EditMetadataItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EditMetadataItemRequest.cs new file mode 100644 index 0000000..07a314d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EditMetadataItemRequest.cs @@ -0,0 +1,95 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class EditMetadataItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public List Ids { get; set; } = default!; + + /// + /// The new values for the metadata item + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=args")] + public Args? Args { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EditMetadataItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EditMetadataItemResponse.cs new file mode 100644 index 0000000..02c3c6b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EditMetadataItemResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class EditMetadataItemResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionQueryParamPrefs.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionQueryParamPrefs.cs new file mode 100644 index 0000000..b08f3db --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionQueryParamPrefs.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// The preferences for this section + /// + public class EditSectionQueryParamPrefs + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionRequest.cs new file mode 100644 index 0000000..9e9a3a8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionRequest.cs @@ -0,0 +1,134 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class EditSectionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public string SectionId { get; set; } = default!; + + /// + /// The name of the new section + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=name")] + public string? Name { get; set; } + + /// + /// The scanner this section should use + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=scanner")] + public string? Scanner { get; set; } + + /// + /// The agent this section should use for metadata + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=agent")] + public string Agent { get; set; } = default!; + + /// + /// The agent group id for this section + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=metadataAgentProviderGroupId")] + public string? MetadataAgentProviderGroupId { get; set; } + + /// + /// The language of this section + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=language")] + public string? Language { get; set; } + + /// + /// The locations on disk to add to this section + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=locations")] + public List? Locations { get; set; } + + /// + /// The preferences for this section + /// + [SpeakeasyMetadata("queryParam:style=deepObject,explode=true,name=prefs")] + public EditSectionQueryParamPrefs? Prefs { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionResponse.cs new file mode 100644 index 0000000..61b9dc9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EditSectionResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class EditSectionResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesQueryParamPrefs.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesQueryParamPrefs.cs new file mode 100644 index 0000000..bd444ac --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesQueryParamPrefs.cs @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + public class EditSubscriptionPreferencesQueryParamPrefs + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesRequest.cs new file mode 100644 index 0000000..14268ce --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesRequest.cs @@ -0,0 +1,91 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class EditSubscriptionPreferencesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriptionId")] + public long SubscriptionId { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=deepObject,explode=true,name=prefs")] + public EditSubscriptionPreferencesQueryParamPrefs? Prefs { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesResponse.cs new file mode 100644 index 0000000..d70093b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EditSubscriptionPreferencesResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class EditSubscriptionPreferencesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithSubscription? MediaContainerWithSubscription { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Element.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Element.cs new file mode 100644 index 0000000..7ad037b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Element.cs @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum Element + { + [JsonProperty("thumb")] + Thumb, + [JsonProperty("art")] + Art, + [JsonProperty("clearLogo")] + ClearLogo, + [JsonProperty("banner")] + Banner, + [JsonProperty("poster")] + Poster, + [JsonProperty("theme")] + Theme, + } + + public static class ElementExtension + { + public static string Value(this Element value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Element ToEnum(this string value) + { + foreach(var field in typeof(Element).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 Element) + { + return (Element)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Element"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EmptyTrashRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EmptyTrashRequest.cs new file mode 100644 index 0000000..0c202ac --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EmptyTrashRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class EmptyTrashRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EmptyTrashResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EmptyTrashResponse.cs new file mode 100644 index 0000000..618c7b4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EmptyTrashResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class EmptyTrashResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EnablePaperTrailResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EnablePaperTrailResponse.cs deleted file mode 100644 index 7ee28cb..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/EnablePaperTrailResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EnablePapertrailRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EnablePapertrailRequest.cs new file mode 100644 index 0000000..193fcf1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EnablePapertrailRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class EnablePapertrailRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The number of minutes logging should be sent to Papertrail + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=minutes")] + public long? Minutes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/EnablePapertrailResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/EnablePapertrailResponse.cs new file mode 100644 index 0000000..bc57330 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/EnablePapertrailResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Extension.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Extension.cs new file mode 100644 index 0000000..122d994 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Extension.cs @@ -0,0 +1,64 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// Extension
+ /// + /// + /// + /// + ///
+ public enum Extension + { + [JsonProperty("m3u8")] + M3u8, + [JsonProperty("mpd")] + Mpd, + } + + public static class ExtensionExtension + { + public static string Value(this Extension value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Extension ToEnum(this string value) + { + foreach(var field in typeof(Extension).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 Extension) + { + return (Extension)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Extension"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Extras.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Extras.cs deleted file mode 100644 index b15b0e4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Extras.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Extras - { - - /// - /// The size of the extras. - /// - [JsonProperty("size")] - public long? Size { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Feature.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Feature.cs index 1dbd248..bebd9e5 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Feature.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Feature.cs @@ -9,7 +9,7 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; using System.Collections.Generic; @@ -17,25 +17,13 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class Feature { + [JsonProperty("Directory")] + public List? Directory { get; set; } + [JsonProperty("key")] public string? Key { get; set; } [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("flavor")] - public string? Flavor { get; set; } - - [JsonProperty("scrobbleKey")] - public string? ScrobbleKey { get; set; } - - [JsonProperty("unscrobbleKey")] - public string? UnscrobbleKey { get; set; } - - [JsonProperty("Directory")] - public List? Directory { get; set; } - - [JsonProperty("Action")] - public List? Action { get; set; } + public string? Type { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Field.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Field.cs deleted file mode 100644 index a73fb65..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Field.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Field - { - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("subType")] - public string? SubType { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/FieldType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/FieldType.cs deleted file mode 100644 index 36cebfe..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/FieldType.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class FieldType - { - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("Operator")] - public List Operator { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Filter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Filter.cs deleted file mode 100644 index 41e7ca8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Filter.cs +++ /dev/null @@ -1,80 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Filter - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class Filter : IEquatable - { - public static readonly Filter All = new Filter("all"); - public static readonly Filter Available = new Filter("available"); - public static readonly Filter Released = new Filter("released"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["all"] = All, - ["available"] = Available, - ["released"] = Released - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private Filter(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static Filter Of(string value) - { - return _values.GetOrAdd(value, _ => new Filter(value)); - } - - public static implicit operator Filter(string value) => Of(value); - public static implicit operator string(Filter filter) => filter.Value; - - public static Filter[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as Filter); - - public bool Equals(Filter? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/FlattenSeasons.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/FlattenSeasons.cs deleted file mode 100644 index b13550f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/FlattenSeasons.cs +++ /dev/null @@ -1,84 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
- /// - /// - /// - /// - ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class FlattenSeasons : IEquatable - { - public static readonly FlattenSeasons LibraryDefault = new FlattenSeasons("-1"); - public static readonly FlattenSeasons Hide = new FlattenSeasons("0"); - public static readonly FlattenSeasons Show = new FlattenSeasons("1"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["-1"] = LibraryDefault, - ["0"] = Hide, - ["1"] = Show - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private FlattenSeasons(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static FlattenSeasons Of(string value) - { - return _values.GetOrAdd(value, _ => new FlattenSeasons(value)); - } - - public static implicit operator FlattenSeasons(string value) => Of(value); - public static implicit operator string(FlattenSeasons flattenseasons) => flattenseasons.Value; - - public static FlattenSeasons[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as FlattenSeasons); - - public bool Equals(FlattenSeasons? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Flavor.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Flavor.cs new file mode 100644 index 0000000..6e98fbe --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Flavor.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// - `0`: The country is divided into regions, and following the key will lead to a list of regions.
+ /// + /// + /// - `1`: The county is divided by postal codes, and an example code is returned in `example`.
+ /// - `2`: The country has a single postal code, returned in `example`.
+ /// + ///
+ ///
+ public enum Flavor + { + Zero = 0, + One = 1, + Two = 2, + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Force.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Force.cs deleted file mode 100644 index 99233e4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Force.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Force the refresh even if the library is already being refreshed. - /// - public enum Force - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Format.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Format.cs new file mode 100644 index 0000000..418dc70 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Format.cs @@ -0,0 +1,64 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The output format for the image; defaults to jpg + /// + public enum Format + { + [JsonProperty("jpg")] + Jpg, + [JsonProperty("jpeg")] + Jpeg, + [JsonProperty("png")] + Png, + [JsonProperty("ppm")] + Ppm, + } + + public static class FormatExtension + { + public static string Value(this Format value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Format ToEnum(this string value) + { + foreach(var field in typeof(Format).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 Format) + { + return (Format)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Format"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Friend.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Friend.cs deleted file mode 100644 index 74ef16b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Friend.cs +++ /dev/null @@ -1,89 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class Friend - { - - /// - /// The account email address - /// - [JsonProperty("email")] - public string Email { get; set; } = default!; - - /// - /// The account full name - /// - [JsonProperty("friendlyName", NullValueHandling = NullValueHandling.Include)] - public string? FriendlyName { get; set; } - - /// - /// If the account is a Plex Home user - /// - [JsonProperty("home")] - public bool Home { get; set; } = default!; - - /// - /// The Plex account ID - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// If the account is a Plex Home managed user - /// - [JsonProperty("restricted")] - public bool? Restricted { get; set; } = false; - - [JsonProperty("sharedServers")] - public List SharedServers { get; set; } = default!; - - [JsonProperty("sharedSources")] - public List SharedSources { get; set; } = default!; - - /// - /// Current friend request status - /// - [JsonProperty("status")] - public Status Status { get; set; } = default!; - - /// - /// URL of the account thumbnail - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The title of the account (username or friendly name) - /// - [JsonProperty("title")] - public string Title { get; set; } = default!; - - /// - /// The account username - /// - [JsonProperty("username")] - public string Username { get; set; } = default!; - - /// - /// The account Universally Unique Identifier (UUID) - /// - [JsonProperty("uuid")] - public string Uuid { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GenerateThumbsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GenerateThumbsRequest.cs new file mode 100644 index 0000000..6dfecce --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GenerateThumbsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GenerateThumbsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")] + public BoolInt? Force { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GenerateThumbsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GenerateThumbsResponse.cs new file mode 100644 index 0000000..9945b9f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GenerateThumbsResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GenerateThumbsResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Genre.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Genre.cs deleted file mode 100644 index 718743c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Genre.cs +++ /dev/null @@ -1,45 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The filter query string for similar items. - /// - public class Genre - { - - /// - /// The unique identifier for the genre.
- /// - /// - /// NOTE: This is different for each Plex server and is not globally unique.
- /// - ///
- ///
- [JsonProperty("id")] - public int Id { get; set; } = default!; - - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - /// - /// The genre name of this media-item
- /// - /// - /// - /// - ///
- [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GeoData.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GeoData.cs deleted file mode 100644 index a99c475..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GeoData.cs +++ /dev/null @@ -1,87 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Geo location data - /// - public class GeoData - { - - /// - /// The ISO 3166-1 alpha-2 code of the country. - /// - [JsonProperty("code")] - public string Code { get; set; } = default!; - - /// - /// The continent code where the country is located. - /// - [JsonProperty("continent_code")] - public string ContinentCode { get; set; } = default!; - - /// - /// The official name of the country. - /// - [JsonProperty("country")] - public string Country { get; set; } = default!; - - /// - /// The name of the city. - /// - [JsonProperty("city")] - public string City { get; set; } = default!; - - /// - /// Indicates if the country is a member of the European Union. - /// - [JsonProperty("european_union_member")] - public bool? EuropeanUnionMember { get; set; } = false; - - /// - /// The time zone of the country. - /// - [JsonProperty("time_zone")] - public string TimeZone { get; set; } = default!; - - /// - /// The postal code of the location. - /// - [JsonProperty("postal_code")] - public string PostalCode { get; set; } = default!; - - /// - /// Indicates if the country has privacy restrictions. - /// - [JsonProperty("in_privacy_restricted_country")] - public bool? InPrivacyRestrictedCountry { get; set; } = false; - - /// - /// Indicates if the region has privacy restrictions. - /// - [JsonProperty("in_privacy_restricted_region")] - public bool? InPrivacyRestrictedRegion { get; set; } = false; - - /// - /// The name of the primary administrative subdivision. - /// - [JsonProperty("subdivisions")] - public string Subdivisions { get; set; } = default!; - - /// - /// The geographical coordinates (latitude, longitude) of the location. - /// - [JsonProperty("coordinates")] - public string Coordinates { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryDirectory.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryDirectory.cs deleted file mode 100644 index 19b5700..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryDirectory.cs +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetActorsLibraryDirectory - { - - /// - /// A fast lookup key for the actor relative url. - /// - [JsonProperty("fastKey")] - public string FastKey { get; set; } = default!; - - /// - /// URL for the thumbnail image of the actor. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// A unique key representing the actor. - /// - [JsonProperty("key")] - public string Key { get; set; } = default!; - - /// - /// The name of the actor. - /// - [JsonProperty("title")] - public string Title { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryMediaContainer.cs deleted file mode 100644 index 049ce78..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryMediaContainer.cs +++ /dev/null @@ -1,98 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetActorsLibraryMediaContainer - { - - /// - /// Number of media items returned in this response. - /// - [JsonProperty("size")] - public int Size { get; set; } = default!; - - /// - /// Indicates whether syncing is allowed. - /// - [JsonProperty("allowSync")] - public bool AllowSync { get; set; } = default!; - - /// - /// URL for the background artwork of the media container. - /// - [JsonProperty("art")] - public string Art { get; set; } = default!; - - /// - /// An plugin identifier for the media container. - /// - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - /// - /// The prefix used for media tag resource paths. - /// - [JsonProperty("mediaTagPrefix")] - public string MediaTagPrefix { get; set; } = default!; - - /// - /// The version number for media tags. - /// - [JsonProperty("mediaTagVersion")] - public long MediaTagVersion { get; set; } = default!; - - /// - /// Specifies whether caching is disabled. - /// - [JsonProperty("nocache")] - public bool Nocache { get; set; } = default!; - - /// - /// URL for the thumbnail image of the media container. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The primary title of the media container. - /// - [JsonProperty("title1")] - public string Title1 { get; set; } = default!; - - /// - /// The secondary title of the media container. - /// - [JsonProperty("title2")] - public string Title2 { get; set; } = default!; - - /// - /// Identifier for the view group layout. - /// - [JsonProperty("viewGroup")] - public string ViewGroup { get; set; } = default!; - - /// - /// Identifier for the view mode. - /// - [JsonProperty("viewMode")] - public string? ViewMode { get; set; } - - /// - /// An array of actor entries for media items. - /// - [JsonProperty("Directory")] - public List? Directory { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryQueryParamType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryQueryParamType.cs deleted file mode 100644 index 0910698..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryQueryParamType.cs +++ /dev/null @@ -1,100 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetActorsLibraryQueryParamType : IEquatable - { - public static readonly GetActorsLibraryQueryParamType Movie = new GetActorsLibraryQueryParamType(1); - public static readonly GetActorsLibraryQueryParamType TvShow = new GetActorsLibraryQueryParamType(2); - public static readonly GetActorsLibraryQueryParamType Season = new GetActorsLibraryQueryParamType(3); - public static readonly GetActorsLibraryQueryParamType Episode = new GetActorsLibraryQueryParamType(4); - public static readonly GetActorsLibraryQueryParamType Artist = new GetActorsLibraryQueryParamType(5); - public static readonly GetActorsLibraryQueryParamType Album = new GetActorsLibraryQueryParamType(6); - public static readonly GetActorsLibraryQueryParamType Track = new GetActorsLibraryQueryParamType(7); - public static readonly GetActorsLibraryQueryParamType PhotoAlbum = new GetActorsLibraryQueryParamType(8); - public static readonly GetActorsLibraryQueryParamType Photo = new GetActorsLibraryQueryParamType(9); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - [1] = Movie, - [2] = TvShow, - [3] = Season, - [4] = Episode, - [5] = Artist, - [6] = Album, - [7] = Track, - [8] = PhotoAlbum, - [9] = Photo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetActorsLibraryQueryParamType(long value) - { - Value = value; - } - - public long Value { get; } - - public static GetActorsLibraryQueryParamType Of(long value) - { - return _values.GetOrAdd(value, _ => new GetActorsLibraryQueryParamType(value)); - } - - public static implicit operator GetActorsLibraryQueryParamType(long value) => Of(value); - public static implicit operator long(GetActorsLibraryQueryParamType getactorslibraryqueryparamtype) => getactorslibraryqueryparamtype.Value; - - public static GetActorsLibraryQueryParamType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetActorsLibraryQueryParamType); - - public bool Equals(GetActorsLibraryQueryParamType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryRequest.cs deleted file mode 100644 index e76ab86..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryRequest.cs +++ /dev/null @@ -1,49 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetActorsLibraryRequest - { - - /// - /// The unique key of the Plex library.
- /// - /// - /// Note: This is unique in the context of the Plex server.
- /// - ///
- ///
- [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")] - public int SectionKey { get; set; } = default!; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] - public GetActorsLibraryQueryParamType Type { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryResponse.cs deleted file mode 100644 index b82c091..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetActorsLibraryResponse - { - - /// - /// 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!; - - /// - /// Successful response containing media container data. - /// - public GetActorsLibraryResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryResponseBody.cs deleted file mode 100644 index afe2845..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetActorsLibraryResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Successful response containing media container data. - /// - public class GetActorsLibraryResponseBody - { - - [JsonProperty("MediaContainer")] - public GetActorsLibraryMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAlbumsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAlbumsRequest.cs new file mode 100644 index 0000000..913d55b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAlbumsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetAlbumsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAlbumsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAlbumsResponse.cs new file mode 100644 index 0000000..6da67f7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAlbumsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetAlbumsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsMediaContainer.cs new file mode 100644 index 0000000..3cc0054 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetAllHubsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Hub")] + public List? Hub { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsRequest.cs new file mode 100644 index 0000000..dc5916b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsRequest.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class GetAllHubsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Limit results to count items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=count")] + public long? 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 BoolInt? OnlyTransient { get; set; } + + /// + /// If provided, limit to only specified hubs + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=identifier")] + public List? Identifier { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsResponse.cs new file mode 100644 index 0000000..582941e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetAllHubsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetAllHubsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsResponseBody.cs new file mode 100644 index 0000000..63a34a4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllHubsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetAllHubsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetAllHubsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllItemLeavesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllItemLeavesRequest.cs new file mode 100644 index 0000000..71df369 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllItemLeavesRequest.cs @@ -0,0 +1,87 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetAllItemLeavesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllItemLeavesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllItemLeavesResponse.cs new file mode 100644 index 0000000..8fee7db --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllItemLeavesResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetAllItemLeavesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesMediaContainer.cs new file mode 100644 index 0000000..64631b1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetAllLanguagesMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Language")] + public List? Language { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesResponse.cs new file mode 100644 index 0000000..2db0dee --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetAllLanguagesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetAllLanguagesResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesResponseBody.cs new file mode 100644 index 0000000..f560ee3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLanguagesResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetAllLanguagesResponseBody + { + + [JsonProperty("MediaContainer")] + public GetAllLanguagesMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLeavesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLeavesRequest.cs new file mode 100644 index 0000000..de121b9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLeavesRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetAllLeavesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLeavesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLeavesResponse.cs new file mode 100644 index 0000000..91d5118 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLeavesResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetAllLeavesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesDirectory.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesDirectory.cs deleted file mode 100644 index 773d982..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesDirectory.cs +++ /dev/null @@ -1,145 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetAllLibrariesDirectory - { - - /// - /// Indicates whether syncing is allowed. - /// - [JsonProperty("allowSync")] - public bool AllowSync { get; set; } = default!; - - /// - /// URL for the background artwork of the media container. - /// - [JsonProperty("art")] - public string Art { get; set; } = default!; - - /// - /// The relative path to the composite media item. - /// - [JsonProperty("composite")] - public string Composite { get; set; } = default!; - - /// - /// UNKNOWN - /// - [JsonProperty("filters")] - public bool Filters { get; set; } = default!; - - /// - /// Indicates whether the library is currently being refreshed or updated - /// - [JsonProperty("refreshing")] - public bool Refreshing { get; set; } = default!; - - /// - /// URL for the thumbnail image of the media container. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The library key representing the unique identifier - /// - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("type")] - public GetAllLibrariesType Type { get; set; } = default!; - - /// - /// The title of the library - /// - [JsonProperty("title")] - public string Title { get; set; } = default!; - - /// - /// The Plex agent used to match and retrieve media metadata. - /// - [JsonProperty("agent")] - public string Agent { get; set; } = default!; - - /// - /// UNKNOWN - /// - [JsonProperty("scanner")] - public string Scanner { get; set; } = default!; - - /// - /// The Plex library language that has been set - /// - [JsonProperty("language")] - public string Language { get; set; } = default!; - - /// - /// The universally unique identifier for the library. - /// - [JsonProperty("uuid")] - public string Uuid { get; set; } = default!; - - /// - /// Unix epoch datetime in seconds - /// - [JsonProperty("updatedAt")] - public long UpdatedAt { get; set; } = default!; - - [JsonProperty("createdAt")] - public long? CreatedAt { get; set; } - - /// - /// Unix epoch datetime in seconds - /// - [JsonProperty("scannedAt")] - public long ScannedAt { get; set; } = default!; - - /// - /// UNKNOWN - /// - [JsonProperty("content")] - public bool Content { get; set; } = default!; - - /// - /// UNKNOWN - /// - [JsonProperty("directory")] - public bool Directory { get; set; } = default!; - - /// - /// Timestamp (in seconds) representing the last time the content was modified.
- /// - /// - /// NOTE: Some Plex server have some absurd values for this field, like 8457612157633039800 so it should be int64
- /// - ///
- ///
- [JsonProperty("contentChangedAt")] - public long ContentChangedAt { get; set; } = default!; - - /// - /// The Plex library visibility setting - /// - [JsonProperty("hidden")] - public Hidden? Hidden { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.Hidden.Visible; - - [JsonProperty("Location")] - public List Location { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesLocation.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesLocation.cs deleted file mode 100644 index 13d7023..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesLocation.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetAllLibrariesLocation - { - - /// - /// The ID of the location. - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The path to the media item. - /// - [JsonProperty("path")] - public string Path { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesMediaContainer.cs deleted file mode 100644 index fb791ac..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesMediaContainer.cs +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetAllLibrariesMediaContainer - { - - /// - /// Number of media items returned in this response. - /// - [JsonProperty("size")] - public int Size { get; set; } = default!; - - /// - /// Indicates whether syncing is allowed. - /// - [JsonProperty("allowSync")] - public bool AllowSync { get; set; } = default!; - - /// - /// The primary title of the media container. - /// - [JsonProperty("title1")] - public string Title1 { get; set; } = default!; - - [JsonProperty("Directory")] - public List? Directory { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesResponse.cs deleted file mode 100644 index 28137ca..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetAllLibrariesResponse - { - - /// - /// 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 libraries available on the Server - /// - public GetAllLibrariesResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesResponseBody.cs deleted file mode 100644 index 0d196c4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The libraries available on the Server - /// - public class GetAllLibrariesResponseBody - { - - [JsonProperty("MediaContainer")] - public GetAllLibrariesMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesType.cs deleted file mode 100644 index 382a449..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllLibrariesType.cs +++ /dev/null @@ -1,94 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The library type - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class GetAllLibrariesType : IEquatable - { - public static readonly GetAllLibrariesType Movie = new GetAllLibrariesType("movie"); - public static readonly GetAllLibrariesType TvShow = new GetAllLibrariesType("show"); - public static readonly GetAllLibrariesType Season = new GetAllLibrariesType("season"); - public static readonly GetAllLibrariesType Episode = new GetAllLibrariesType("episode"); - public static readonly GetAllLibrariesType Artist = new GetAllLibrariesType("artist"); - public static readonly GetAllLibrariesType Album = new GetAllLibrariesType("album"); - public static readonly GetAllLibrariesType Track = new GetAllLibrariesType("track"); - public static readonly GetAllLibrariesType PhotoAlbum = new GetAllLibrariesType("photoalbum"); - public static readonly GetAllLibrariesType Photo = new GetAllLibrariesType("photo"); - public static readonly GetAllLibrariesType Collection = new GetAllLibrariesType("collection"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["movie"] = Movie, - ["show"] = TvShow, - ["season"] = Season, - ["episode"] = Episode, - ["artist"] = Artist, - ["album"] = Album, - ["track"] = Track, - ["photoalbum"] = PhotoAlbum, - ["photo"] = Photo, - ["collection"] = Collection - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetAllLibrariesType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetAllLibrariesType Of(string value) - { - return _values.GetOrAdd(value, _ => new GetAllLibrariesType(value)); - } - - public static implicit operator GetAllLibrariesType(string value) => Of(value); - public static implicit operator string(GetAllLibrariesType getalllibrariestype) => getalllibrariestype.Value; - - public static GetAllLibrariesType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetAllLibrariesType); - - public bool Equals(GetAllLibrariesType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllPreferencesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllPreferencesResponse.cs new file mode 100644 index 0000000..2895c47 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllPreferencesResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetAllPreferencesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithSettings? MediaContainerWithSettings { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllSubscriptionsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllSubscriptionsRequest.cs new file mode 100644 index 0000000..7bdc261 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllSubscriptionsRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetAllSubscriptionsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Indicates whether the active grabs should be included as well + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeGrabs")] + public BoolInt? IncludeGrabs { get; set; } + + /// + /// Compute the storage of recorded items desired by this subscription + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeStorage")] + public BoolInt? IncludeStorage { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllSubscriptionsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllSubscriptionsResponse.cs new file mode 100644 index 0000000..0b82290 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllSubscriptionsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetAllSubscriptionsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithSubscription? MediaContainerWithSubscription { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetArtsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetArtsRequest.cs new file mode 100644 index 0000000..ac53fe6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetArtsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetArtsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetArtsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetArtsResponse.cs new file mode 100644 index 0000000..ea29a6b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetArtsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetArtsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithArtwork? MediaContainerWithArtwork { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAugmentationStatusRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAugmentationStatusRequest.cs new file mode 100644 index 0000000..bcd6724 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAugmentationStatusRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetAugmentationStatusRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The id of the augmentation + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=augmentationId")] + public string AugmentationId { get; set; } = default!; + + /// + /// Wait for augmentation completion before returning + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=wait")] + public BoolInt? Wait { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAugmentationStatusResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAugmentationStatusResponse.cs new file mode 100644 index 0000000..950cd7c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAugmentationStatusResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetAugmentationStatusResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsMediaContainer.cs deleted file mode 100644 index 06b1f11..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsMediaContainer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsResponse.cs deleted file mode 100644 index a6900ee..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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 GetAvailableClientsResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsResponseBody.cs deleted file mode 100644 index f48161a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableClientsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Available Clients - /// - public class GetAvailableClientsResponseBody - { - - [JsonProperty("MediaContainer")] - public GetAvailableClientsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersMediaContainer.cs new file mode 100644 index 0000000..8144f41 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetAvailableGrabbersMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("MediaGrabber")] + public List? MediaGrabber { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersRequest.cs new file mode 100644 index 0000000..092bb66 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetAvailableGrabbersRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Only return grabbers providing this protocol. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=protocol")] + public string? Protocol { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersResponse.cs new file mode 100644 index 0000000..5b67dd9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetAvailableGrabbersResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetAvailableGrabbersResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersResponseBody.cs new file mode 100644 index 0000000..6391566 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableGrabbersResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetAvailableGrabbersResponseBody + { + + [JsonProperty("MediaContainer")] + public GetAvailableGrabbersMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsMediaContainer.cs new file mode 100644 index 0000000..d11d133 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetAvailableSortsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Directory")] + public List? Directory { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsRequest.cs new file mode 100644 index 0000000..dcc450a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetAvailableSortsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsResponse.cs new file mode 100644 index 0000000..af1aa65 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetAvailableSortsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetAvailableSortsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsResponseBody.cs new file mode 100644 index 0000000..97b2734 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAvailableSortsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetAvailableSortsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetAvailableSortsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksMediaContainer.cs new file mode 100644 index 0000000..cd2a5b7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetBackgroundTasksMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("TranscodeJob")] + public List? TranscodeJob { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksResponse.cs new file mode 100644 index 0000000..eb7d994 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetBackgroundTasksResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetBackgroundTasksResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksResponseBody.cs new file mode 100644 index 0000000..6b1ab35 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetBackgroundTasksResponseBody + { + + [JsonProperty("MediaContainer")] + public GetBackgroundTasksMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksType.cs new file mode 100644 index 0000000..60d7a0b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBackgroundTasksType.cs @@ -0,0 +1,55 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum GetBackgroundTasksType + { + [JsonProperty("transcode")] + Transcode, + } + + public static class GetBackgroundTasksTypeExtension + { + public static string Value(this GetBackgroundTasksType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GetBackgroundTasksType ToEnum(this string value) + { + foreach(var field in typeof(GetBackgroundTasksType).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 GetBackgroundTasksType) + { + return (GetBackgroundTasksType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GetBackgroundTasksType"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsAccount.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsAccount.cs deleted file mode 100644 index d0ef3e0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsAccount.cs +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetBandwidthStatisticsAccount - { - - [JsonProperty("id")] - public int? Id { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("name")] - public string? Name { get; set; } - - [JsonProperty("defaultAudioLanguage")] - public string? DefaultAudioLanguage { get; set; } - - [JsonProperty("autoSelectAudio")] - public bool? AutoSelectAudio { get; set; } - - [JsonProperty("defaultSubtitleLanguage")] - public string? DefaultSubtitleLanguage { get; set; } - - [JsonProperty("subtitleMode")] - public int? SubtitleMode { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsDevice.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsDevice.cs deleted file mode 100644 index 54498d0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsDevice.cs +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetBandwidthStatisticsDevice - { - - [JsonProperty("id")] - public int? 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 int? CreatedAt { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsMediaContainer.cs deleted file mode 100644 index 01b4b8a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsMediaContainer.cs +++ /dev/null @@ -1,32 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetBandwidthStatisticsMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("Device")] - public List? Device { get; set; } - - [JsonProperty("Account")] - public List? Account { get; set; } - - [JsonProperty("StatisticsBandwidth")] - public List? StatisticsBandwidth { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsRequest.cs deleted file mode 100644 index bb5eb62..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsRequest.cs +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetBandwidthStatisticsRequest - { - - /// - /// The timespan to retrieve statistics for
- /// - /// - /// the exact meaning of this parameter is not known
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=timespan")] - public long? Timespan { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsResponse.cs deleted file mode 100644 index 7e8c4b7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetBandwidthStatisticsResponse - { - - /// - /// 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!; - - /// - /// Bandwidth Statistics - /// - public GetBandwidthStatisticsResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsResponseBody.cs deleted file mode 100644 index 2d2741a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBandwidthStatisticsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Bandwidth Statistics - /// - public class GetBandwidthStatisticsResponseBody - { - - [JsonProperty("MediaContainer")] - public GetBandwidthStatisticsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBannerImageRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBannerImageRequest.cs deleted file mode 100644 index a06c1a8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBannerImageRequest.cs +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetBannerImageRequest - { - - /// - /// the id of the library item to return the children of. - /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")] - public long RatingKey { get; set; } = default!; - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=width")] - public long Width { get; set; } = default!; - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=height")] - public long Height { get; set; } = default!; - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=minSize")] - public long MinSize { get; set; } = default!; - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=upscale")] - public long Upscale { get; set; } = default!; - - /// - /// An authentication token, obtained from plex.tv - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Token")] - public string XPlexToken { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBannerImageResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetBannerImageResponse.cs deleted file mode 100644 index b35c8d8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetBannerImageResponse.cs +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetBannerImageResponse - { - - /// - /// 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!; - - /// - /// Successful response returning an image - /// - public byte[]? Bytes { get; set; } - - public Dictionary> Headers { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetButlerTasksResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetButlerTasksResponse.cs deleted file mode 100644 index 060eb10..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetButlerTasksResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetButlerTasksResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetButlerTasksResponseBody.cs deleted file mode 100644 index 04738bf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetButlerTasksResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetCategoriesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCategoriesRequest.cs new file mode 100644 index 0000000..83e592d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCategoriesRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetCategoriesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCategoriesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCategoriesResponse.cs new file mode 100644 index 0000000..d91b84d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCategoriesResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetCategoriesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithArtwork? MediaContainerWithArtwork { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsMediaContainer.cs new file mode 100644 index 0000000..62a81d4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetChannelsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Channel")] + public List? Channel { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsRequest.cs new file mode 100644 index 0000000..d2d3259 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetChannelsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The URI describing the lineup + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=lineup")] + public string Lineup { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsResponse.cs new file mode 100644 index 0000000..777c147 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetChannelsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetChannelsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsResponseBody.cs new file mode 100644 index 0000000..ff2e646 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetChannelsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetChannelsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetChannelsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetChapterImageRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetChapterImageRequest.cs new file mode 100644 index 0000000..f31e69a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetChapterImageRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetChapterImageRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The id of the media item + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=mediaId")] + public long MediaId { get; set; } = default!; + + /// + /// The index of the chapter + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=chapter")] + public long Chapter { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetChapterImageResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetChapterImageResponse.cs new file mode 100644 index 0000000..5412b0f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetChapterImageResponse.cs @@ -0,0 +1,39 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetChapterImageResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public byte[]? Bytes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetClusterRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetClusterRequest.cs new file mode 100644 index 0000000..4d5124a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetClusterRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetClusterRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetClusterResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetClusterResponse.cs new file mode 100644 index 0000000..faa1793 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetClusterResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetClusterResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithArtwork? MediaContainerWithArtwork { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionImageRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionImageRequest.cs new file mode 100644 index 0000000..0078521 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionImageRequest.cs @@ -0,0 +1,99 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetCollectionImageRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The collection id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=collectionId")] + public long CollectionId { get; set; } = default!; + + /// + /// The update time of the image. Used for busting cache. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=updatedAt")] + public long UpdatedAt { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=composite")] + public Composite? Composite { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionImageResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionImageResponse.cs new file mode 100644 index 0000000..341daa3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionImageResponse.cs @@ -0,0 +1,39 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetCollectionImageResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public byte[]? Bytes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionItemsRequest.cs new file mode 100644 index 0000000..37ac8de --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionItemsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetCollectionItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The collection id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=collectionId")] + public long CollectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionItemsResponse.cs new file mode 100644 index 0000000..1fbd4d6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionItemsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetCollectionItemsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionsRequest.cs new file mode 100644 index 0000000..d101eb0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionsRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetCollectionsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// This is a complex query built of several parameters. See API Info section for information on building media queries + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")] + public MediaQuery? MediaQuery { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionsResponse.cs new file mode 100644 index 0000000..1c5cffb --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCollectionsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetCollectionsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsMediaContainer.cs new file mode 100644 index 0000000..7eadcc0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetColorsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("UltraBlurColors")] + public List? UltraBlurColors { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsRequest.cs new file mode 100644 index 0000000..58ca736 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetColorsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Url for image which requires color extraction. Can be relative PMS library path or absolute url. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] + public string? Url { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsResponse.cs new file mode 100644 index 0000000..ed62941 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetColorsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetColorsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsResponseBody.cs new file mode 100644 index 0000000..d05c0ba --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetColorsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetColorsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetColorsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCommonRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCommonRequest.cs new file mode 100644 index 0000000..8eeb804 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCommonRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetCommonRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// Item type + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long? Type { get; set; } + + /// + /// This is a complex query built of several parameters. See API Info section for information on building media queries + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")] + public MediaQuery? MediaQuery { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCommonResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCommonResponse.cs new file mode 100644 index 0000000..47b2974 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCommonResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetCommonResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCompanionsDataResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCompanionsDataResponse.cs deleted file mode 100644 index 73866bf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCompanionsDataResponse.cs +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetCompanionsDataResponse - { - - /// - /// 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!; - - /// - /// Companions Data - /// - public List? ResponseBodies { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingMediaContainer.cs new file mode 100644 index 0000000..e90af6c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetContinueWatchingMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Hub")] + public List? Hub { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingRequest.cs new file mode 100644 index 0000000..0affa32 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetContinueWatchingRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Limit results to count items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=count")] + public long? Count { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingResponse.cs new file mode 100644 index 0000000..271f182 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetContinueWatchingResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetContinueWatchingResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingResponseBody.cs new file mode 100644 index 0000000..36a8fe4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetContinueWatchingResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetContinueWatchingResponseBody + { + + [JsonProperty("MediaContainer")] + public GetContinueWatchingMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryDirectory.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryDirectory.cs deleted file mode 100644 index dc6eeef..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryDirectory.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetCountriesLibraryDirectory - { - - [JsonProperty("fastKey")] - public string FastKey { get; set; } = default!; - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryMediaContainer.cs deleted file mode 100644 index f4aa943..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryMediaContainer.cs +++ /dev/null @@ -1,95 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetCountriesLibraryMediaContainer - { - - /// - /// Number of media items returned in this response. - /// - [JsonProperty("size")] - public int Size { get; set; } = default!; - - /// - /// Indicates whether syncing is allowed. - /// - [JsonProperty("allowSync")] - public bool AllowSync { get; set; } = default!; - - /// - /// URL for the background artwork of the media container. - /// - [JsonProperty("art")] - public string Art { get; set; } = default!; - - /// - /// The content type or mode. - /// - [JsonProperty("content")] - public string Content { get; set; } = default!; - - /// - /// An plugin identifier for the media container. - /// - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - /// - /// The prefix used for media tag resource paths. - /// - [JsonProperty("mediaTagPrefix")] - public string MediaTagPrefix { get; set; } = default!; - - /// - /// The version number for media tags. - /// - [JsonProperty("mediaTagVersion")] - public long MediaTagVersion { get; set; } = default!; - - /// - /// Specifies whether caching is disabled. - /// - [JsonProperty("nocache")] - public bool Nocache { get; set; } = default!; - - /// - /// URL for the thumbnail image of the media container. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The primary title of the media container. - /// - [JsonProperty("title1")] - public string Title1 { get; set; } = default!; - - /// - /// The secondary title of the media container. - /// - [JsonProperty("title2")] - public string Title2 { get; set; } = default!; - - /// - /// Identifier for the view group layout. - /// - [JsonProperty("viewGroup")] - public string ViewGroup { get; set; } = default!; - - [JsonProperty("Directory")] - public List? Directory { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryQueryParamType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryQueryParamType.cs deleted file mode 100644 index 406d92c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryQueryParamType.cs +++ /dev/null @@ -1,100 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetCountriesLibraryQueryParamType : IEquatable - { - public static readonly GetCountriesLibraryQueryParamType Movie = new GetCountriesLibraryQueryParamType(1); - public static readonly GetCountriesLibraryQueryParamType TvShow = new GetCountriesLibraryQueryParamType(2); - public static readonly GetCountriesLibraryQueryParamType Season = new GetCountriesLibraryQueryParamType(3); - public static readonly GetCountriesLibraryQueryParamType Episode = new GetCountriesLibraryQueryParamType(4); - public static readonly GetCountriesLibraryQueryParamType Artist = new GetCountriesLibraryQueryParamType(5); - public static readonly GetCountriesLibraryQueryParamType Album = new GetCountriesLibraryQueryParamType(6); - public static readonly GetCountriesLibraryQueryParamType Track = new GetCountriesLibraryQueryParamType(7); - public static readonly GetCountriesLibraryQueryParamType PhotoAlbum = new GetCountriesLibraryQueryParamType(8); - public static readonly GetCountriesLibraryQueryParamType Photo = new GetCountriesLibraryQueryParamType(9); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - [1] = Movie, - [2] = TvShow, - [3] = Season, - [4] = Episode, - [5] = Artist, - [6] = Album, - [7] = Track, - [8] = PhotoAlbum, - [9] = Photo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetCountriesLibraryQueryParamType(long value) - { - Value = value; - } - - public long Value { get; } - - public static GetCountriesLibraryQueryParamType Of(long value) - { - return _values.GetOrAdd(value, _ => new GetCountriesLibraryQueryParamType(value)); - } - - public static implicit operator GetCountriesLibraryQueryParamType(long value) => Of(value); - public static implicit operator long(GetCountriesLibraryQueryParamType getcountrieslibraryqueryparamtype) => getcountrieslibraryqueryparamtype.Value; - - public static GetCountriesLibraryQueryParamType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetCountriesLibraryQueryParamType); - - public bool Equals(GetCountriesLibraryQueryParamType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryRequest.cs deleted file mode 100644 index 062433e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryRequest.cs +++ /dev/null @@ -1,49 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetCountriesLibraryRequest - { - - /// - /// The unique key of the Plex library.
- /// - /// - /// Note: This is unique in the context of the Plex server.
- /// - ///
- ///
- [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")] - public int SectionKey { get; set; } = default!; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] - public GetCountriesLibraryQueryParamType Type { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryResponse.cs deleted file mode 100644 index beb39de..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetCountriesLibraryResponse - { - - /// - /// 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!; - - /// - /// Successful response containing media container data. - /// - public GetCountriesLibraryResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryResponseBody.cs deleted file mode 100644 index e3f40d6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLibraryResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Successful response containing media container data. - /// - public class GetCountriesLibraryResponseBody - { - - [JsonProperty("MediaContainer")] - public GetCountriesLibraryMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLineupsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLineupsRequest.cs new file mode 100644 index 0000000..bb135c9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLineupsRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetCountriesLineupsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// 3 letter country code + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=country")] + public string Country { get; set; } = default!; + + /// + /// The `providerIdentifier` of the provider + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=epgId")] + public string EpgId { get; set; } = default!; + + /// + /// The postal code for the lineups to fetch + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=postalCode")] + public string? PostalCode { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLineupsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLineupsResponse.cs new file mode 100644 index 0000000..e5380ad --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesLineupsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetCountriesLineupsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithLineup? MediaContainerWithLineup { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesMediaContainer.cs new file mode 100644 index 0000000..c8c7135 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetCountriesMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Country")] + public List? Country { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesResponse.cs new file mode 100644 index 0000000..4580bc1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetCountriesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetCountriesResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesResponseBody.cs new file mode 100644 index 0000000..c1e651c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountriesResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetCountriesResponseBody + { + + [JsonProperty("MediaContainer")] + public GetCountriesMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsCountry.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsCountry.cs new file mode 100644 index 0000000..34d0c0a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsCountry.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetCountryRegionsCountry + { + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("national")] + public bool? National { 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsMediaContainer.cs new file mode 100644 index 0000000..b7fd5ab --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetCountryRegionsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Country")] + public List? Country { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsRequest.cs new file mode 100644 index 0000000..4afd62b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetCountryRegionsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// 3 letter country code + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=country")] + public string Country { get; set; } = default!; + + /// + /// The `providerIdentifier` of the provider + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=epgId")] + public string EpgId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsResponse.cs new file mode 100644 index 0000000..837228b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetCountryRegionsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetCountryRegionsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsResponseBody.cs new file mode 100644 index 0000000..77e5b82 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetCountryRegionsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetCountryRegionsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetCountryRegionsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRDVR.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRDVR.cs new file mode 100644 index 0000000..b168528 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRDVR.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetDVRDVR + { + + [JsonProperty("Device")] + public List? Device { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("language")] + public string? Language { get; set; } + + [JsonProperty("lineup")] + public string? Lineup { get; set; } + + [JsonProperty("uuid")] + public string? Uuid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRDVRsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRDVRsMediaContainer.cs new file mode 100644 index 0000000..150b1af --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRDVRsMediaContainer.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetDVRDVRsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + /// + /// A status indicator. If present and non-zero, indicates an error + /// + [JsonProperty("status")] + public long? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRMediaContainer.cs new file mode 100644 index 0000000..50e2e0b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRMediaContainer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetDVRMediaContainer + { + + [JsonProperty("MediaContainer")] + public GetDVRDVRsMediaContainer? MediaContainer { get; set; } + + [JsonProperty("DVR")] + public List? Dvr { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRRequest.cs new file mode 100644 index 0000000..a026359 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetDVRRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the DVR. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=dvrId")] + public long DvrId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRResponse.cs new file mode 100644 index 0000000..6e234b6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetDVRResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetDVRResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRResponseBody.cs new file mode 100644 index 0000000..d444e95 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDVRResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetDVRResponseBody + { + + [JsonProperty("MediaContainer")] + public GetDVRMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDeviceDetailsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDeviceDetailsRequest.cs new file mode 100644 index 0000000..d54ed97 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDeviceDetailsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetDeviceDetailsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the device. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=deviceId")] + public long DeviceId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDeviceDetailsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDeviceDetailsResponse.cs new file mode 100644 index 0000000..17b8315 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDeviceDetailsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetDeviceDetailsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithDevice? MediaContainerWithDevice { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsMediaContainer.cs new file mode 100644 index 0000000..75a9c17 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetDevicesChannelsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("DeviceChannel")] + public List? DeviceChannel { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsRequest.cs new file mode 100644 index 0000000..d1a20be --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetDevicesChannelsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the device. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=deviceId")] + public long DeviceId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsResponse.cs new file mode 100644 index 0000000..edac37d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetDevicesChannelsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetDevicesChannelsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsResponseBody.cs new file mode 100644 index 0000000..616162c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesChannelsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetDevicesChannelsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetDevicesChannelsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesMediaContainer.cs deleted file mode 100644 index 47d6bcd..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesMediaContainer.cs +++ /dev/null @@ -1,29 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesResponse.cs deleted file mode 100644 index 8c85da7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesResponseBody.cs deleted file mode 100644 index 4afedc2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDevicesResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Devices - /// - public class GetDevicesResponseBody - { - - [JsonProperty("MediaContainer")] - public GetDevicesMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueDownloadQueue.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueDownloadQueue.cs new file mode 100644 index 0000000..9d64d90 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueDownloadQueue.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetDownloadQueueDownloadQueue + { + + [JsonProperty("id")] + public long? Id { get; set; } + + [JsonProperty("itemCount")] + public long? ItemCount { get; set; } + + /// + /// The state of this queue
+ /// + /// + /// - deciding: At least one item is still being decided
+ /// - waiting: At least one item is waiting for transcode and none are currently transcoding
+ /// - processing: At least one item is being transcoded
+ /// - done: All items are available (or potentially expired)
+ /// - error: At least one item has encountered an error
+ /// + ///
+ ///
+ [JsonProperty("status")] + public GetDownloadQueueStatus? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsDecisionResult.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsDecisionResult.cs new file mode 100644 index 0000000..b20d88a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsDecisionResult.cs @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetDownloadQueueItemsDecisionResult + { + + /// + /// The maximum bitrate set when item was added + /// + [JsonProperty("availableBandwidth")] + public long? AvailableBandwidth { get; set; } + + [JsonProperty("directPlayDecisionCode")] + public long? DirectPlayDecisionCode { get; set; } + + [JsonProperty("directPlayDecisionText")] + public string? DirectPlayDecisionText { get; set; } + + [JsonProperty("generalDecisionCode")] + public long? GeneralDecisionCode { get; set; } + + [JsonProperty("generalDecisionText")] + public string? GeneralDecisionText { get; set; } + + /// + /// The code indicating the status of evaluation of playback when client indicates `hasMDE=1` + /// + [JsonProperty("mdeDecisionCode")] + public long? MdeDecisionCode { get; set; } + + /// + /// Descriptive text for the above code + /// + [JsonProperty("mdeDecisionText")] + public string? MdeDecisionText { get; set; } + + [JsonProperty("transcodeDecisionCode")] + public long? TranscodeDecisionCode { get; set; } + + [JsonProperty("transcodeDecisionText")] + public string? TranscodeDecisionText { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsDownloadQueueItem.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsDownloadQueueItem.cs new file mode 100644 index 0000000..f8fa154 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsDownloadQueueItem.cs @@ -0,0 +1,66 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetDownloadQueueItemsDownloadQueueItem + { + + [JsonProperty("DecisionResult")] + public GetDownloadQueueItemsDecisionResult? DecisionResult { get; set; } + + /// + /// The error encountered in transcoding or decision + /// + [JsonProperty("error")] + public string? Error { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("queueId")] + public long? QueueId { get; set; } + + /// + /// The state of the item:
+ /// + /// + /// - deciding: The item decision is pending
+ /// - waiting: The item is waiting for transcode
+ /// - processing: The item is being transcoded
+ /// - available: The item is available for download
+ /// - error: The item encountered an error in the decision or transcode
+ /// - expired: The transcoded item has timed out and is no longer available
+ /// + ///
+ ///
+ [JsonProperty("status")] + public GetDownloadQueueItemsStatus? Status { get; set; } + + /// + /// The transcode session object which is not yet documented otherwise it'd be a $ref here. + /// + [JsonProperty("transcode")] + public GetDownloadQueueItemsTranscode? Transcode { get; set; } + + /// + /// The transcode session if item is currently being transcoded + /// + [JsonProperty("TranscodeSession")] + public TranscodeSession? TranscodeSession { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsMediaContainer.cs new file mode 100644 index 0000000..27f128b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetDownloadQueueItemsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("DownloadQueueItem")] + public List? DownloadQueueItem { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsRequest.cs new file mode 100644 index 0000000..0a35b10 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsRequest.cs @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class GetDownloadQueueItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The queue id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=queueId")] + public long QueueId { get; set; } = default!; + + /// + /// The item ids + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=itemId")] + public List ItemId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsResponse.cs new file mode 100644 index 0000000..f14f465 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetDownloadQueueItemsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetDownloadQueueItemsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsResponseBody.cs new file mode 100644 index 0000000..8a56022 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetDownloadQueueItemsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetDownloadQueueItemsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsStatus.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsStatus.cs new file mode 100644 index 0000000..1ab93be --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsStatus.cs @@ -0,0 +1,78 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The state of the item:
+ /// + /// + /// - deciding: The item decision is pending
+ /// - waiting: The item is waiting for transcode
+ /// - processing: The item is being transcoded
+ /// - available: The item is available for download
+ /// - error: The item encountered an error in the decision or transcode
+ /// - expired: The transcoded item has timed out and is no longer available
+ /// + ///
+ ///
+ public enum GetDownloadQueueItemsStatus + { + [JsonProperty("deciding")] + Deciding, + [JsonProperty("waiting")] + Waiting, + [JsonProperty("processing")] + Processing, + [JsonProperty("available")] + Available, + [JsonProperty("error")] + Error, + [JsonProperty("expired")] + Expired, + } + + public static class GetDownloadQueueItemsStatusExtension + { + public static string Value(this GetDownloadQueueItemsStatus value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GetDownloadQueueItemsStatus ToEnum(this string value) + { + foreach(var field in typeof(GetDownloadQueueItemsStatus).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 GetDownloadQueueItemsStatus) + { + return (GetDownloadQueueItemsStatus)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GetDownloadQueueItemsStatus"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsTranscode.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsTranscode.cs new file mode 100644 index 0000000..eff4ae6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueItemsTranscode.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// The transcode session object which is not yet documented otherwise it'd be a $ref here. + /// + public class GetDownloadQueueItemsTranscode + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaContainer.cs new file mode 100644 index 0000000..d205835 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetDownloadQueueMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("DownloadQueue")] + public List? DownloadQueue { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaRequest.cs new file mode 100644 index 0000000..bd71528 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetDownloadQueueMediaRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The queue id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=queueId")] + public long QueueId { get; set; } = default!; + + /// + /// The item ids + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=itemId")] + public long ItemId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaResponse.cs new file mode 100644 index 0000000..49fd3db --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueMediaResponse.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetDownloadQueueMediaResponse + { + + /// + /// 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!; + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueRequest.cs new file mode 100644 index 0000000..eeff49e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetDownloadQueueRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The queue id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=queueId")] + public long QueueId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueResponse.cs new file mode 100644 index 0000000..d925961 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetDownloadQueueResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetDownloadQueueResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueResponseBody.cs new file mode 100644 index 0000000..3325a15 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetDownloadQueueResponseBody + { + + [JsonProperty("MediaContainer")] + public GetDownloadQueueMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueStatus.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueStatus.cs new file mode 100644 index 0000000..0880b3a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetDownloadQueueStatus.cs @@ -0,0 +1,75 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The state of this queue
+ /// + /// + /// - deciding: At least one item is still being decided
+ /// - waiting: At least one item is waiting for transcode and none are currently transcoding
+ /// - processing: At least one item is being transcoded
+ /// - done: All items are available (or potentially expired)
+ /// - error: At least one item has encountered an error
+ /// + ///
+ ///
+ public enum GetDownloadQueueStatus + { + [JsonProperty("deciding")] + Deciding, + [JsonProperty("waiting")] + Waiting, + [JsonProperty("processing")] + Processing, + [JsonProperty("done")] + Done, + [JsonProperty("error")] + Error, + } + + public static class GetDownloadQueueStatusExtension + { + public static string Value(this GetDownloadQueueStatus value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GetDownloadQueueStatus ToEnum(this string value) + { + foreach(var field in typeof(GetDownloadQueueStatus).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 GetDownloadQueueStatus) + { + return (GetDownloadQueueStatus)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GetDownloadQueueStatus"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetExtrasRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetExtrasRequest.cs new file mode 100644 index 0000000..9e65c22 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetExtrasRequest.cs @@ -0,0 +1,87 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetExtrasRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetExtrasResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetExtrasResponse.cs new file mode 100644 index 0000000..c7f7aa4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetExtrasResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetExtrasResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFileHashRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFileHashRequest.cs deleted file mode 100644 index e9e58bd..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFileHashRequest.cs +++ /dev/null @@ -1,29 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.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/LukeHagar/PlexAPI/SDK/Models/Requests/GetFileHashResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFileHashResponse.cs deleted file mode 100644 index 438b408..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFileHashResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFileRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFileRequest.cs new file mode 100644 index 0000000..738ade4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFileRequest.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetFileRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + /// + /// The bundle url, typically starting with `metadata://` or `media://` + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] + public string? Url { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFileResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFileResponse.cs new file mode 100644 index 0000000..02837d0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFileResponse.cs @@ -0,0 +1,44 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetFileResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public byte[]? TwoHundredAudioMpeg3Bytes { get; set; } + + /// + /// OK + /// + public byte[]? TwoHundredImageJpegBytes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersDirectory.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersDirectory.cs new file mode 100644 index 0000000..5022027 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersDirectory.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetFirstCharactersDirectory + { + + [JsonProperty("key")] + public string? Key { get; set; } + + /// + /// The number of items starting with this character + /// + [JsonProperty("size")] + public long? Size { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersMediaContainer.cs new file mode 100644 index 0000000..8ee3cdc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetFirstCharactersMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Directory")] + public List? Directory { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersRequest.cs new file mode 100644 index 0000000..34e3072 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersRequest.cs @@ -0,0 +1,108 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetFirstCharactersRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// The metadata type to filter on + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long? Type { get; set; } + + /// + /// The metadata type to filter on + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=sort")] + public long? Sort { get; set; } + + /// + /// This is a complex query built of several parameters. See API Info section for information on building media queries + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")] + public MediaQuery? MediaQuery { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersResponse.cs new file mode 100644 index 0000000..f71acd3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetFirstCharactersResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetFirstCharactersResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersResponseBody.cs new file mode 100644 index 0000000..d56e613 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFirstCharactersResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetFirstCharactersResponseBody + { + + [JsonProperty("MediaContainer")] + public GetFirstCharactersMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersDirectory.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersDirectory.cs new file mode 100644 index 0000000..09c46fb --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersDirectory.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetFoldersDirectory + { + + [JsonProperty("fastKey")] + public string? FastKey { 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersMediaContainer.cs new file mode 100644 index 0000000..a8ec7bf --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetFoldersMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Directory")] + public List? Directory { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersRequest.cs new file mode 100644 index 0000000..59f1f31 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetFoldersRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersResponse.cs new file mode 100644 index 0000000..d82dfc3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetFoldersResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetFoldersResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersResponseBody.cs new file mode 100644 index 0000000..c767c9b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetFoldersResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetFoldersResponseBody + { + + [JsonProperty("MediaContainer")] + public GetFoldersMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryDirectory.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryDirectory.cs deleted file mode 100644 index 43780ca..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryDirectory.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetGenresLibraryDirectory - { - - [JsonProperty("fastKey")] - public string FastKey { get; set; } = default!; - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryMediaContainer.cs deleted file mode 100644 index 11ad990..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryMediaContainer.cs +++ /dev/null @@ -1,95 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetGenresLibraryMediaContainer - { - - /// - /// Number of media items returned in this response. - /// - [JsonProperty("size")] - public int Size { get; set; } = default!; - - /// - /// Indicates whether syncing is allowed. - /// - [JsonProperty("allowSync")] - public bool AllowSync { get; set; } = default!; - - /// - /// URL for the background artwork of the media container. - /// - [JsonProperty("art")] - public string Art { get; set; } = default!; - - /// - /// The content type or mode. - /// - [JsonProperty("content")] - public string Content { get; set; } = default!; - - /// - /// An plugin identifier for the media container. - /// - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - /// - /// The prefix used for media tag resource paths. - /// - [JsonProperty("mediaTagPrefix")] - public string MediaTagPrefix { get; set; } = default!; - - /// - /// The version number for media tags. - /// - [JsonProperty("mediaTagVersion")] - public long MediaTagVersion { get; set; } = default!; - - /// - /// Specifies whether caching is disabled. - /// - [JsonProperty("nocache")] - public bool Nocache { get; set; } = default!; - - /// - /// URL for the thumbnail image of the media container. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The primary title of the media container. - /// - [JsonProperty("title1")] - public string Title1 { get; set; } = default!; - - /// - /// The secondary title of the media container. - /// - [JsonProperty("title2")] - public string Title2 { get; set; } = default!; - - /// - /// Identifier for the view group layout. - /// - [JsonProperty("viewGroup")] - public string ViewGroup { get; set; } = default!; - - [JsonProperty("Directory")] - public List? Directory { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryQueryParamType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryQueryParamType.cs deleted file mode 100644 index 4ab2d63..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryQueryParamType.cs +++ /dev/null @@ -1,100 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetGenresLibraryQueryParamType : IEquatable - { - public static readonly GetGenresLibraryQueryParamType Movie = new GetGenresLibraryQueryParamType(1); - public static readonly GetGenresLibraryQueryParamType TvShow = new GetGenresLibraryQueryParamType(2); - public static readonly GetGenresLibraryQueryParamType Season = new GetGenresLibraryQueryParamType(3); - public static readonly GetGenresLibraryQueryParamType Episode = new GetGenresLibraryQueryParamType(4); - public static readonly GetGenresLibraryQueryParamType Artist = new GetGenresLibraryQueryParamType(5); - public static readonly GetGenresLibraryQueryParamType Album = new GetGenresLibraryQueryParamType(6); - public static readonly GetGenresLibraryQueryParamType Track = new GetGenresLibraryQueryParamType(7); - public static readonly GetGenresLibraryQueryParamType PhotoAlbum = new GetGenresLibraryQueryParamType(8); - public static readonly GetGenresLibraryQueryParamType Photo = new GetGenresLibraryQueryParamType(9); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - [1] = Movie, - [2] = TvShow, - [3] = Season, - [4] = Episode, - [5] = Artist, - [6] = Album, - [7] = Track, - [8] = PhotoAlbum, - [9] = Photo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetGenresLibraryQueryParamType(long value) - { - Value = value; - } - - public long Value { get; } - - public static GetGenresLibraryQueryParamType Of(long value) - { - return _values.GetOrAdd(value, _ => new GetGenresLibraryQueryParamType(value)); - } - - public static implicit operator GetGenresLibraryQueryParamType(long value) => Of(value); - public static implicit operator long(GetGenresLibraryQueryParamType getgenreslibraryqueryparamtype) => getgenreslibraryqueryparamtype.Value; - - public static GetGenresLibraryQueryParamType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetGenresLibraryQueryParamType); - - public bool Equals(GetGenresLibraryQueryParamType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryRequest.cs deleted file mode 100644 index 11a6d64..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryRequest.cs +++ /dev/null @@ -1,49 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetGenresLibraryRequest - { - - /// - /// The unique key of the Plex library.
- /// - /// - /// Note: This is unique in the context of the Plex server.
- /// - ///
- ///
- [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")] - public int SectionKey { get; set; } = default!; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] - public GetGenresLibraryQueryParamType Type { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryResponse.cs deleted file mode 100644 index 2e13b2d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetGenresLibraryResponse - { - - /// - /// 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!; - - /// - /// Successful response containing media container data. - /// - public GetGenresLibraryResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryResponseBody.cs deleted file mode 100644 index 1cdbe85..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGenresLibraryResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Successful response containing media container data. - /// - public class GetGenresLibraryResponseBody - { - - [JsonProperty("MediaContainer")] - public GetGenresLibraryMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGeoDataGeoData.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGeoDataGeoData.cs deleted file mode 100644 index 97db87c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGeoDataGeoData.cs +++ /dev/null @@ -1,87 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Geo location data - /// - public class GetGeoDataGeoData - { - - /// - /// The ISO 3166-1 alpha-2 code of the country. - /// - [JsonProperty("code")] - public string Code { get; set; } = default!; - - /// - /// The continent code where the country is located. - /// - [JsonProperty("continent_code")] - public string ContinentCode { get; set; } = default!; - - /// - /// The official name of the country. - /// - [JsonProperty("country")] - public string Country { get; set; } = default!; - - /// - /// The name of the city. - /// - [JsonProperty("city")] - public string City { get; set; } = default!; - - /// - /// Indicates if the country is a member of the European Union. - /// - [JsonProperty("european_union_member")] - public bool? EuropeanUnionMember { get; set; } = false; - - /// - /// The time zone of the country. - /// - [JsonProperty("time_zone")] - public string TimeZone { get; set; } = default!; - - /// - /// The postal code of the location. - /// - [JsonProperty("postal_code")] - public string PostalCode { get; set; } = default!; - - /// - /// Indicates if the country has privacy restrictions. - /// - [JsonProperty("in_privacy_restricted_country")] - public bool? InPrivacyRestrictedCountry { get; set; } = false; - - /// - /// Indicates if the region has privacy restrictions. - /// - [JsonProperty("in_privacy_restricted_region")] - public bool? InPrivacyRestrictedRegion { get; set; } = false; - - /// - /// The name of the primary administrative subdivision. - /// - [JsonProperty("subdivisions")] - public string Subdivisions { get; set; } = default!; - - /// - /// The geographical coordinates (latitude, longitude) of the location. - /// - [JsonProperty("coordinates")] - public string Coordinates { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGeoDataResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGeoDataResponse.cs deleted file mode 100644 index 5e71e2e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGeoDataResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetGeoDataResponse - { - - /// - /// 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!; - - /// - /// Gets the geo location data of the user - /// - public GetGeoDataGeoData? GeoData { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsMediaContainer.cs deleted file mode 100644 index 26e0723..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsMediaContainer.cs +++ /dev/null @@ -1,32 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetGlobalHubsMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("allowSync")] - public bool? AllowSync { get; set; } - - [JsonProperty("identifier")] - public string? Identifier { get; set; } - - [JsonProperty("Hub")] - public List? Hub { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsMetadata.cs deleted file mode 100644 index 974beff..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsMetadata.cs +++ /dev/null @@ -1,69 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetGlobalHubsMetadata - { - - [JsonProperty("ratingKey")] - public string? RatingKey { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("guid")] - public string? Guid { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("titleSort")] - public string? TitleSort { get; set; } - - [JsonProperty("summary")] - public string? Summary { get; set; } - - [JsonProperty("smart")] - public bool? Smart { get; set; } - - [JsonProperty("playlistType")] - public string? PlaylistType { get; set; } - - [JsonProperty("composite")] - public string? Composite { get; set; } - - [JsonProperty("icon")] - public string? Icon { get; set; } - - [JsonProperty("viewCount")] - public int? ViewCount { get; set; } - - [JsonProperty("lastViewedAt")] - public int? LastViewedAt { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - [JsonProperty("addedAt")] - public int? AddedAt { get; set; } - - [JsonProperty("updatedAt")] - public int? UpdatedAt { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsRequest.cs deleted file mode 100644 index a95bd48..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsRequest.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.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/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsResponse.cs deleted file mode 100644 index 4d5d8e7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - - /// - /// returns global hubs - /// - public GetGlobalHubsResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsResponseBody.cs deleted file mode 100644 index 5b55aae..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetGlobalHubsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// returns global hubs - /// - public class GetGlobalHubsResponseBody - { - - [JsonProperty("MediaContainer")] - public GetGlobalHubsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetHistoryItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetHistoryItemRequest.cs new file mode 100644 index 0000000..bfb9764 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetHistoryItemRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetHistoryItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The id of the history item (the `historyKey` from above) + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=historyId")] + public long HistoryId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetHistoryItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetHistoryItemResponse.cs new file mode 100644 index 0000000..ddee7dd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetHistoryItemResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetHistoryItemResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public HistoryAllGetResponses200? HistoryAllGetResponses200 { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetHomeDataResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetHomeDataResponse.cs deleted file mode 100644 index 5459719..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetHomeDataResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetHomeDataResponse - { - - /// - /// 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!; - - /// - /// Home Data - /// - public GetHomeDataResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetHomeDataResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetHomeDataResponseBody.cs deleted file mode 100644 index 5d71337..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetHomeDataResponseBody.cs +++ /dev/null @@ -1,39 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Home Data - /// - public class GetHomeDataResponseBody - { - - [JsonProperty("id")] - public double? Id { get; set; } - - [JsonProperty("name")] - public string? Name { get; set; } - - [JsonProperty("guestUserID")] - public double? GuestUserID { get; set; } - - [JsonProperty("guestUserUUID")] - public string? GuestUserUUID { get; set; } - - [JsonProperty("guestEnabled")] - public bool? GuestEnabled { get; set; } - - [JsonProperty("subscription")] - public bool? Subscription { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsRequest.cs new file mode 100644 index 0000000..e96acb5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsRequest.cs @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class GetHubItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Limit results to count items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=count")] + public long? Count { get; set; } + + /// + /// If provided, limit to only specified hubs + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=identifier")] + public List Identifier { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsResponse.cs new file mode 100644 index 0000000..15d5807 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetHubItemsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetHubItemsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsResponseBody.cs new file mode 100644 index 0000000..ba854bc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetHubItemsResponseBody.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetHubItemsResponseBody + { + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ [JsonProperty("MediaContainer")] + public Models.Components.MediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityMediaContainer.cs new file mode 100644 index 0000000..8557960 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityMediaContainer.cs @@ -0,0 +1,39 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetIdentityMediaContainer + { + + /// + /// Indicates whether this server has been claimed by a user + /// + [JsonProperty("claimed")] + public bool? Claimed { get; set; } + + /// + /// A unique identifier of the computer + /// + [JsonProperty("machineIdentifier")] + public string? MachineIdentifier { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The full version string of the PMS + /// + [JsonProperty("version")] + public string? Version { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityResponse.cs new file mode 100644 index 0000000..c0310e9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetIdentityResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetIdentityResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityResponseBody.cs new file mode 100644 index 0000000..f1d97d0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetIdentityResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetIdentityResponseBody + { + + [JsonProperty("MediaContainer")] + public GetIdentityMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetImageFromBifRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetImageFromBifRequest.cs new file mode 100644 index 0000000..5038958 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetImageFromBifRequest.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetImageFromBifRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The part id who's index is to be fetched + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=partId")] + public long PartId { get; set; } = default!; + + /// + /// The type of index to grab. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=index")] + public PathParamIndex Index { get; set; } = default!; + + /// + /// The offset to seek in ms. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=offset")] + public long Offset { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetImageFromBifResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetImageFromBifResponse.cs new file mode 100644 index 0000000..50678c4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetImageFromBifResponse.cs @@ -0,0 +1,39 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetImageFromBifResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public byte[]? Bytes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetImageRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetImageRequest.cs new file mode 100644 index 0000000..0f7a017 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetImageRequest.cs @@ -0,0 +1,126 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetImageRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The base color (hex) for the top left quadrant. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=topLeft")] + public string? TopLeft { get; set; } + + /// + /// The base color (hex) for the top right quadrant. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=topRight")] + public string? TopRight { get; set; } + + /// + /// The base color (hex) for the bottom right quadrant. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=bottomRight")] + public string? BottomRight { get; set; } + + /// + /// The base color (hex) for the bottom left quadrant. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=bottomLeft")] + public string? BottomLeft { get; set; } + + /// + /// Width in pixels for the image. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=width")] + public long? Width { get; set; } + + /// + /// Height in pixels for the image. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=height")] + public long? Height { get; set; } + + /// + /// Whether to add noise to the ouput image. Noise can reduce color banding with the gradients. Image sizes with noise will be larger. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=noise")] + public BoolInt? Noise { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetImageResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetImageResponse.cs new file mode 100644 index 0000000..a26ea45 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetImageResponse.cs @@ -0,0 +1,39 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetImageResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public byte[]? Bytes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkPathParamElement.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkPathParamElement.cs new file mode 100644 index 0000000..e5089dd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkPathParamElement.cs @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum GetItemArtworkPathParamElement + { + [JsonProperty("thumb")] + Thumb, + [JsonProperty("art")] + Art, + [JsonProperty("clearLogo")] + ClearLogo, + [JsonProperty("banner")] + Banner, + [JsonProperty("poster")] + Poster, + [JsonProperty("theme")] + Theme, + } + + public static class GetItemArtworkPathParamElementExtension + { + public static string Value(this GetItemArtworkPathParamElement value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GetItemArtworkPathParamElement ToEnum(this string value) + { + foreach(var field in typeof(GetItemArtworkPathParamElement).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 GetItemArtworkPathParamElement) + { + return (GetItemArtworkPathParamElement)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GetItemArtworkPathParamElement"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkRequest.cs new file mode 100644 index 0000000..4e2b369 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkRequest.cs @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetItemArtworkRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=element")] + public GetItemArtworkPathParamElement Element { get; set; } = default!; + + /// + /// A timestamp on the element used for cache management in the client + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=timestamp")] + public long Timestamp { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkResponse.cs new file mode 100644 index 0000000..a872df2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemArtworkResponse.cs @@ -0,0 +1,44 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetItemArtworkResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public byte[]? TwoHundredAudioMpeg3Bytes { get; set; } + + /// + /// OK + /// + public byte[]? TwoHundredImageJpegBytes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemDecisionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemDecisionRequest.cs new file mode 100644 index 0000000..a2a897f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemDecisionRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetItemDecisionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The queue id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=queueId")] + public long QueueId { get; set; } = default!; + + /// + /// The item ids + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=itemId")] + public long ItemId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemDecisionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemDecisionResponse.cs new file mode 100644 index 0000000..49e12e6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemDecisionResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetItemDecisionResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithDecision? MediaContainerWithDecision { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemTreeRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemTreeRequest.cs new file mode 100644 index 0000000..cfb2966 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemTreeRequest.cs @@ -0,0 +1,87 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetItemTreeRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemTreeResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemTreeResponse.cs new file mode 100644 index 0000000..f1687fc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetItemTreeResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetItemTreeResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithNestedMetadata? MediaContainerWithNestedMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsDirectory.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsDirectory.cs deleted file mode 100644 index eae898f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsDirectory.cs +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryDetailsDirectory - { - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("secondary")] - public bool? Secondary { get; set; } - - [JsonProperty("prompt")] - public string? Prompt { get; set; } - - [JsonProperty("search")] - public bool? Search { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsField.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsField.cs deleted file mode 100644 index cb828c5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsField.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryDetailsField - { - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("subType")] - public string? SubType { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsFieldType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsFieldType.cs deleted file mode 100644 index 2935114..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsFieldType.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibraryDetailsFieldType - { - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("Operator")] - public List? Operator { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsFilter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsFilter.cs deleted file mode 100644 index 91fce4e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsFilter.cs +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryDetailsFilter - { - - [JsonProperty("filter")] - public string? Filter { get; set; } - - [JsonProperty("filterType")] - public string? FilterType { get; set; } - - [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/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsMediaContainer.cs index 740c797..9a963fa 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsMediaContainer.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsMediaContainer.cs @@ -9,7 +9,7 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; using System.Collections.Generic; @@ -17,8 +17,17 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class GetLibraryDetailsMediaContainer { - [JsonProperty("size")] - public int? Size { get; set; } + /// + /// The flavors of directory found here:
+ /// + /// + /// - Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users.
+ /// - Secondary: These are marked with `"secondary": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation.
+ /// - Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `"search": true` which used to be used to allow clients to build search dialogs on the fly. + ///
+ ///
+ [JsonProperty("content")] + public string? Content { get; set; } [JsonProperty("allowSync")] public bool? AllowSync { get; set; } @@ -26,20 +35,26 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests [JsonProperty("art")] public string? Art { get; set; } - [JsonProperty("content")] - public string? Content { get; set; } + [JsonProperty("Directory")] + public List? Directory { get; set; } [JsonProperty("identifier")] public string? Identifier { get; set; } [JsonProperty("librarySectionID")] - public int? LibrarySectionID { get; set; } + public long? LibrarySectionID { get; set; } [JsonProperty("mediaTagPrefix")] public string? MediaTagPrefix { get; set; } [JsonProperty("mediaTagVersion")] - public int? MediaTagVersion { get; set; } + public long? MediaTagVersion { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + [JsonProperty("sortAsc")] + public bool? SortAsc { get; set; } [JsonProperty("thumb")] public string? Thumb { get; set; } @@ -51,15 +66,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public string? ViewGroup { get; set; } [JsonProperty("viewMode")] - public int? ViewMode { get; set; } - - [JsonProperty("Directory")] - public List? Directory { get; set; } - - [JsonProperty("Type")] - public List? Type { get; set; } - - [JsonProperty("FieldType")] - public List? FieldType { get; set; } + public long? ViewMode { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsOperator.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsOperator.cs deleted file mode 100644 index 69c13ab..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsOperator.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryDetailsOperator - { - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsRequest.cs index 3f78827..1b1916b 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsRequest.cs @@ -9,32 +9,88 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; public class GetLibraryDetailsRequest { /// - /// 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.
- /// - ///
+ /// Indicates the client accepts the indicated media types ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeDetails")] - public IncludeDetails? IncludeDetails { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeDetails.Zero; + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; /// - /// The unique key of the Plex library.
- /// - /// - /// Note: This is unique in the context of the Plex server.
- /// - ///
+ /// An opaque identifier unique to the client ///
- [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")] - public int SectionKey { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public string 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 BoolInt? IncludeDetails { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsResponse.cs index cd9cccf..e8cdba2 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsResponse.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsResponse.cs @@ -33,7 +33,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public HttpResponseMessage RawResponse { get; set; } = default!; /// - /// The details of the library + /// OK /// public GetLibraryDetailsResponseBody? Object { get; set; } } diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsResponseBody.cs index d0f9a31..2ca03da 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsResponseBody.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsResponseBody.cs @@ -14,7 +14,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using Newtonsoft.Json; /// - /// The details of the library + /// OK /// public class GetLibraryDetailsResponseBody { diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsSort.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsSort.cs deleted file mode 100644 index b2a6830..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsSort.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryDetailsSort - { - - [JsonProperty("default")] - public string? Default { get; set; } - - [JsonProperty("defaultDirection")] - public string? DefaultDirection { get; set; } - - [JsonProperty("descKey")] - public string? DescKey { get; set; } - - [JsonProperty("firstCharacterKey")] - public string? FirstCharacterKey { 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsType.cs deleted file mode 100644 index eddc3c5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryDetailsType.cs +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibraryDetailsType - { - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("active")] - public bool? Active { get; set; } - - [JsonProperty("Filter")] - public List? Filter { get; set; } - - [JsonProperty("Sort")] - public List? Sort { get; set; } - - [JsonProperty("Field")] - public List? Field { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsCountry.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsCountry.cs deleted file mode 100644 index 6b66f0d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsCountry.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryHubsCountry - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsDirector.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsDirector.cs deleted file mode 100644 index a452096..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsDirector.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryHubsDirector - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsGenre.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsGenre.cs deleted file mode 100644 index df013a1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsGenre.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryHubsGenre - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsHub.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsHub.cs deleted file mode 100644 index b00fc48..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsHub.cs +++ /dev/null @@ -1,56 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibraryHubsHub - { - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("hubIdentifier")] - public string? HubIdentifier { get; set; } - - [JsonProperty("context")] - public string? Context { get; set; } - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("more")] - public bool? More { get; set; } - - [JsonProperty("style")] - public string? Style { get; set; } - - [JsonProperty("hubKey")] - public string? HubKey { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - - [JsonProperty("promoted")] - public bool? Promoted { get; set; } - - [JsonProperty("random")] - public bool? Random { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMedia.cs deleted file mode 100644 index 09300a1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMedia.cs +++ /dev/null @@ -1,71 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibraryHubsMedia - { - - [JsonProperty("id")] - public int? Id { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("bitrate")] - public int? Bitrate { get; set; } - - [JsonProperty("width")] - public int? Width { get; set; } - - [JsonProperty("height")] - public int? Height { get; set; } - - [JsonProperty("aspectRatio")] - public double? AspectRatio { get; set; } - - [JsonProperty("audioChannels")] - public int? 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("optimizedForStreaming")] - public int? OptimizedForStreaming { get; set; } - - [JsonProperty("audioProfile")] - public string? AudioProfile { 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMediaContainer.cs deleted file mode 100644 index 6d93ae5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMediaContainer.cs +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibraryHubsMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("allowSync")] - public bool? AllowSync { get; set; } - - [JsonProperty("identifier")] - public string? Identifier { get; set; } - - [JsonProperty("librarySectionID")] - public int? LibrarySectionID { get; set; } - - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - [JsonProperty("librarySectionUUID")] - public string? LibrarySectionUUID { get; set; } - - [JsonProperty("Hub")] - public List? Hub { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMetadata.cs deleted file mode 100644 index fbe4df0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsMetadata.cs +++ /dev/null @@ -1,123 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using NodaTime; - using System.Collections.Generic; - - public class GetLibraryHubsMetadata - { - - [JsonProperty("ratingKey")] - public string? 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("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - [JsonProperty("librarySectionID")] - public int? LibrarySectionID { get; set; } - - [JsonProperty("librarySectionKey")] - public string? LibrarySectionKey { 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("viewCount")] - public int? ViewCount { get; set; } - - [JsonProperty("lastViewedAt")] - public int? LastViewedAt { get; set; } - - [JsonProperty("year")] - public int? 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 int? Duration { get; set; } - - [JsonProperty("originallyAvailableAt")] - public LocalDate? OriginallyAvailableAt { get; set; } - - [JsonProperty("addedAt")] - public int? AddedAt { get; set; } - - [JsonProperty("updatedAt")] - public int? UpdatedAt { get; set; } - - [JsonProperty("audienceRatingImage")] - public string? AudienceRatingImage { 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("Country")] - public List? Country { get; set; } - - [JsonProperty("Director")] - public List? Director { get; set; } - - [JsonProperty("Role")] - public List? Role { get; set; } - - [JsonProperty("Writer")] - public List? Writer { get; set; } - - [JsonProperty("skipCount")] - public int? SkipCount { get; set; } - - [JsonProperty("chapterSource")] - public string? ChapterSource { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsPart.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsPart.cs deleted file mode 100644 index 41aa7c1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsPart.cs +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryHubsPart - { - - [JsonProperty("id")] - public int? Id { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("file")] - public string? File { get; set; } - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - [JsonProperty("container")] - public string? Container { get; set; } - - [JsonProperty("has64bitOffsets")] - public bool? Has64bitOffsets { 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsRequest.cs deleted file mode 100644 index 42baea0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsRequest.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.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/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsResponse.cs deleted file mode 100644 index 5bbf3e5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - - /// - /// The hubs specific to the library - /// - public GetLibraryHubsResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsResponseBody.cs deleted file mode 100644 index cadf038..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The hubs specific to the library - /// - public class GetLibraryHubsResponseBody - { - - [JsonProperty("MediaContainer")] - public GetLibraryHubsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsRole.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsRole.cs deleted file mode 100644 index 36f9a8b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsRole.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryHubsRole - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsWriter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsWriter.cs deleted file mode 100644 index bfac487..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryHubsWriter.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryHubsWriter - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsActiveDirection.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsActiveDirection.cs deleted file mode 100644 index 38aecd7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsActiveDirection.cs +++ /dev/null @@ -1,64 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- public enum GetLibraryItemsActiveDirection - { - [JsonProperty("asc")] - Ascending, - [JsonProperty("desc")] - Descending, - } - - public static class GetLibraryItemsActiveDirectionExtension - { - public static string Value(this GetLibraryItemsActiveDirection value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetLibraryItemsActiveDirection ToEnum(this string value) - { - foreach(var field in typeof(GetLibraryItemsActiveDirection).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 GetLibraryItemsActiveDirection) - { - return (GetLibraryItemsActiveDirection)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetLibraryItemsActiveDirection"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsCollection.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsCollection.cs deleted file mode 100644 index d205718..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsCollection.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsCollection - { - - /// - /// The user-made collection this media item belongs to - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsCountry.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsCountry.cs deleted file mode 100644 index f15d1d9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsCountry.cs +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsCountry - { - - /// - /// The unique identifier for the country.
- /// - /// - /// NOTE: This is different for each Plex server and is not globally unique.
- /// - ///
- ///
- [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The country of origin of this media item - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsDefaultDirection.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsDefaultDirection.cs deleted file mode 100644 index 0fb2f11..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsDefaultDirection.cs +++ /dev/null @@ -1,64 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- public enum GetLibraryItemsDefaultDirection - { - [JsonProperty("asc")] - Ascending, - [JsonProperty("desc")] - Descending, - } - - public static class GetLibraryItemsDefaultDirectionExtension - { - public static string Value(this GetLibraryItemsDefaultDirection value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetLibraryItemsDefaultDirection ToEnum(this string value) - { - foreach(var field in typeof(GetLibraryItemsDefaultDirection).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 GetLibraryItemsDefaultDirection) - { - return (GetLibraryItemsDefaultDirection)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetLibraryItemsDefaultDirection"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsDirector.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsDirector.cs deleted file mode 100644 index f0393c2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsDirector.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsDirector - { - - /// - /// Unique identifier for the director. - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The role of Director - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// The absolute URL of the thumbnail image for the director. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsField.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsField.cs deleted file mode 100644 index 6c6c659..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsField.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsField - { - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("subType")] - public string? SubType { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFieldType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFieldType.cs deleted file mode 100644 index aa56e71..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFieldType.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibraryItemsFieldType - { - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("Operator")] - public List Operator { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFilter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFilter.cs deleted file mode 100644 index 47244ed..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFilter.cs +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsFilter - { - - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - [JsonProperty("filterType")] - public string FilterType { get; set; } = default!; - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsGenre.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsGenre.cs deleted file mode 100644 index 173ab8b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsGenre.cs +++ /dev/null @@ -1,39 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsGenre - { - - /// - /// The unique identifier for the genre.
- /// - /// - /// NOTE: This is different for each Plex server and is not globally unique.
- /// - ///
- ///
- [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The genre name of this media-item
- /// - /// - /// - /// - ///
- [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsGuids.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsGuids.cs deleted file mode 100644 index e4e0d27..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsGuids.cs +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsGuids - { - - /// - /// The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
- /// - /// - /// - /// - ///
- [JsonProperty("id")] - public string Id { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsHasThumbnail.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsHasThumbnail.cs deleted file mode 100644 index 33fe640..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsHasThumbnail.cs +++ /dev/null @@ -1,64 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// Indicates if the part has a thumbnail.
- /// - /// - /// - /// - ///
- public enum GetLibraryItemsHasThumbnail - { - [JsonProperty("0")] - False, - [JsonProperty("1")] - True, - } - - public static class GetLibraryItemsHasThumbnailExtension - { - public static string Value(this GetLibraryItemsHasThumbnail value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetLibraryItemsHasThumbnail ToEnum(this string value) - { - foreach(var field in typeof(GetLibraryItemsHasThumbnail).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 GetLibraryItemsHasThumbnail) - { - return (GetLibraryItemsHasThumbnail)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetLibraryItemsHasThumbnail"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsImage.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsImage.cs deleted file mode 100644 index e22b4ad..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsImage.cs +++ /dev/null @@ -1,32 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetLibraryItemsImage - { - - [JsonProperty("alt")] - public string Alt { get; set; } = default!; - - [JsonProperty("type")] - public GetLibraryItemsLibraryResponseType Type { get; set; } = default!; - - [JsonProperty("url")] - public string Url { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryOptimizedForStreaming.cs deleted file mode 100644 index 80eedbc..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryOptimizedForStreaming.cs +++ /dev/null @@ -1,207 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using Newtonsoft.Json.Linq; - using System; - using System.Collections.Generic; - using System.Numerics; - using System.Reflection; - - public class GetLibraryItemsLibraryOptimizedForStreamingType - { - private GetLibraryItemsLibraryOptimizedForStreamingType(string value) { Value = value; } - - public string Value { get; private set; } - - public static GetLibraryItemsLibraryOptimizedForStreamingType GetLibraryItemsOptimizedForStreaming1 { get { return new GetLibraryItemsLibraryOptimizedForStreamingType("get-library-items_optimizedForStreaming_1"); } } - - public static GetLibraryItemsLibraryOptimizedForStreamingType Boolean { get { return new GetLibraryItemsLibraryOptimizedForStreamingType("boolean"); } } - - public static GetLibraryItemsLibraryOptimizedForStreamingType Null { get { return new GetLibraryItemsLibraryOptimizedForStreamingType("null"); } } - - public override string ToString() { return Value; } - public static implicit operator String(GetLibraryItemsLibraryOptimizedForStreamingType v) { return v.Value; } - public static GetLibraryItemsLibraryOptimizedForStreamingType FromString(string v) { - switch(v) { - case "get-library-items_optimizedForStreaming_1": return GetLibraryItemsOptimizedForStreaming1; - case "boolean": return Boolean; - case "null": return Null; - default: throw new ArgumentException("Invalid value for GetLibraryItemsLibraryOptimizedForStreamingType"); - } - } - public override bool Equals(object? obj) - { - if (obj == null || GetType() != obj.GetType()) - { - return false; - } - return Value.Equals(((GetLibraryItemsLibraryOptimizedForStreamingType)obj).Value); - } - - public override int GetHashCode() - { - return Value.GetHashCode(); - } - } - - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
- /// - /// - /// - /// - ///
- [JsonConverter(typeof(GetLibraryItemsLibraryOptimizedForStreaming.GetLibraryItemsLibraryOptimizedForStreamingConverter))] - public class GetLibraryItemsLibraryOptimizedForStreaming - { - public GetLibraryItemsLibraryOptimizedForStreaming(GetLibraryItemsLibraryOptimizedForStreamingType type) - { - Type = type; - } - - [SpeakeasyMetadata("form:explode=true")] - public GetLibraryItemsOptimizedForStreaming1? GetLibraryItemsOptimizedForStreaming1 { get; set; } - - [SpeakeasyMetadata("form:explode=true")] - public bool? Boolean { get; set; } - - public GetLibraryItemsLibraryOptimizedForStreamingType Type { get; set; } - public static GetLibraryItemsLibraryOptimizedForStreaming CreateGetLibraryItemsOptimizedForStreaming1(GetLibraryItemsOptimizedForStreaming1 getLibraryItemsOptimizedForStreaming1) - { - GetLibraryItemsLibraryOptimizedForStreamingType typ = GetLibraryItemsLibraryOptimizedForStreamingType.GetLibraryItemsOptimizedForStreaming1; - - GetLibraryItemsLibraryOptimizedForStreaming res = new GetLibraryItemsLibraryOptimizedForStreaming(typ); - res.GetLibraryItemsOptimizedForStreaming1 = getLibraryItemsOptimizedForStreaming1; - return res; - } - public static GetLibraryItemsLibraryOptimizedForStreaming CreateBoolean(bool boolean) - { - GetLibraryItemsLibraryOptimizedForStreamingType typ = GetLibraryItemsLibraryOptimizedForStreamingType.Boolean; - - GetLibraryItemsLibraryOptimizedForStreaming res = new GetLibraryItemsLibraryOptimizedForStreaming(typ); - res.Boolean = boolean; - return res; - } - - public static GetLibraryItemsLibraryOptimizedForStreaming CreateNull() - { - GetLibraryItemsLibraryOptimizedForStreamingType typ = GetLibraryItemsLibraryOptimizedForStreamingType.Null; - return new GetLibraryItemsLibraryOptimizedForStreaming(typ); - } - - public class GetLibraryItemsLibraryOptimizedForStreamingConverter : JsonConverter - { - - public override bool CanConvert(System.Type objectType) => objectType == typeof(GetLibraryItemsLibraryOptimizedForStreaming); - - public override bool CanRead => true; - - public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) - { - var json = JRaw.Create(reader).ToString(); - if (json == "null") - { - return null; - } - - var fallbackCandidates = new List<(System.Type, object, string)>(); - - try - { - return new GetLibraryItemsLibraryOptimizedForStreaming(GetLibraryItemsLibraryOptimizedForStreamingType.GetLibraryItemsOptimizedForStreaming1) - { - GetLibraryItemsOptimizedForStreaming1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) - }; - } - catch (ResponseBodyDeserializer.MissingMemberException) - { - fallbackCandidates.Add((typeof(GetLibraryItemsOptimizedForStreaming1), new GetLibraryItemsLibraryOptimizedForStreaming(GetLibraryItemsLibraryOptimizedForStreamingType.GetLibraryItemsOptimizedForStreaming1), "GetLibraryItemsOptimizedForStreaming1")); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next option - } - catch (Exception) - { - throw; - } - - try - { - var converted = Convert.ToBoolean(json); - return new GetLibraryItemsLibraryOptimizedForStreaming(GetLibraryItemsLibraryOptimizedForStreamingType.Boolean) - { - Boolean = converted - }; - } - catch (System.FormatException) - { - // try next option - } - - if (fallbackCandidates.Count > 0) - { - fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); - foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) - { - try - { - return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next fallback option - } - catch (Exception) - { - throw; - } - } - } - - throw new InvalidOperationException("Could not deserialize into any supported types."); - } - - public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) - { - if (value == null) { - writer.WriteRawValue("null"); - return; - } - - GetLibraryItemsLibraryOptimizedForStreaming res = (GetLibraryItemsLibraryOptimizedForStreaming)value; - if (GetLibraryItemsLibraryOptimizedForStreamingType.FromString(res.Type).Equals(GetLibraryItemsLibraryOptimizedForStreamingType.Null)) - { - writer.WriteRawValue("null"); - return; - } - - if (res.GetLibraryItemsOptimizedForStreaming1 != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.GetLibraryItemsOptimizedForStreaming1)); - return; - } - - if (res.Boolean != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); - return; - } - } - - } - - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryResponseType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryResponseType.cs deleted file mode 100644 index 6d5f034..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryResponseType.cs +++ /dev/null @@ -1,79 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - [JsonConverter(typeof(OpenEnumConverter))] - public class GetLibraryItemsLibraryResponseType : IEquatable - { - public static readonly GetLibraryItemsLibraryResponseType CoverPoster = new GetLibraryItemsLibraryResponseType("coverPoster"); - public static readonly GetLibraryItemsLibraryResponseType Background = new GetLibraryItemsLibraryResponseType("background"); - public static readonly GetLibraryItemsLibraryResponseType Snapshot = new GetLibraryItemsLibraryResponseType("snapshot"); - public static readonly GetLibraryItemsLibraryResponseType ClearLogo = new GetLibraryItemsLibraryResponseType("clearLogo"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["coverPoster"] = CoverPoster, - ["background"] = Background, - ["snapshot"] = Snapshot, - ["clearLogo"] = ClearLogo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetLibraryItemsLibraryResponseType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetLibraryItemsLibraryResponseType Of(string value) - { - return _values.GetOrAdd(value, _ => new GetLibraryItemsLibraryResponseType(value)); - } - - public static implicit operator GetLibraryItemsLibraryResponseType(string value) => Of(value); - public static implicit operator string(GetLibraryItemsLibraryResponseType getlibraryitemslibraryresponsetype) => getlibraryitemslibraryresponsetype.Value; - - public static GetLibraryItemsLibraryResponseType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetLibraryItemsLibraryResponseType); - - public bool Equals(GetLibraryItemsLibraryResponseType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryType.cs deleted file mode 100644 index 47c2ae9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLibraryType.cs +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibraryItemsLibraryType - { - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("active")] - public bool Active { get; set; } = default!; - - [JsonProperty("Filter")] - public List? Filter { get; set; } - - [JsonProperty("Sort")] - public List? Sort { get; set; } - - [JsonProperty("Field")] - public List? Field { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLocation.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLocation.cs deleted file mode 100644 index 45ae7d0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLocation.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The folder path for the media item. - /// - public class GetLibraryItemsLocation - { - - [JsonProperty("path")] - public string Path { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMedia.cs deleted file mode 100644 index 844fa92..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMedia.cs +++ /dev/null @@ -1,138 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibraryItemsMedia - { - - /// - /// Unique media identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Duration of the media in milliseconds. - /// - [JsonProperty("duration")] - public int? Duration { get; set; } - - /// - /// Bitrate in bits per second. - /// - [JsonProperty("bitrate")] - public int? Bitrate { get; set; } - - /// - /// Video width in pixels. - /// - [JsonProperty("width")] - public int? Width { get; set; } - - /// - /// Video height in pixels. - /// - [JsonProperty("height")] - public int? Height { get; set; } - - /// - /// Aspect ratio of the video. - /// - [JsonProperty("aspectRatio")] - public float? AspectRatio { get; set; } - - /// - /// Number of audio channels. - /// - [JsonProperty("audioChannels")] - public int? AudioChannels { get; set; } - - [JsonProperty("displayOffset")] - public int? DisplayOffset { get; set; } - - /// - /// Audio codec used. - /// - [JsonProperty("audioCodec")] - public string? AudioCodec { get; set; } - - /// - /// Video codec used. - /// - [JsonProperty("videoCodec")] - public string? VideoCodec { get; set; } - - /// - /// Video resolution (e.g., 4k). - /// - [JsonProperty("videoResolution")] - public string? VideoResolution { get; set; } - - /// - /// Container format of the media. - /// - [JsonProperty("container")] - public string? Container { get; set; } - - /// - /// Frame rate of the video. Values found include NTSC, PAL, 24p
- /// - /// - /// - /// - ///
- [JsonProperty("videoFrameRate")] - public string? VideoFrameRate { get; set; } - - /// - /// Video profile (e.g., main 10). - /// - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - /// - /// Indicates whether voice activity is detected. - /// - [JsonProperty("hasVoiceActivity")] - public bool? HasVoiceActivity { get; set; } - - /// - /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). - /// - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonProperty("optimizedForStreaming")] - public GetLibraryItemsOptimizedForStreaming? OptimizedForStreaming { get; set; } - - /// - /// Indicates whether the media has 64-bit offsets.
- /// - /// - /// This is relevant for media files that may require larger offsets than what 32-bit integers can provide.
- /// - ///
- ///
- [JsonProperty("has64bitOffsets")] - public bool? Has64bitOffsets { get; set; } - - [JsonProperty("Part")] - public List? Part { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMediaContainer.cs deleted file mode 100644 index d2b519a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMediaContainer.cs +++ /dev/null @@ -1,150 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibraryItemsMediaContainer - { - - /// - /// Number of media items returned in this response. - /// - [JsonProperty("size")] - public int Size { get; set; } = default!; - - /// - /// Total number of media items in the library. - /// - [JsonProperty("totalSize")] - public int TotalSize { get; set; } = default!; - - /// - /// Offset value for pagination. - /// - [JsonProperty("offset")] - public long Offset { get; set; } = default!; - - /// - /// The content type or mode. - /// - [JsonProperty("content")] - public string Content { get; set; } = default!; - - /// - /// Indicates whether syncing is allowed. - /// - [JsonProperty("allowSync")] - public bool AllowSync { get; set; } = default!; - - /// - /// Specifies whether caching is disabled. - /// - [JsonProperty("nocache")] - public bool Nocache { get; set; } = default!; - - /// - /// URL for the background artwork of the media container. - /// - [JsonProperty("art")] - public string Art { get; set; } = default!; - - /// - /// An plugin identifier for the media container. - /// - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - /// - /// The unique identifier for the library section. - /// - [JsonProperty("librarySectionID")] - public long? LibrarySectionID { get; set; } - - /// - /// The title of the library section. - /// - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - /// - /// The universally unique identifier for the library section. - /// - [JsonProperty("librarySectionUUID")] - public string? LibrarySectionUUID { get; set; } - - /// - /// The prefix used for media tag resource paths. - /// - [JsonProperty("mediaTagPrefix")] - public string MediaTagPrefix { get; set; } = default!; - - /// - /// The version number for media tags. - /// - [JsonProperty("mediaTagVersion")] - public long MediaTagVersion { get; set; } = default!; - - /// - /// URL for the thumbnail image of the media container. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The primary title of the media container. - /// - [JsonProperty("title1")] - public string Title1 { get; set; } = default!; - - /// - /// The secondary title of the media container. - /// - [JsonProperty("title2")] - public string Title2 { get; set; } = default!; - - /// - /// Identifier for the view group layout. - /// - [JsonProperty("viewGroup")] - public string ViewGroup { get; set; } = default!; - - /// - /// Identifier for the view mode. - /// - [JsonProperty("viewMode")] - public string? ViewMode { get; set; } - - /// - /// Indicates if the media container has mixed parents. - /// - [JsonProperty("mixedParents")] - public bool? MixedParents { get; set; } - - /// - /// An array of metadata items. - /// - [JsonProperty("Metadata")] - public List Metadata { get; set; } = default!; - - /// - /// The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
- /// - /// - /// - /// - ///
- [JsonProperty("Meta")] - public GetLibraryItemsMeta? Meta { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMeta.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMeta.cs deleted file mode 100644 index 7d43b4e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMeta.cs +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - /// - /// The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
- /// - /// - /// - /// - ///
- public class GetLibraryItemsMeta - { - - [JsonProperty("Type")] - public List? Type { get; set; } - - [JsonProperty("FieldType")] - public List? FieldType { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetadata.cs deleted file mode 100644 index 762006b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetadata.cs +++ /dev/null @@ -1,456 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using NodaTime; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Unknown
- /// - /// - /// - /// - ///
- public class GetLibraryItemsMetadata - { - - /// - /// The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. - /// - [JsonProperty("ratingKey")] - public string RatingKey { get; set; } = default!; - - /// - /// The unique key for the media item. - /// - [JsonProperty("key")] - public string Key { get; set; } = default!; - - /// - /// The globally unique identifier for the media item. - /// - [JsonProperty("guid")] - public string Guid { get; set; } = default!; - - /// - /// A URL‐friendly version of the media title. - /// - [JsonProperty("slug")] - public string Slug { get; set; } = default!; - - /// - /// The studio that produced the media item. - /// - [JsonProperty("studio")] - public string? Studio { get; set; } - - [JsonProperty("type")] - public GetLibraryItemsType Type { get; set; } = default!; - - /// - /// The title of the media item. - /// - [JsonProperty("title")] - public string Title { get; set; } = default!; - - /// - /// The banner image URL for the media item. - /// - [JsonProperty("banner")] - public string Banner { get; set; } = default!; - - /// - /// The sort title used for ordering media items. - /// - [JsonProperty("titleSort")] - public string TitleSort { get; set; } = default!; - - /// - /// The content rating for the media item. - /// - [JsonProperty("contentRating")] - public string? ContentRating { get; set; } - - /// - /// A synopsis of the media item. - /// - [JsonProperty("summary")] - public string Summary { get; set; } = default!; - - /// - /// The critic rating for the media item. - /// - [JsonProperty("rating")] - public float Rating { get; set; } = default!; - - /// - /// The audience rating for the media item. - /// - [JsonProperty("audienceRating")] - public double AudienceRating { get; set; } = default!; - - /// - /// The release year of the media item. - /// - [JsonProperty("year")] - public int? Year { get; set; } - - /// - /// A brief tagline for the media item. - /// - [JsonProperty("tagline")] - public string Tagline { get; set; } = default!; - - /// - /// The thumbnail image URL for the media item. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The art image URL for the media item. - /// - [JsonProperty("art")] - public string Art { get; set; } = default!; - - /// - /// The theme URL for the media item. - /// - [JsonProperty("theme")] - public string Theme { get; set; } = default!; - - /// - /// The index position of the media item. - /// - [JsonProperty("index")] - public int Index { get; set; } = default!; - - /// - /// The number of leaf items (end nodes) under this media item. - /// - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - /// - /// The number of leaf items that have been viewed. - /// - [JsonProperty("viewedLeafCount")] - public int? ViewedLeafCount { get; set; } - - /// - /// The number of child items associated with this media item. - /// - [JsonProperty("childCount")] - public int ChildCount { get; set; } = default!; - - /// - /// The total number of seasons (for TV shows). - /// - [JsonProperty("seasonCount")] - public int SeasonCount { get; set; } = default!; - - /// - /// The duration of the media item in milliseconds. - /// - [JsonProperty("duration")] - public int Duration { get; set; } = default!; - - /// - /// The original release date of the media item. - /// - [JsonProperty("originallyAvailableAt")] - public LocalDate? OriginallyAvailableAt { get; set; } - - [JsonProperty("addedAt")] - public long AddedAt { get; set; } = default!; - - /// - /// Unix epoch datetime in seconds - /// - [JsonProperty("updatedAt")] - public long? UpdatedAt { get; set; } - - /// - /// The URL for the audience rating image. - /// - [JsonProperty("audienceRatingImage")] - public string? AudienceRatingImage { get; set; } - - /// - /// The source from which chapter data is derived. - /// - [JsonProperty("chapterSource")] - public string? ChapterSource { get; set; } - - /// - /// The primary extra key associated with this media item. - /// - [JsonProperty("primaryExtraKey")] - public string? PrimaryExtraKey { get; set; } - - /// - /// The original title of the media item (if different). - /// - [JsonProperty("originalTitle")] - public string? OriginalTitle { get; set; } - - /// - /// The rating key of the parent media item. - /// - [JsonProperty("parentRatingKey")] - public string? ParentRatingKey { get; set; } - - /// - /// The rating key of the grandparent media item. - /// - [JsonProperty("grandparentRatingKey")] - public string? GrandparentRatingKey { get; set; } - - /// - /// The GUID of the parent media item. - /// - [JsonProperty("parentGuid")] - public string? ParentGuid { get; set; } - - /// - /// The GUID of the grandparent media item. - /// - [JsonProperty("grandparentGuid")] - public string? GrandparentGuid { get; set; } - - /// - /// The slug for the grandparent media item. - /// - [JsonProperty("grandparentSlug")] - public string? GrandparentSlug { get; set; } - - /// - /// The key of the grandparent media item. - /// - [JsonProperty("grandparentKey")] - public string? GrandparentKey { get; set; } - - /// - /// The key of the parent media item. - /// - [JsonProperty("parentKey")] - public string? ParentKey { get; set; } - - /// - /// The title of the grandparent media item. - /// - [JsonProperty("grandparentTitle")] - public string? GrandparentTitle { get; set; } - - /// - /// The thumbnail URL for the grandparent media item. - /// - [JsonProperty("grandparentThumb")] - public string? GrandparentThumb { get; set; } - - /// - /// The theme URL for the grandparent media item. - /// - [JsonProperty("grandparentTheme")] - public string? GrandparentTheme { get; set; } - - /// - /// The art URL for the grandparent media item. - /// - [JsonProperty("grandparentArt")] - public string? GrandparentArt { get; set; } - - /// - /// The title of the parent media item. - /// - [JsonProperty("parentTitle")] - public string? ParentTitle { get; set; } - - /// - /// The index position of the parent media item. - /// - [JsonProperty("parentIndex")] - public int? ParentIndex { get; set; } - - /// - /// The thumbnail URL for the parent media item. - /// - [JsonProperty("parentThumb")] - public string? ParentThumb { get; set; } - - /// - /// The URL for the rating image. - /// - [JsonProperty("ratingImage")] - public string? RatingImage { get; set; } - - /// - /// The number of times this media item has been viewed. - /// - [JsonProperty("viewCount")] - public int? ViewCount { get; set; } - - /// - /// The current playback offset (in milliseconds). - /// - [JsonProperty("viewOffset")] - public int? ViewOffset { get; set; } - - /// - /// The number of times this media item has been skipped. - /// - [JsonProperty("skipCount")] - public int? SkipCount { get; set; } - - /// - /// A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. - /// - [JsonProperty("subtype")] - public string? Subtype { get; set; } - - /// - /// The Unix timestamp representing the last time the item was rated. - /// - [JsonProperty("lastRatedAt")] - public long? LastRatedAt { get; set; } - - /// - /// The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). - /// - [JsonProperty("createdAtAccuracy")] - public string? CreatedAtAccuracy { get; set; } - - /// - /// The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. - /// - [JsonProperty("createdAtTZOffset")] - public string? CreatedAtTZOffset { get; set; } - - /// - /// Unix timestamp for when the media item was last viewed. - /// - [JsonProperty("lastViewedAt")] - public int? LastViewedAt { get; set; } - - /// - /// The rating provided by a user for the item. This value is expressed as a decimal number. - /// - [JsonProperty("userRating")] - public float? UserRating { get; set; } - - [JsonProperty("Image")] - public List? Image { get; set; } - - [JsonProperty("UltraBlurColors")] - public GetLibraryItemsUltraBlurColors? UltraBlurColors { get; set; } - - [JsonProperty("Guid")] - public List? Guids { get; set; } - - /// - /// The identifier for the library section. - /// - [JsonProperty("librarySectionID")] - public long? LibrarySectionID { get; set; } - - /// - /// The title of the library section. - /// - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - /// - /// The key corresponding to the library section. - /// - [JsonProperty("librarySectionKey")] - public string? LibrarySectionKey { get; set; } - - /// - /// Setting that indicates the episode ordering for the show.
- /// - /// - /// Options:
- /// - None = Library default
- /// - tmdbAiring = The Movie Database (Aired)
- /// - aired = TheTVDB (Aired)
- /// - dvd = TheTVDB (DVD)
- /// - absolute = TheTVDB (Absolute)
- /// - ///
- ///
- [JsonProperty("showOrdering")] - public ShowOrdering? ShowOrdering { get; set; } - - /// - /// Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
- /// - /// - /// - /// - ///
- [JsonProperty("flattenSeasons")] - public FlattenSeasons? FlattenSeasons { get; set; } - - /// - /// Indicates whether child items should be skipped. - /// - [JsonProperty("skipChildren")] - public bool? SkipChildren { get; set; } - - [JsonProperty("Media")] - public List? Media { get; set; } - - [JsonProperty("Genre")] - public List? Genre { get; set; } - - [JsonProperty("Country")] - public List? Country { get; set; } - - [JsonProperty("Director")] - public List? Director { get; set; } - - [JsonProperty("Writer")] - public List? Writer { get; set; } - - [JsonProperty("Producer")] - public List? Producer { get; set; } - - [JsonProperty("Collection")] - public List? Collection { get; set; } - - [JsonProperty("Role")] - public List? Role { get; set; } - - [JsonProperty("Rating")] - public List? Ratings { get; set; } - - [JsonProperty("Similar")] - public List? Similar { get; set; } - - [JsonProperty("Location")] - public List? Location { get; set; } - - [JsonProperty("Chapter")] - public List? Chapter { get; set; } - - [JsonProperty("Marker")] - public List? Marker { get; set; } - - [JsonProperty("Extras")] - public Extras? Extras { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOperator.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOperator.cs deleted file mode 100644 index 017ed04..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOperator.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsOperator - { - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOptimizedForStreaming.cs deleted file mode 100644 index 438a2c3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOptimizedForStreaming.cs +++ /dev/null @@ -1,203 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using Newtonsoft.Json.Linq; - using System; - using System.Collections.Generic; - using System.Numerics; - using System.Reflection; - - public class GetLibraryItemsOptimizedForStreamingType - { - private GetLibraryItemsOptimizedForStreamingType(string value) { Value = value; } - - public string Value { get; private set; } - - public static GetLibraryItemsOptimizedForStreamingType OptimizedForStreaming1 { get { return new GetLibraryItemsOptimizedForStreamingType("optimizedForStreaming_1"); } } - - public static GetLibraryItemsOptimizedForStreamingType Boolean { get { return new GetLibraryItemsOptimizedForStreamingType("boolean"); } } - - public static GetLibraryItemsOptimizedForStreamingType Null { get { return new GetLibraryItemsOptimizedForStreamingType("null"); } } - - public override string ToString() { return Value; } - public static implicit operator String(GetLibraryItemsOptimizedForStreamingType v) { return v.Value; } - public static GetLibraryItemsOptimizedForStreamingType FromString(string v) { - switch(v) { - case "optimizedForStreaming_1": return OptimizedForStreaming1; - case "boolean": return Boolean; - case "null": return Null; - default: throw new ArgumentException("Invalid value for GetLibraryItemsOptimizedForStreamingType"); - } - } - public override bool Equals(object? obj) - { - if (obj == null || GetType() != obj.GetType()) - { - return false; - } - return Value.Equals(((GetLibraryItemsOptimizedForStreamingType)obj).Value); - } - - public override int GetHashCode() - { - return Value.GetHashCode(); - } - } - - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonConverter(typeof(GetLibraryItemsOptimizedForStreaming.GetLibraryItemsOptimizedForStreamingConverter))] - public class GetLibraryItemsOptimizedForStreaming - { - public GetLibraryItemsOptimizedForStreaming(GetLibraryItemsOptimizedForStreamingType type) - { - Type = type; - } - - [SpeakeasyMetadata("form:explode=true")] - public OptimizedForStreaming1? OptimizedForStreaming1 { get; set; } - - [SpeakeasyMetadata("form:explode=true")] - public bool? Boolean { get; set; } - - public GetLibraryItemsOptimizedForStreamingType Type { get; set; } - public static GetLibraryItemsOptimizedForStreaming CreateOptimizedForStreaming1(OptimizedForStreaming1 optimizedForStreaming1) - { - GetLibraryItemsOptimizedForStreamingType typ = GetLibraryItemsOptimizedForStreamingType.OptimizedForStreaming1; - - GetLibraryItemsOptimizedForStreaming res = new GetLibraryItemsOptimizedForStreaming(typ); - res.OptimizedForStreaming1 = optimizedForStreaming1; - return res; - } - public static GetLibraryItemsOptimizedForStreaming CreateBoolean(bool boolean) - { - GetLibraryItemsOptimizedForStreamingType typ = GetLibraryItemsOptimizedForStreamingType.Boolean; - - GetLibraryItemsOptimizedForStreaming res = new GetLibraryItemsOptimizedForStreaming(typ); - res.Boolean = boolean; - return res; - } - - public static GetLibraryItemsOptimizedForStreaming CreateNull() - { - GetLibraryItemsOptimizedForStreamingType typ = GetLibraryItemsOptimizedForStreamingType.Null; - return new GetLibraryItemsOptimizedForStreaming(typ); - } - - public class GetLibraryItemsOptimizedForStreamingConverter : JsonConverter - { - - public override bool CanConvert(System.Type objectType) => objectType == typeof(GetLibraryItemsOptimizedForStreaming); - - public override bool CanRead => true; - - public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) - { - var json = JRaw.Create(reader).ToString(); - if (json == "null") - { - return null; - } - - var fallbackCandidates = new List<(System.Type, object, string)>(); - - try - { - return new GetLibraryItemsOptimizedForStreaming(GetLibraryItemsOptimizedForStreamingType.OptimizedForStreaming1) - { - OptimizedForStreaming1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) - }; - } - catch (ResponseBodyDeserializer.MissingMemberException) - { - fallbackCandidates.Add((typeof(OptimizedForStreaming1), new GetLibraryItemsOptimizedForStreaming(GetLibraryItemsOptimizedForStreamingType.OptimizedForStreaming1), "OptimizedForStreaming1")); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next option - } - catch (Exception) - { - throw; - } - - try - { - var converted = Convert.ToBoolean(json); - return new GetLibraryItemsOptimizedForStreaming(GetLibraryItemsOptimizedForStreamingType.Boolean) - { - Boolean = converted - }; - } - catch (System.FormatException) - { - // try next option - } - - if (fallbackCandidates.Count > 0) - { - fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); - foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) - { - try - { - return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next fallback option - } - catch (Exception) - { - throw; - } - } - } - - throw new InvalidOperationException("Could not deserialize into any supported types."); - } - - public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) - { - if (value == null) { - writer.WriteRawValue("null"); - return; - } - - GetLibraryItemsOptimizedForStreaming res = (GetLibraryItemsOptimizedForStreaming)value; - if (GetLibraryItemsOptimizedForStreamingType.FromString(res.Type).Equals(GetLibraryItemsOptimizedForStreamingType.Null)) - { - writer.WriteRawValue("null"); - return; - } - - if (res.OptimizedForStreaming1 != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.OptimizedForStreaming1)); - return; - } - - if (res.Boolean != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); - return; - } - } - - } - - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOptimizedForStreaming1.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOptimizedForStreaming1.cs deleted file mode 100644 index 92f3d7e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOptimizedForStreaming1.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum GetLibraryItemsOptimizedForStreaming1 - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsPart.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsPart.cs deleted file mode 100644 index d538a83..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsPart.cs +++ /dev/null @@ -1,102 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsPart - { - - /// - /// Indicates if the part is accessible. - /// - [JsonProperty("accessible")] - public bool? Accessible { get; set; } - - /// - /// Indicates if the part exists. - /// - [JsonProperty("exists")] - public bool? Exists { get; set; } - - /// - /// Unique part identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Key to access this part. - /// - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("indexes")] - public string? Indexes { get; set; } - - /// - /// Duration of the part in milliseconds. - /// - [JsonProperty("duration")] - public int? Duration { get; set; } - - /// - /// File path for the part. - /// - [JsonProperty("file")] - public string? File { get; set; } - - /// - /// File size in bytes. - /// - [JsonProperty("size")] - public long? Size { get; set; } - - [JsonProperty("packetLength")] - public int? PacketLength { get; set; } - - /// - /// Container format of the part. - /// - [JsonProperty("container")] - public string? Container { get; set; } - - /// - /// Video profile for the part. - /// - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - /// - /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). - /// - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - [JsonProperty("has64bitOffsets")] - public bool? Has64bitOffsets { get; set; } - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
- /// - /// - /// - /// - ///
- [JsonProperty("optimizedForStreaming")] - public GetLibraryItemsLibraryOptimizedForStreaming? OptimizedForStreaming { get; set; } - - [JsonProperty("hasThumbnail")] - public GetLibraryItemsHasThumbnail? HasThumbnail { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetLibraryItemsHasThumbnail.False; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsProducer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsProducer.cs deleted file mode 100644 index eab80b7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsProducer.cs +++ /dev/null @@ -1,54 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsProducer - { - - /// - /// The unique role identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// The filter string for the role. - /// - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - /// - /// The actor's name. - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// A key associated with the actor tag. - /// - [JsonProperty("tagKey")] - public string TagKey { get; set; } = default!; - - /// - /// The character name or role. - /// - [JsonProperty("role")] - public string? Role { get; set; } - - /// - /// URL for the role thumbnail image. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsQueryParamIncludeMeta.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsQueryParamIncludeMeta.cs deleted file mode 100644 index 6e2fb98..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsQueryParamIncludeMeta.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Adds the Meta object to the response
- /// - /// - /// - /// - ///
- public enum GetLibraryItemsQueryParamIncludeMeta - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsQueryParamType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsQueryParamType.cs deleted file mode 100644 index e1520c8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsQueryParamType.cs +++ /dev/null @@ -1,100 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetLibraryItemsQueryParamType : IEquatable - { - public static readonly GetLibraryItemsQueryParamType Movie = new GetLibraryItemsQueryParamType(1); - public static readonly GetLibraryItemsQueryParamType TvShow = new GetLibraryItemsQueryParamType(2); - public static readonly GetLibraryItemsQueryParamType Season = new GetLibraryItemsQueryParamType(3); - public static readonly GetLibraryItemsQueryParamType Episode = new GetLibraryItemsQueryParamType(4); - public static readonly GetLibraryItemsQueryParamType Artist = new GetLibraryItemsQueryParamType(5); - public static readonly GetLibraryItemsQueryParamType Album = new GetLibraryItemsQueryParamType(6); - public static readonly GetLibraryItemsQueryParamType Track = new GetLibraryItemsQueryParamType(7); - public static readonly GetLibraryItemsQueryParamType PhotoAlbum = new GetLibraryItemsQueryParamType(8); - public static readonly GetLibraryItemsQueryParamType Photo = new GetLibraryItemsQueryParamType(9); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - [1] = Movie, - [2] = TvShow, - [3] = Season, - [4] = Episode, - [5] = Artist, - [6] = Album, - [7] = Track, - [8] = PhotoAlbum, - [9] = Photo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetLibraryItemsQueryParamType(long value) - { - Value = value; - } - - public long Value { get; } - - public static GetLibraryItemsQueryParamType Of(long value) - { - return _values.GetOrAdd(value, _ => new GetLibraryItemsQueryParamType(value)); - } - - public static implicit operator GetLibraryItemsQueryParamType(long value) => Of(value); - public static implicit operator long(GetLibraryItemsQueryParamType getlibraryitemsqueryparamtype) => getlibraryitemsqueryparamtype.Value; - - public static GetLibraryItemsQueryParamType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetLibraryItemsQueryParamType); - - public bool Equals(GetLibraryItemsQueryParamType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsRequest.cs index 5d7ce89..86c5557 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsRequest.cs @@ -9,91 +9,82 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; public class GetLibraryItemsRequest { /// - /// A key representing a specific tag within the section. + /// Indicates the client accepts the indicated media types /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=tag")] - public Tag Tag { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; /// - /// Adds the Guids object to the response
- /// - /// - /// - /// + /// An opaque identifier unique to the client ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeGuids")] - public IncludeGuids? IncludeGuids { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeGuids.Disable; + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
+ /// The name of the client product ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] - public GetLibraryItemsQueryParamType Type { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } /// - /// The unique key of the Plex library.
- /// - /// - /// Note: This is unique in the context of the Plex server.
- /// - ///
+ /// The version of the client application ///
- [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")] - public int SectionKey { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } /// - /// Adds the Meta object to the response
- /// - /// - /// - /// + /// The platform of the client ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeMeta")] - public GetLibraryItemsQueryParamIncludeMeta? IncludeMeta { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetLibraryItemsQueryParamIncludeMeta.Disable; + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } /// - /// The index of the first item to return. If not specified, the first item will be returned.
- /// - /// - /// If the number of items exceeds the limit, the response will be paginated.
- /// By default this is 0
- /// - ///
+ /// The version of the platform ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Start")] - public int? XPlexContainerStart { get; set; } = 0; + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } /// - /// The number of items to return. If not specified, all items will be returned.
- /// - /// - /// If the number of items exceeds the limit, the response will be paginated.
- /// By default this is 50
- /// - ///
+ /// A relatively friendly name for the client device ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Size")] - public int? XPlexContainerSize { get; set; } = 50; + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// This is a complex query built of several parameters. See API Info section for information on building media queries + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")] + public MediaQuery? MediaQuery { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsResponse.cs index f1c898b..81e5ee1 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsResponse.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsResponse.cs @@ -9,9 +9,10 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; using System; + using System.Collections.Generic; using System.Net.Http; public class GetLibraryItemsResponse @@ -33,8 +34,10 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public HttpResponseMessage RawResponse { get; set; } = default!; /// - /// The contents of the library by section and tag + /// OK /// - public GetLibraryItemsResponseBody? Object { get; set; } + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsResponseBody.cs deleted file mode 100644 index b9b6f2f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The contents of the library by section and tag - /// - public class GetLibraryItemsResponseBody - { - - [JsonProperty("MediaContainer")] - public GetLibraryItemsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsRole.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsRole.cs deleted file mode 100644 index 5844d5c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsRole.cs +++ /dev/null @@ -1,47 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsRole - { - - /// - /// The unique identifier for the role.
- /// - /// - /// NOTE: This is different for each Plex server and is not globally unique.
- /// - ///
- ///
- [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The display tag for the actor (typically the actor's name). - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// The role played by the actor in the media item. - /// - [JsonProperty("role")] - public string? Role { get; set; } - - /// - /// The absolute URL of the thumbnail image for the actor. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsSimilar.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsSimilar.cs deleted file mode 100644 index b62c433..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsSimilar.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsSimilar - { - - /// - /// The unique similar item identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// The filter string for similar items. - /// - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - /// - /// The tag or title of the similar content. - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsSort.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsSort.cs deleted file mode 100644 index da935d6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsSort.cs +++ /dev/null @@ -1,57 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsSort - { - - [JsonProperty("default")] - public string? Default { get; set; } - - [JsonProperty("active")] - public bool? Active { get; set; } - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- [JsonProperty("activeDirection")] - public GetLibraryItemsActiveDirection? ActiveDirection { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetLibraryItemsActiveDirection.Ascending; - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- [JsonProperty("defaultDirection")] - public GetLibraryItemsDefaultDirection? DefaultDirection { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetLibraryItemsDefaultDirection.Ascending; - - [JsonProperty("descKey")] - public string? DescKey { get; set; } - - [JsonProperty("firstCharacterKey")] - public string? FirstCharacterKey { get; set; } - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsType.cs deleted file mode 100644 index bb317b9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsType.cs +++ /dev/null @@ -1,98 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media content in the Plex library. This can represent videos, music, or photos.
- /// - /// - /// - /// - ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetLibraryItemsType : IEquatable - { - public static readonly GetLibraryItemsType Movie = new GetLibraryItemsType("movie"); - public static readonly GetLibraryItemsType TvShow = new GetLibraryItemsType("show"); - public static readonly GetLibraryItemsType Season = new GetLibraryItemsType("season"); - public static readonly GetLibraryItemsType Episode = new GetLibraryItemsType("episode"); - public static readonly GetLibraryItemsType Artist = new GetLibraryItemsType("artist"); - public static readonly GetLibraryItemsType Album = new GetLibraryItemsType("album"); - public static readonly GetLibraryItemsType Track = new GetLibraryItemsType("track"); - public static readonly GetLibraryItemsType PhotoAlbum = new GetLibraryItemsType("photoalbum"); - public static readonly GetLibraryItemsType Photo = new GetLibraryItemsType("photo"); - public static readonly GetLibraryItemsType Collection = new GetLibraryItemsType("collection"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["movie"] = Movie, - ["show"] = TvShow, - ["season"] = Season, - ["episode"] = Episode, - ["artist"] = Artist, - ["album"] = Album, - ["track"] = Track, - ["photoalbum"] = PhotoAlbum, - ["photo"] = Photo, - ["collection"] = Collection - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetLibraryItemsType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetLibraryItemsType Of(string value) - { - return _values.GetOrAdd(value, _ => new GetLibraryItemsType(value)); - } - - public static implicit operator GetLibraryItemsType(string value) => Of(value); - public static implicit operator string(GetLibraryItemsType getlibraryitemstype) => getlibraryitemstype.Value; - - public static GetLibraryItemsType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetLibraryItemsType); - - public bool Equals(GetLibraryItemsType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsUltraBlurColors.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsUltraBlurColors.cs deleted file mode 100644 index 491eeba..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsUltraBlurColors.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsUltraBlurColors - { - - [JsonProperty("topLeft")] - public string TopLeft { get; set; } = default!; - - [JsonProperty("topRight")] - public string TopRight { get; set; } = default!; - - [JsonProperty("bottomRight")] - public string BottomRight { get; set; } = default!; - - [JsonProperty("bottomLeft")] - public string BottomLeft { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsWriter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsWriter.cs deleted file mode 100644 index f27a590..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsWriter.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibraryItemsWriter - { - - /// - /// Unique identifier for the writer. - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The role of Writer - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// The absolute URL of the thumbnail image for the writer. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryMatchesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryMatchesRequest.cs new file mode 100644 index 0000000..b5c4b09 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryMatchesRequest.cs @@ -0,0 +1,159 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetLibraryMatchesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The metadata type to filter by + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long? Type { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeFullMetadata")] + public BoolInt? IncludeFullMetadata { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeAncestorMetadata")] + public BoolInt? IncludeAncestorMetadata { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeAlternateMetadataSources")] + public BoolInt? IncludeAlternateMetadataSources { get; set; } + + /// + /// Used for movies, shows, artists, albums, and tracks. Allowed for various URI schemes, to be defined. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=guid")] + public string? Guid { get; set; } + + /// + /// The title to filter by or assign + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=title")] + public string? Title { get; set; } + + /// + /// Used for movies shows, and albums. Optional. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=year")] + public long? Year { get; set; } + + /// + /// Used for movies, episodes, and tracks. The full path to the media file, used for "cloud-scanning" an item. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=path")] + public string? Path { get; set; } + + /// + /// Used for episodes and tracks. The title of the show/artist. Required if `path` isn't passed. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=grandparentTitle")] + public string? GrandparentTitle { get; set; } + + /// + /// Used for episodes. The year of the show. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=grandparentYear")] + public long? GrandparentYear { get; set; } + + /// + /// Used for episodes and tracks. The season/album number. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=parentIndex")] + public long? ParentIndex { get; set; } + + /// + /// Used for episodes and tracks. The episode/tracks number in the season/album. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=index")] + public long? Index { get; set; } + + /// + /// Used for episodes. In the format `YYYY-MM-DD`. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=originallyAvailableAt")] + public string? OriginallyAvailableAt { get; set; } + + /// + /// Used for albums and tracks. The artist name for albums or the album name for tracks. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=parentTitle")] + public string? ParentTitle { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryMatchesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryMatchesResponse.cs new file mode 100644 index 0000000..cc9562d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryMatchesResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetLibraryMatchesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllActiveDirection.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllActiveDirection.cs deleted file mode 100644 index 77341ca..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllActiveDirection.cs +++ /dev/null @@ -1,64 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- public enum GetLibrarySectionsAllActiveDirection - { - [JsonProperty("asc")] - Ascending, - [JsonProperty("desc")] - Descending, - } - - public static class GetLibrarySectionsAllActiveDirectionExtension - { - public static string Value(this GetLibrarySectionsAllActiveDirection value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetLibrarySectionsAllActiveDirection ToEnum(this string value) - { - foreach(var field in typeof(GetLibrarySectionsAllActiveDirection).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 GetLibrarySectionsAllActiveDirection) - { - return (GetLibrarySectionsAllActiveDirection)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetLibrarySectionsAllActiveDirection"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllCollection.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllCollection.cs deleted file mode 100644 index ef8b79a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllCollection.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllCollection - { - - /// - /// The user-made collection this media item belongs to - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllCountry.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllCountry.cs deleted file mode 100644 index 928a163..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllCountry.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllCountry - { - - /// - /// The country of origin of this media item - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllDefaultDirection.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllDefaultDirection.cs deleted file mode 100644 index 8694287..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllDefaultDirection.cs +++ /dev/null @@ -1,64 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- public enum GetLibrarySectionsAllDefaultDirection - { - [JsonProperty("asc")] - Ascending, - [JsonProperty("desc")] - Descending, - } - - public static class GetLibrarySectionsAllDefaultDirectionExtension - { - public static string Value(this GetLibrarySectionsAllDefaultDirection value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetLibrarySectionsAllDefaultDirection ToEnum(this string value) - { - foreach(var field in typeof(GetLibrarySectionsAllDefaultDirection).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 GetLibrarySectionsAllDefaultDirection) - { - return (GetLibrarySectionsAllDefaultDirection)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetLibrarySectionsAllDefaultDirection"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllDirector.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllDirector.cs deleted file mode 100644 index 67e9c20..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllDirector.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllDirector - { - - /// - /// The role of Director - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllField.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllField.cs deleted file mode 100644 index 6d59025..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllField.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllField - { - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("subType")] - public string? SubType { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllFieldType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllFieldType.cs deleted file mode 100644 index f26f992..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllFieldType.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibrarySectionsAllFieldType - { - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("Operator")] - public List Operator { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllFilter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllFilter.cs deleted file mode 100644 index 1872115..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllFilter.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllFilter - { - - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - [JsonProperty("filterType")] - public string FilterType { get; set; } = default!; - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("advanced")] - public bool? Advanced { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllGenre.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllGenre.cs deleted file mode 100644 index 4116d40..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllGenre.cs +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllGenre - { - - /// - /// The genre name of this media-item
- /// - /// - /// - /// - ///
- [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllGuids.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllGuids.cs deleted file mode 100644 index 8cd5a1d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllGuids.cs +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllGuids - { - - /// - /// The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
- /// - /// - /// - /// - ///
- [JsonProperty("id")] - public string Id { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllHasThumbnail.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllHasThumbnail.cs deleted file mode 100644 index 6f404e3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllHasThumbnail.cs +++ /dev/null @@ -1,60 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// Indicates if the part has a thumbnail. - /// - public enum GetLibrarySectionsAllHasThumbnail - { - [JsonProperty("0")] - False, - [JsonProperty("1")] - True, - } - - public static class GetLibrarySectionsAllHasThumbnailExtension - { - public static string Value(this GetLibrarySectionsAllHasThumbnail value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetLibrarySectionsAllHasThumbnail ToEnum(this string value) - { - foreach(var field in typeof(GetLibrarySectionsAllHasThumbnail).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 GetLibrarySectionsAllHasThumbnail) - { - return (GetLibrarySectionsAllHasThumbnail)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetLibrarySectionsAllHasThumbnail"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllImage.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllImage.cs deleted file mode 100644 index 77305a7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllImage.cs +++ /dev/null @@ -1,32 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetLibrarySectionsAllImage - { - - [JsonProperty("alt")] - public string Alt { get; set; } = default!; - - [JsonProperty("type")] - public GetLibrarySectionsAllLibraryResponseType Type { get; set; } = default!; - - [JsonProperty("url")] - public string Url { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryOptimizedForStreaming.cs deleted file mode 100644 index e3f1acf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryOptimizedForStreaming.cs +++ /dev/null @@ -1,203 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using Newtonsoft.Json.Linq; - using System; - using System.Collections.Generic; - using System.Numerics; - using System.Reflection; - - public class GetLibrarySectionsAllLibraryOptimizedForStreamingType - { - private GetLibrarySectionsAllLibraryOptimizedForStreamingType(string value) { Value = value; } - - public string Value { get; private set; } - - public static GetLibrarySectionsAllLibraryOptimizedForStreamingType GetLibrarySectionsAllOptimizedForStreamingLibrary1 { get { return new GetLibrarySectionsAllLibraryOptimizedForStreamingType("get-library-sections-all_optimizedForStreaming_Library_1"); } } - - public static GetLibrarySectionsAllLibraryOptimizedForStreamingType Boolean { get { return new GetLibrarySectionsAllLibraryOptimizedForStreamingType("boolean"); } } - - public static GetLibrarySectionsAllLibraryOptimizedForStreamingType Null { get { return new GetLibrarySectionsAllLibraryOptimizedForStreamingType("null"); } } - - public override string ToString() { return Value; } - public static implicit operator String(GetLibrarySectionsAllLibraryOptimizedForStreamingType v) { return v.Value; } - public static GetLibrarySectionsAllLibraryOptimizedForStreamingType FromString(string v) { - switch(v) { - case "get-library-sections-all_optimizedForStreaming_Library_1": return GetLibrarySectionsAllOptimizedForStreamingLibrary1; - case "boolean": return Boolean; - case "null": return Null; - default: throw new ArgumentException("Invalid value for GetLibrarySectionsAllLibraryOptimizedForStreamingType"); - } - } - public override bool Equals(object? obj) - { - if (obj == null || GetType() != obj.GetType()) - { - return false; - } - return Value.Equals(((GetLibrarySectionsAllLibraryOptimizedForStreamingType)obj).Value); - } - - public override int GetHashCode() - { - return Value.GetHashCode(); - } - } - - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonConverter(typeof(GetLibrarySectionsAllLibraryOptimizedForStreaming.GetLibrarySectionsAllLibraryOptimizedForStreamingConverter))] - public class GetLibrarySectionsAllLibraryOptimizedForStreaming - { - public GetLibrarySectionsAllLibraryOptimizedForStreaming(GetLibrarySectionsAllLibraryOptimizedForStreamingType type) - { - Type = type; - } - - [SpeakeasyMetadata("form:explode=true")] - public GetLibrarySectionsAllOptimizedForStreamingLibrary1? GetLibrarySectionsAllOptimizedForStreamingLibrary1 { get; set; } - - [SpeakeasyMetadata("form:explode=true")] - public bool? Boolean { get; set; } - - public GetLibrarySectionsAllLibraryOptimizedForStreamingType Type { get; set; } - public static GetLibrarySectionsAllLibraryOptimizedForStreaming CreateGetLibrarySectionsAllOptimizedForStreamingLibrary1(GetLibrarySectionsAllOptimizedForStreamingLibrary1 getLibrarySectionsAllOptimizedForStreamingLibrary1) - { - GetLibrarySectionsAllLibraryOptimizedForStreamingType typ = GetLibrarySectionsAllLibraryOptimizedForStreamingType.GetLibrarySectionsAllOptimizedForStreamingLibrary1; - - GetLibrarySectionsAllLibraryOptimizedForStreaming res = new GetLibrarySectionsAllLibraryOptimizedForStreaming(typ); - res.GetLibrarySectionsAllOptimizedForStreamingLibrary1 = getLibrarySectionsAllOptimizedForStreamingLibrary1; - return res; - } - public static GetLibrarySectionsAllLibraryOptimizedForStreaming CreateBoolean(bool boolean) - { - GetLibrarySectionsAllLibraryOptimizedForStreamingType typ = GetLibrarySectionsAllLibraryOptimizedForStreamingType.Boolean; - - GetLibrarySectionsAllLibraryOptimizedForStreaming res = new GetLibrarySectionsAllLibraryOptimizedForStreaming(typ); - res.Boolean = boolean; - return res; - } - - public static GetLibrarySectionsAllLibraryOptimizedForStreaming CreateNull() - { - GetLibrarySectionsAllLibraryOptimizedForStreamingType typ = GetLibrarySectionsAllLibraryOptimizedForStreamingType.Null; - return new GetLibrarySectionsAllLibraryOptimizedForStreaming(typ); - } - - public class GetLibrarySectionsAllLibraryOptimizedForStreamingConverter : JsonConverter - { - - public override bool CanConvert(System.Type objectType) => objectType == typeof(GetLibrarySectionsAllLibraryOptimizedForStreaming); - - public override bool CanRead => true; - - public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) - { - var json = JRaw.Create(reader).ToString(); - if (json == "null") - { - return null; - } - - var fallbackCandidates = new List<(System.Type, object, string)>(); - - try - { - return new GetLibrarySectionsAllLibraryOptimizedForStreaming(GetLibrarySectionsAllLibraryOptimizedForStreamingType.GetLibrarySectionsAllOptimizedForStreamingLibrary1) - { - GetLibrarySectionsAllOptimizedForStreamingLibrary1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) - }; - } - catch (ResponseBodyDeserializer.MissingMemberException) - { - fallbackCandidates.Add((typeof(GetLibrarySectionsAllOptimizedForStreamingLibrary1), new GetLibrarySectionsAllLibraryOptimizedForStreaming(GetLibrarySectionsAllLibraryOptimizedForStreamingType.GetLibrarySectionsAllOptimizedForStreamingLibrary1), "GetLibrarySectionsAllOptimizedForStreamingLibrary1")); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next option - } - catch (Exception) - { - throw; - } - - try - { - var converted = Convert.ToBoolean(json); - return new GetLibrarySectionsAllLibraryOptimizedForStreaming(GetLibrarySectionsAllLibraryOptimizedForStreamingType.Boolean) - { - Boolean = converted - }; - } - catch (System.FormatException) - { - // try next option - } - - if (fallbackCandidates.Count > 0) - { - fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); - foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) - { - try - { - return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next fallback option - } - catch (Exception) - { - throw; - } - } - } - - throw new InvalidOperationException("Could not deserialize into any supported types."); - } - - public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) - { - if (value == null) { - writer.WriteRawValue("null"); - return; - } - - GetLibrarySectionsAllLibraryOptimizedForStreaming res = (GetLibrarySectionsAllLibraryOptimizedForStreaming)value; - if (GetLibrarySectionsAllLibraryOptimizedForStreamingType.FromString(res.Type).Equals(GetLibrarySectionsAllLibraryOptimizedForStreamingType.Null)) - { - writer.WriteRawValue("null"); - return; - } - - if (res.GetLibrarySectionsAllOptimizedForStreamingLibrary1 != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.GetLibrarySectionsAllOptimizedForStreamingLibrary1)); - return; - } - - if (res.Boolean != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); - return; - } - } - - } - - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryResponseType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryResponseType.cs deleted file mode 100644 index b425831..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryResponseType.cs +++ /dev/null @@ -1,79 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - [JsonConverter(typeof(OpenEnumConverter))] - public class GetLibrarySectionsAllLibraryResponseType : IEquatable - { - public static readonly GetLibrarySectionsAllLibraryResponseType CoverPoster = new GetLibrarySectionsAllLibraryResponseType("coverPoster"); - public static readonly GetLibrarySectionsAllLibraryResponseType Background = new GetLibrarySectionsAllLibraryResponseType("background"); - public static readonly GetLibrarySectionsAllLibraryResponseType Snapshot = new GetLibrarySectionsAllLibraryResponseType("snapshot"); - public static readonly GetLibrarySectionsAllLibraryResponseType ClearLogo = new GetLibrarySectionsAllLibraryResponseType("clearLogo"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["coverPoster"] = CoverPoster, - ["background"] = Background, - ["snapshot"] = Snapshot, - ["clearLogo"] = ClearLogo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetLibrarySectionsAllLibraryResponseType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetLibrarySectionsAllLibraryResponseType Of(string value) - { - return _values.GetOrAdd(value, _ => new GetLibrarySectionsAllLibraryResponseType(value)); - } - - public static implicit operator GetLibrarySectionsAllLibraryResponseType(string value) => Of(value); - public static implicit operator string(GetLibrarySectionsAllLibraryResponseType getlibrarysectionsalllibraryresponsetype) => getlibrarysectionsalllibraryresponsetype.Value; - - public static GetLibrarySectionsAllLibraryResponseType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetLibrarySectionsAllLibraryResponseType); - - public bool Equals(GetLibrarySectionsAllLibraryResponseType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryType.cs deleted file mode 100644 index fff0d2a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllLibraryType.cs +++ /dev/null @@ -1,98 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media content in the Plex library. This can represent videos, music, or photos.
- /// - /// - /// - /// - ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetLibrarySectionsAllLibraryType : IEquatable - { - public static readonly GetLibrarySectionsAllLibraryType Movie = new GetLibrarySectionsAllLibraryType("movie"); - public static readonly GetLibrarySectionsAllLibraryType TvShow = new GetLibrarySectionsAllLibraryType("show"); - public static readonly GetLibrarySectionsAllLibraryType Season = new GetLibrarySectionsAllLibraryType("season"); - public static readonly GetLibrarySectionsAllLibraryType Episode = new GetLibrarySectionsAllLibraryType("episode"); - public static readonly GetLibrarySectionsAllLibraryType Artist = new GetLibrarySectionsAllLibraryType("artist"); - public static readonly GetLibrarySectionsAllLibraryType Album = new GetLibrarySectionsAllLibraryType("album"); - public static readonly GetLibrarySectionsAllLibraryType Track = new GetLibrarySectionsAllLibraryType("track"); - public static readonly GetLibrarySectionsAllLibraryType PhotoAlbum = new GetLibrarySectionsAllLibraryType("photoalbum"); - public static readonly GetLibrarySectionsAllLibraryType Photo = new GetLibrarySectionsAllLibraryType("photo"); - public static readonly GetLibrarySectionsAllLibraryType Collection = new GetLibrarySectionsAllLibraryType("collection"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["movie"] = Movie, - ["show"] = TvShow, - ["season"] = Season, - ["episode"] = Episode, - ["artist"] = Artist, - ["album"] = Album, - ["track"] = Track, - ["photoalbum"] = PhotoAlbum, - ["photo"] = Photo, - ["collection"] = Collection - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetLibrarySectionsAllLibraryType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetLibrarySectionsAllLibraryType Of(string value) - { - return _values.GetOrAdd(value, _ => new GetLibrarySectionsAllLibraryType(value)); - } - - public static implicit operator GetLibrarySectionsAllLibraryType(string value) => Of(value); - public static implicit operator string(GetLibrarySectionsAllLibraryType getlibrarysectionsalllibrarytype) => getlibrarysectionsalllibrarytype.Value; - - public static GetLibrarySectionsAllLibraryType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetLibrarySectionsAllLibraryType); - - public bool Equals(GetLibrarySectionsAllLibraryType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMedia.cs deleted file mode 100644 index b7d4822..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMedia.cs +++ /dev/null @@ -1,133 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibrarySectionsAllMedia - { - - /// - /// Unique media identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Duration of the media in milliseconds. - /// - [JsonProperty("duration")] - public int? Duration { get; set; } - - /// - /// Bitrate in bits per second. - /// - [JsonProperty("bitrate")] - public int? Bitrate { get; set; } - - /// - /// Video width in pixels. - /// - [JsonProperty("width")] - public int? Width { get; set; } - - /// - /// Video height in pixels. - /// - [JsonProperty("height")] - public int? Height { get; set; } - - /// - /// Aspect ratio of the video. - /// - [JsonProperty("aspectRatio")] - public float? AspectRatio { get; set; } - - /// - /// Number of audio channels. - /// - [JsonProperty("audioChannels")] - public int? AudioChannels { get; set; } - - [JsonProperty("displayOffset")] - public int? DisplayOffset { get; set; } - - /// - /// Audio codec used. - /// - [JsonProperty("audioCodec")] - public string? AudioCodec { get; set; } - - /// - /// Video codec used. - /// - [JsonProperty("videoCodec")] - public string? VideoCodec { get; set; } - - /// - /// Video resolution (e.g., 4k). - /// - [JsonProperty("videoResolution")] - public string? VideoResolution { get; set; } - - /// - /// File container type. - /// - [JsonProperty("container")] - public string? Container { get; set; } - - /// - /// Frame rate of the video. Values found include NTSC, PAL, 24p
- /// - /// - /// - /// - ///
- [JsonProperty("videoFrameRate")] - public string? VideoFrameRate { get; set; } - - /// - /// Video profile (e.g., main 10). - /// - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - /// - /// Indicates whether voice activity is detected. - /// - [JsonProperty("hasVoiceActivity")] - public bool? HasVoiceActivity { get; set; } - - /// - /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). - /// - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonProperty("optimizedForStreaming")] - public GetLibrarySectionsAllOptimizedForStreaming? OptimizedForStreaming { get; set; } - - [JsonProperty("has64bitOffsets")] - public bool? Has64bitOffsets { get; set; } - - /// - /// An array of parts for this media item. - /// - [JsonProperty("Part")] - public List? Part { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMediaContainer.cs deleted file mode 100644 index 9f60929..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMediaContainer.cs +++ /dev/null @@ -1,138 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibrarySectionsAllMediaContainer - { - - /// - /// Number of media items returned in this response. - /// - [JsonProperty("size")] - public int Size { get; set; } = default!; - - /// - /// Total number of media items in the library. - /// - [JsonProperty("totalSize")] - public int TotalSize { get; set; } = default!; - - /// - /// Offset value for pagination. - /// - [JsonProperty("offset")] - public long Offset { get; set; } = default!; - - /// - /// Indicates whether syncing is allowed. - /// - [JsonProperty("allowSync")] - public bool AllowSync { get; set; } = default!; - - /// - /// URL for the background artwork of the media container. - /// - [JsonProperty("art")] - public string Art { get; set; } = default!; - - /// - /// The content type or mode. - /// - [JsonProperty("content")] - public string Content { get; set; } = default!; - - /// - /// An plugin identifier for the media container. - /// - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - /// - /// The unique identifier for the library section. - /// - [JsonProperty("librarySectionID")] - public long? LibrarySectionID { get; set; } - - /// - /// The title of the library section. - /// - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - /// - /// The universally unique identifier for the library section. - /// - [JsonProperty("librarySectionUUID")] - public string? LibrarySectionUUID { get; set; } - - /// - /// The prefix used for media tag resource paths. - /// - [JsonProperty("mediaTagPrefix")] - public string MediaTagPrefix { get; set; } = default!; - - /// - /// The version number for media tags. - /// - [JsonProperty("mediaTagVersion")] - public long MediaTagVersion { get; set; } = default!; - - /// - /// URL for the thumbnail image of the media container. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// Specifies whether caching is disabled. - /// - [JsonProperty("nocache")] - public bool Nocache { get; set; } = default!; - - /// - /// The primary title of the media container. - /// - [JsonProperty("title1")] - public string Title1 { get; set; } = default!; - - /// - /// The secondary title of the media container. - /// - [JsonProperty("title2")] - public string Title2 { get; set; } = default!; - - /// - /// Identifier for the view group layout. - /// - [JsonProperty("viewGroup")] - public string ViewGroup { get; set; } = default!; - - /// - /// The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
- /// - /// - /// - /// - ///
- [JsonProperty("Meta")] - public GetLibrarySectionsAllMeta? Meta { get; set; } - - /// - /// An array of metadata items. - /// - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMeta.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMeta.cs deleted file mode 100644 index d4742d5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMeta.cs +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - /// - /// The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
- /// - /// - /// - /// - ///
- public class GetLibrarySectionsAllMeta - { - - [JsonProperty("Type")] - public List? Type { get; set; } - - [JsonProperty("FieldType")] - public List? FieldType { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMetadata.cs deleted file mode 100644 index 9b4f443..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllMetadata.cs +++ /dev/null @@ -1,379 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using NodaTime; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Unknown
- /// - /// - /// - /// - ///
- public class GetLibrarySectionsAllMetadata - { - - /// - /// The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. - /// - [JsonProperty("ratingKey")] - public string RatingKey { get; set; } = default!; - - /// - /// The unique key for the media item. - /// - [JsonProperty("key")] - public string Key { get; set; } = default!; - - /// - /// The globally unique identifier for the media item. - /// - [JsonProperty("guid")] - public string Guid { get; set; } = default!; - - /// - /// A URL‐friendly version of the media title. - /// - [JsonProperty("slug")] - public string Slug { get; set; } = default!; - - /// - /// The studio that produced the media item. - /// - [JsonProperty("studio")] - public string? Studio { get; set; } - - [JsonProperty("type")] - public GetLibrarySectionsAllLibraryType Type { get; set; } = default!; - - /// - /// The title of the media item. - /// - [JsonProperty("title")] - public string Title { get; set; } = default!; - - /// - /// The sort title used for ordering media items. - /// - [JsonProperty("titleSort")] - public string TitleSort { get; set; } = default!; - - /// - /// The content rating for the media item. - /// - [JsonProperty("contentRating")] - public string? ContentRating { get; set; } - - /// - /// A synopsis of the media item. - /// - [JsonProperty("summary")] - public string Summary { get; set; } = default!; - - /// - /// The critic rating for the media item. - /// - [JsonProperty("rating")] - public float Rating { get; set; } = default!; - - /// - /// The audience rating for the media item. - /// - [JsonProperty("audienceRating")] - public double AudienceRating { get; set; } = default!; - - /// - /// The release year of the media item. - /// - [JsonProperty("year")] - public int? Year { get; set; } - - /// - /// A brief tagline for the media item. - /// - [JsonProperty("tagline")] - public string Tagline { get; set; } = default!; - - /// - /// The thumbnail image URL for the media item. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The art image URL for the media item. - /// - [JsonProperty("art")] - public string Art { get; set; } = default!; - - /// - /// The theme URL for the media item. - /// - [JsonProperty("theme")] - public string Theme { get; set; } = default!; - - /// - /// The index position of the media item. - /// - [JsonProperty("index")] - public int Index { get; set; } = default!; - - /// - /// The number of leaf items (end nodes) under this media item. - /// - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - /// - /// The number of leaf items that have been viewed. - /// - [JsonProperty("viewedLeafCount")] - public int? ViewedLeafCount { get; set; } - - /// - /// The number of child items associated with this media item. - /// - [JsonProperty("childCount")] - public int ChildCount { get; set; } = default!; - - /// - /// The total number of seasons (for TV shows). - /// - [JsonProperty("seasonCount")] - public int SeasonCount { get; set; } = default!; - - /// - /// The duration of the media item in milliseconds. - /// - [JsonProperty("duration")] - public int Duration { get; set; } = default!; - - /// - /// The original release date of the media item. - /// - [JsonProperty("originallyAvailableAt")] - public LocalDate? OriginallyAvailableAt { get; set; } - - [JsonProperty("addedAt")] - public long AddedAt { get; set; } = default!; - - /// - /// Unix epoch datetime in seconds - /// - [JsonProperty("updatedAt")] - public long? UpdatedAt { get; set; } - - /// - /// The URL for the audience rating image. - /// - [JsonProperty("audienceRatingImage")] - public string? AudienceRatingImage { get; set; } - - /// - /// The source from which chapter data is derived. - /// - [JsonProperty("chapterSource")] - public string? ChapterSource { get; set; } - - /// - /// The primary extra key associated with this media item. - /// - [JsonProperty("primaryExtraKey")] - public string? PrimaryExtraKey { get; set; } - - /// - /// The original title of the media item (if different). - /// - [JsonProperty("originalTitle")] - public string? OriginalTitle { get; set; } - - /// - /// The rating key of the parent media item. - /// - [JsonProperty("parentRatingKey")] - public string? ParentRatingKey { get; set; } - - /// - /// The rating key of the grandparent media item. - /// - [JsonProperty("grandparentRatingKey")] - public string? GrandparentRatingKey { get; set; } - - /// - /// The GUID of the parent media item. - /// - [JsonProperty("parentGuid")] - public string? ParentGuid { get; set; } - - /// - /// The GUID of the grandparent media item. - /// - [JsonProperty("grandparentGuid")] - public string? GrandparentGuid { get; set; } - - /// - /// The slug for the grandparent media item. - /// - [JsonProperty("grandparentSlug")] - public string? GrandparentSlug { get; set; } - - /// - /// The key of the grandparent media item. - /// - [JsonProperty("grandparentKey")] - public string? GrandparentKey { get; set; } - - /// - /// The key of the parent media item. - /// - [JsonProperty("parentKey")] - public string? ParentKey { get; set; } - - /// - /// The title of the grandparent media item. - /// - [JsonProperty("grandparentTitle")] - public string? GrandparentTitle { get; set; } - - /// - /// The thumbnail URL for the grandparent media item. - /// - [JsonProperty("grandparentThumb")] - public string? GrandparentThumb { get; set; } - - /// - /// The theme URL for the grandparent media item. - /// - [JsonProperty("grandparentTheme")] - public string? GrandparentTheme { get; set; } - - /// - /// The art URL for the grandparent media item. - /// - [JsonProperty("grandparentArt")] - public string? GrandparentArt { get; set; } - - /// - /// The title of the parent media item. - /// - [JsonProperty("parentTitle")] - public string? ParentTitle { get; set; } - - /// - /// The index position of the parent media item. - /// - [JsonProperty("parentIndex")] - public int? ParentIndex { get; set; } - - /// - /// The thumbnail URL for the parent media item. - /// - [JsonProperty("parentThumb")] - public string? ParentThumb { get; set; } - - /// - /// The URL for the rating image. - /// - [JsonProperty("ratingImage")] - public string? RatingImage { get; set; } - - /// - /// The number of times this media item has been viewed. - /// - [JsonProperty("viewCount")] - public int? ViewCount { get; set; } - - /// - /// The current playback offset (in milliseconds). - /// - [JsonProperty("viewOffset")] - public int? ViewOffset { get; set; } - - /// - /// The number of times this media item has been skipped. - /// - [JsonProperty("skipCount")] - public int? SkipCount { get; set; } - - /// - /// A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. - /// - [JsonProperty("subtype")] - public string? Subtype { get; set; } - - /// - /// The Unix timestamp representing the last time the item was rated. - /// - [JsonProperty("lastRatedAt")] - public long? LastRatedAt { get; set; } - - /// - /// The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). - /// - [JsonProperty("createdAtAccuracy")] - public string? CreatedAtAccuracy { get; set; } - - /// - /// The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. - /// - [JsonProperty("createdAtTZOffset")] - public string? CreatedAtTZOffset { get; set; } - - /// - /// Unix timestamp for when the media item was last viewed. - /// - [JsonProperty("lastViewedAt")] - public int? LastViewedAt { get; set; } - - /// - /// The rating provided by a user for the item. This value is expressed as a decimal number. - /// - [JsonProperty("userRating")] - public float? UserRating { get; set; } - - [JsonProperty("Image")] - public List? Image { get; set; } - - [JsonProperty("UltraBlurColors")] - public GetLibrarySectionsAllUltraBlurColors? UltraBlurColors { get; set; } - - [JsonProperty("Guid")] - public List? Guids { get; set; } - - [JsonProperty("Media")] - public List? Media { get; set; } - - [JsonProperty("Genre")] - public List? Genre { get; set; } - - [JsonProperty("Country")] - public List? Country { get; set; } - - [JsonProperty("Director")] - public List? Director { get; set; } - - [JsonProperty("Writer")] - public List? Writer { get; set; } - - [JsonProperty("Role")] - public List? Role { get; set; } - - [JsonProperty("Collection")] - public List? Collection { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOperator.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOperator.cs deleted file mode 100644 index 40b6081..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOperator.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllOperator - { - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming.cs deleted file mode 100644 index 41b9c95..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming.cs +++ /dev/null @@ -1,203 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using Newtonsoft.Json.Linq; - using System; - using System.Collections.Generic; - using System.Numerics; - using System.Reflection; - - public class GetLibrarySectionsAllOptimizedForStreamingType - { - private GetLibrarySectionsAllOptimizedForStreamingType(string value) { Value = value; } - - public string Value { get; private set; } - - public static GetLibrarySectionsAllOptimizedForStreamingType GetLibrarySectionsAllOptimizedForStreaming1 { get { return new GetLibrarySectionsAllOptimizedForStreamingType("get-library-sections-all_optimizedForStreaming_1"); } } - - public static GetLibrarySectionsAllOptimizedForStreamingType Boolean { get { return new GetLibrarySectionsAllOptimizedForStreamingType("boolean"); } } - - public static GetLibrarySectionsAllOptimizedForStreamingType Null { get { return new GetLibrarySectionsAllOptimizedForStreamingType("null"); } } - - public override string ToString() { return Value; } - public static implicit operator String(GetLibrarySectionsAllOptimizedForStreamingType v) { return v.Value; } - public static GetLibrarySectionsAllOptimizedForStreamingType FromString(string v) { - switch(v) { - case "get-library-sections-all_optimizedForStreaming_1": return GetLibrarySectionsAllOptimizedForStreaming1; - case "boolean": return Boolean; - case "null": return Null; - default: throw new ArgumentException("Invalid value for GetLibrarySectionsAllOptimizedForStreamingType"); - } - } - public override bool Equals(object? obj) - { - if (obj == null || GetType() != obj.GetType()) - { - return false; - } - return Value.Equals(((GetLibrarySectionsAllOptimizedForStreamingType)obj).Value); - } - - public override int GetHashCode() - { - return Value.GetHashCode(); - } - } - - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonConverter(typeof(GetLibrarySectionsAllOptimizedForStreaming.GetLibrarySectionsAllOptimizedForStreamingConverter))] - public class GetLibrarySectionsAllOptimizedForStreaming - { - public GetLibrarySectionsAllOptimizedForStreaming(GetLibrarySectionsAllOptimizedForStreamingType type) - { - Type = type; - } - - [SpeakeasyMetadata("form:explode=true")] - public GetLibrarySectionsAllOptimizedForStreaming1? GetLibrarySectionsAllOptimizedForStreaming1 { get; set; } - - [SpeakeasyMetadata("form:explode=true")] - public bool? Boolean { get; set; } - - public GetLibrarySectionsAllOptimizedForStreamingType Type { get; set; } - public static GetLibrarySectionsAllOptimizedForStreaming CreateGetLibrarySectionsAllOptimizedForStreaming1(GetLibrarySectionsAllOptimizedForStreaming1 getLibrarySectionsAllOptimizedForStreaming1) - { - GetLibrarySectionsAllOptimizedForStreamingType typ = GetLibrarySectionsAllOptimizedForStreamingType.GetLibrarySectionsAllOptimizedForStreaming1; - - GetLibrarySectionsAllOptimizedForStreaming res = new GetLibrarySectionsAllOptimizedForStreaming(typ); - res.GetLibrarySectionsAllOptimizedForStreaming1 = getLibrarySectionsAllOptimizedForStreaming1; - return res; - } - public static GetLibrarySectionsAllOptimizedForStreaming CreateBoolean(bool boolean) - { - GetLibrarySectionsAllOptimizedForStreamingType typ = GetLibrarySectionsAllOptimizedForStreamingType.Boolean; - - GetLibrarySectionsAllOptimizedForStreaming res = new GetLibrarySectionsAllOptimizedForStreaming(typ); - res.Boolean = boolean; - return res; - } - - public static GetLibrarySectionsAllOptimizedForStreaming CreateNull() - { - GetLibrarySectionsAllOptimizedForStreamingType typ = GetLibrarySectionsAllOptimizedForStreamingType.Null; - return new GetLibrarySectionsAllOptimizedForStreaming(typ); - } - - public class GetLibrarySectionsAllOptimizedForStreamingConverter : JsonConverter - { - - public override bool CanConvert(System.Type objectType) => objectType == typeof(GetLibrarySectionsAllOptimizedForStreaming); - - public override bool CanRead => true; - - public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) - { - var json = JRaw.Create(reader).ToString(); - if (json == "null") - { - return null; - } - - var fallbackCandidates = new List<(System.Type, object, string)>(); - - try - { - return new GetLibrarySectionsAllOptimizedForStreaming(GetLibrarySectionsAllOptimizedForStreamingType.GetLibrarySectionsAllOptimizedForStreaming1) - { - GetLibrarySectionsAllOptimizedForStreaming1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) - }; - } - catch (ResponseBodyDeserializer.MissingMemberException) - { - fallbackCandidates.Add((typeof(GetLibrarySectionsAllOptimizedForStreaming1), new GetLibrarySectionsAllOptimizedForStreaming(GetLibrarySectionsAllOptimizedForStreamingType.GetLibrarySectionsAllOptimizedForStreaming1), "GetLibrarySectionsAllOptimizedForStreaming1")); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next option - } - catch (Exception) - { - throw; - } - - try - { - var converted = Convert.ToBoolean(json); - return new GetLibrarySectionsAllOptimizedForStreaming(GetLibrarySectionsAllOptimizedForStreamingType.Boolean) - { - Boolean = converted - }; - } - catch (System.FormatException) - { - // try next option - } - - if (fallbackCandidates.Count > 0) - { - fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); - foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) - { - try - { - return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next fallback option - } - catch (Exception) - { - throw; - } - } - } - - throw new InvalidOperationException("Could not deserialize into any supported types."); - } - - public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) - { - if (value == null) { - writer.WriteRawValue("null"); - return; - } - - GetLibrarySectionsAllOptimizedForStreaming res = (GetLibrarySectionsAllOptimizedForStreaming)value; - if (GetLibrarySectionsAllOptimizedForStreamingType.FromString(res.Type).Equals(GetLibrarySectionsAllOptimizedForStreamingType.Null)) - { - writer.WriteRawValue("null"); - return; - } - - if (res.GetLibrarySectionsAllOptimizedForStreaming1 != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.GetLibrarySectionsAllOptimizedForStreaming1)); - return; - } - - if (res.Boolean != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); - return; - } - } - - } - - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming1.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming1.cs deleted file mode 100644 index e6cd5e7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming1.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum GetLibrarySectionsAllOptimizedForStreaming1 - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreamingLibrary1.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreamingLibrary1.cs deleted file mode 100644 index d057665..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllOptimizedForStreamingLibrary1.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum GetLibrarySectionsAllOptimizedForStreamingLibrary1 - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllPart.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllPart.cs deleted file mode 100644 index 8936b01..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllPart.cs +++ /dev/null @@ -1,105 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibrarySectionsAllPart - { - - /// - /// Indicates if the part is accessible. - /// - [JsonProperty("accessible")] - public bool? Accessible { get; set; } - - /// - /// Indicates if the part exists. - /// - [JsonProperty("exists")] - public bool? Exists { get; set; } - - /// - /// Unique part identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Key to access this part. - /// - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("indexes")] - public string? Indexes { get; set; } - - /// - /// Duration of the part in milliseconds. - /// - [JsonProperty("duration")] - public int? Duration { get; set; } - - /// - /// File path for the part. - /// - [JsonProperty("file")] - public string File { get; set; } = default!; - - /// - /// File size in bytes. - /// - [JsonProperty("size")] - public long Size { get; set; } = default!; - - [JsonProperty("packetLength")] - public int? PacketLength { get; set; } - - /// - /// Container format of the part. - /// - [JsonProperty("container")] - public string? Container { get; set; } - - /// - /// Video profile for the part. - /// - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - /// - /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). - /// - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - [JsonProperty("has64bitOffsets")] - public bool? Has64bitOffsets { get; set; } - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonProperty("optimizedForStreaming")] - public GetLibrarySectionsAllLibraryOptimizedForStreaming? OptimizedForStreaming { get; set; } - - [JsonProperty("hasThumbnail")] - public GetLibrarySectionsAllHasThumbnail? HasThumbnail { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetLibrarySectionsAllHasThumbnail.False; - - /// - /// An array of streams for this part. - /// - [JsonProperty("Stream")] - public List? Stream { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllQueryParamIncludeMeta.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllQueryParamIncludeMeta.cs deleted file mode 100644 index b6649aa..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllQueryParamIncludeMeta.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Adds the Meta object to the response
- /// - /// - /// - /// - ///
- public enum GetLibrarySectionsAllQueryParamIncludeMeta - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllQueryParamType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllQueryParamType.cs deleted file mode 100644 index 1e9682f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllQueryParamType.cs +++ /dev/null @@ -1,100 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetLibrarySectionsAllQueryParamType : IEquatable - { - public static readonly GetLibrarySectionsAllQueryParamType Movie = new GetLibrarySectionsAllQueryParamType(1); - public static readonly GetLibrarySectionsAllQueryParamType TvShow = new GetLibrarySectionsAllQueryParamType(2); - public static readonly GetLibrarySectionsAllQueryParamType Season = new GetLibrarySectionsAllQueryParamType(3); - public static readonly GetLibrarySectionsAllQueryParamType Episode = new GetLibrarySectionsAllQueryParamType(4); - public static readonly GetLibrarySectionsAllQueryParamType Artist = new GetLibrarySectionsAllQueryParamType(5); - public static readonly GetLibrarySectionsAllQueryParamType Album = new GetLibrarySectionsAllQueryParamType(6); - public static readonly GetLibrarySectionsAllQueryParamType Track = new GetLibrarySectionsAllQueryParamType(7); - public static readonly GetLibrarySectionsAllQueryParamType PhotoAlbum = new GetLibrarySectionsAllQueryParamType(8); - public static readonly GetLibrarySectionsAllQueryParamType Photo = new GetLibrarySectionsAllQueryParamType(9); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - [1] = Movie, - [2] = TvShow, - [3] = Season, - [4] = Episode, - [5] = Artist, - [6] = Album, - [7] = Track, - [8] = PhotoAlbum, - [9] = Photo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetLibrarySectionsAllQueryParamType(long value) - { - Value = value; - } - - public long Value { get; } - - public static GetLibrarySectionsAllQueryParamType Of(long value) - { - return _values.GetOrAdd(value, _ => new GetLibrarySectionsAllQueryParamType(value)); - } - - public static implicit operator GetLibrarySectionsAllQueryParamType(long value) => Of(value); - public static implicit operator long(GetLibrarySectionsAllQueryParamType getlibrarysectionsallqueryparamtype) => getlibrarysectionsallqueryparamtype.Value; - - public static GetLibrarySectionsAllQueryParamType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetLibrarySectionsAllQueryParamType); - - public bool Equals(GetLibrarySectionsAllQueryParamType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllRequest.cs deleted file mode 100644 index 36be8e7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllRequest.cs +++ /dev/null @@ -1,102 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetLibrarySectionsAllRequest - { - - /// - /// The unique key of the Plex library.
- /// - /// - /// Note: This is unique in the context of the Plex server.
- /// - ///
- ///
- [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")] - public int SectionKey { get; set; } = default!; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] - public GetLibrarySectionsAllQueryParamType Type { get; set; } = default!; - - /// - /// Adds the Meta object to the response
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeMeta")] - public GetLibrarySectionsAllQueryParamIncludeMeta? IncludeMeta { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetLibrarySectionsAllQueryParamIncludeMeta.Disable; - - /// - /// Adds the Guid object to the response
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeGuids")] - public QueryParamIncludeGuids? IncludeGuids { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.QueryParamIncludeGuids.Disable; - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeAdvanced")] - public IncludeAdvanced? IncludeAdvanced { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeAdvanced.Disable; - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeCollections")] - public QueryParamIncludeCollections? IncludeCollections { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.QueryParamIncludeCollections.Disable; - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeExternalMedia")] - public QueryParamIncludeExternalMedia? IncludeExternalMedia { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.QueryParamIncludeExternalMedia.Disable; - - /// - /// The index of the first item to return. If not specified, the first item will be returned.
- /// - /// - /// If the number of items exceeds the limit, the response will be paginated.
- /// By default this is 0
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Start")] - public int? XPlexContainerStart { get; set; } = 0; - - /// - /// The number of items to return. If not specified, all items will be returned.
- /// - /// - /// If the number of items exceeds the limit, the response will be paginated.
- /// By default this is 50
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Size")] - public int? XPlexContainerSize { get; set; } = 50; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllResponse.cs deleted file mode 100644 index 5d42676..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetLibrarySectionsAllResponse - { - - /// - /// 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!; - - /// - /// Successful response containing media container data. - /// - public GetLibrarySectionsAllResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllResponseBody.cs deleted file mode 100644 index ca9ad83..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Successful response containing media container data. - /// - public class GetLibrarySectionsAllResponseBody - { - - [JsonProperty("MediaContainer")] - public GetLibrarySectionsAllMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllRole.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllRole.cs deleted file mode 100644 index bc4a0e4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllRole.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllRole - { - - /// - /// The display tag for the actor (typically the actor's name). - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllSort.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllSort.cs deleted file mode 100644 index c3bc263..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllSort.cs +++ /dev/null @@ -1,57 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllSort - { - - [JsonProperty("default")] - public string? Default { get; set; } - - [JsonProperty("active")] - public bool? Active { get; set; } - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- [JsonProperty("activeDirection")] - public GetLibrarySectionsAllActiveDirection? ActiveDirection { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetLibrarySectionsAllActiveDirection.Ascending; - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- [JsonProperty("defaultDirection")] - public GetLibrarySectionsAllDefaultDirection? DefaultDirection { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetLibrarySectionsAllDefaultDirection.Ascending; - - [JsonProperty("descKey")] - public string? DescKey { get; set; } - - [JsonProperty("firstCharacterKey")] - public string? FirstCharacterKey { get; set; } - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllStream.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllStream.cs deleted file mode 100644 index 2730af0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllStream.cs +++ /dev/null @@ -1,316 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllStream - { - - /// - /// Unique stream identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Stream type:
- /// - /// - /// - VIDEO = 1
- /// - AUDIO = 2
- /// - SUBTITLE = 3
- /// - ///
- ///
- [JsonProperty("streamType")] - public long StreamType { get; } = 1; - - /// - /// Format of the stream (e.g., srt). - /// - [JsonProperty("format")] - public string? Format { get; set; } - - /// - /// Indicates if this stream is default. - /// - [JsonProperty("default")] - public bool? Default { get; set; } - - /// - /// Codec used by the stream. - /// - [JsonProperty("codec")] - public string Codec { get; set; } = default!; - - /// - /// Index of the stream. - /// - [JsonProperty("index")] - public int? Index { get; set; } - - /// - /// Bitrate of the stream. - /// - [JsonProperty("bitrate")] - public int? Bitrate { get; set; } - - /// - /// Language of the stream. - /// - [JsonProperty("language")] - public string? Language { get; set; } - - /// - /// Language tag (e.g., en). - /// - [JsonProperty("languageTag")] - public string? LanguageTag { get; set; } - - /// - /// ISO language code. - /// - [JsonProperty("languageCode")] - public string? LanguageCode { get; set; } - - /// - /// Indicates whether header compression is enabled. - /// - [JsonProperty("headerCompression")] - public bool? HeaderCompression { get; set; } - - /// - /// Dolby Vision BL compatibility ID. - /// - [JsonProperty("DOVIBLCompatID")] - public int? DOVIBLCompatID { get; set; } - - /// - /// Indicates if Dolby Vision BL is present. - /// - [JsonProperty("DOVIBLPresent")] - public bool? DOVIBLPresent { get; set; } - - /// - /// Indicates if Dolby Vision EL is present. - /// - [JsonProperty("DOVIELPresent")] - public bool? DOVIELPresent { get; set; } - - /// - /// Dolby Vision level. - /// - [JsonProperty("DOVILevel")] - public int? DOVILevel { get; set; } - - /// - /// Indicates if Dolby Vision is present. - /// - [JsonProperty("DOVIPresent")] - public bool? DOVIPresent { get; set; } - - /// - /// Dolby Vision profile. - /// - [JsonProperty("DOVIProfile")] - public int? DOVIProfile { get; set; } - - /// - /// Indicates if Dolby Vision RPU is present. - /// - [JsonProperty("DOVIRPUPresent")] - public bool? DOVIRPUPresent { get; set; } - - /// - /// Dolby Vision version. - /// - [JsonProperty("DOVIVersion")] - public string? DOVIVersion { get; set; } - - /// - /// Bit depth of the video stream. - /// - [JsonProperty("bitDepth")] - public int? BitDepth { get; set; } - - /// - /// Chroma sample location. - /// - [JsonProperty("chromaLocation")] - public string? ChromaLocation { get; set; } - - /// - /// Chroma subsampling format. - /// - [JsonProperty("chromaSubsampling")] - public string? ChromaSubsampling { get; set; } - - /// - /// Coded video height. - /// - [JsonProperty("codedHeight")] - public int? CodedHeight { get; set; } - - /// - /// Coded video width. - /// - [JsonProperty("codedWidth")] - public int? CodedWidth { get; set; } - - [JsonProperty("closedCaptions")] - public bool? ClosedCaptions { get; set; } - - /// - /// Color primaries used. - /// - [JsonProperty("colorPrimaries")] - public string? ColorPrimaries { get; set; } - - /// - /// Color range (e.g., tv). - /// - [JsonProperty("colorRange")] - public string? ColorRange { get; set; } - - /// - /// Color space. - /// - [JsonProperty("colorSpace")] - public string? ColorSpace { get; set; } - - /// - /// Color transfer characteristics. - /// - [JsonProperty("colorTrc")] - public string? ColorTrc { get; set; } - - /// - /// Frame rate of the stream. - /// - [JsonProperty("frameRate")] - public float? FrameRate { get; set; } - - /// - /// Key to access this stream part. - /// - [JsonProperty("key")] - public string? Key { get; set; } - - /// - /// Height of the video stream. - /// - [JsonProperty("height")] - public int? Height { get; set; } - - /// - /// Video level. - /// - [JsonProperty("level")] - public int? Level { get; set; } - - /// - /// Indicates if this is the original stream. - /// - [JsonProperty("original")] - public bool? Original { get; set; } - - [JsonProperty("hasScalingMatrix")] - public bool? HasScalingMatrix { get; set; } - - /// - /// Video profile. - /// - [JsonProperty("profile")] - public string? Profile { get; set; } - - [JsonProperty("scanType")] - public string? ScanType { get; set; } - - [JsonProperty("embeddedInVideo")] - public string? EmbeddedInVideo { get; set; } - - /// - /// Number of reference frames. - /// - [JsonProperty("refFrames")] - public int? RefFrames { get; set; } - - /// - /// Width of the video stream. - /// - [JsonProperty("width")] - public int? Width { get; set; } - - /// - /// Display title for the stream. - /// - [JsonProperty("displayTitle")] - public string DisplayTitle { get; set; } = default!; - - /// - /// Extended display title for the stream. - /// - [JsonProperty("extendedDisplayTitle")] - public string ExtendedDisplayTitle { get; set; } = default!; - - /// - /// Indicates if this stream is selected (applicable for audio streams). - /// - [JsonProperty("selected")] - public bool? Selected { get; set; } - - [JsonProperty("forced")] - public bool? Forced { get; set; } - - /// - /// Number of audio channels (for audio streams). - /// - [JsonProperty("channels")] - public int? Channels { get; set; } - - /// - /// Audio channel layout. - /// - [JsonProperty("audioChannelLayout")] - public string? AudioChannelLayout { get; set; } - - /// - /// Sampling rate for the audio stream. - /// - [JsonProperty("samplingRate")] - public int? SamplingRate { get; set; } - - /// - /// Indicates if the stream can auto-sync. - /// - [JsonProperty("canAutoSync")] - public bool? CanAutoSync { get; set; } - - /// - /// Indicates if the stream is for the hearing impaired. - /// - [JsonProperty("hearingImpaired")] - public bool? HearingImpaired { get; set; } - - /// - /// Indicates if the stream is a dub. - /// - [JsonProperty("dub")] - public bool? Dub { get; set; } - - /// - /// Optional title for the stream (e.g., language variant). - /// - [JsonProperty("title")] - public string? Title { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllType.cs deleted file mode 100644 index 44c01c3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllType.cs +++ /dev/null @@ -1,44 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetLibrarySectionsAllType - { - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("subtype")] - public string? Subtype { get; set; } - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("active")] - public bool Active { get; set; } = default!; - - [JsonProperty("Filter")] - public List? Filter { get; set; } - - [JsonProperty("Sort")] - public List? Sort { get; set; } - - [JsonProperty("Field")] - public List? Field { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllUltraBlurColors.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllUltraBlurColors.cs deleted file mode 100644 index 54145cf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllUltraBlurColors.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllUltraBlurColors - { - - [JsonProperty("topLeft")] - public string TopLeft { get; set; } = default!; - - [JsonProperty("topRight")] - public string TopRight { get; set; } = default!; - - [JsonProperty("bottomRight")] - public string BottomRight { get; set; } = default!; - - [JsonProperty("bottomLeft")] - public string BottomLeft { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllWriter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllWriter.cs deleted file mode 100644 index 8233b3d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibrarySectionsAllWriter.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetLibrarySectionsAllWriter - { - - /// - /// The role of Writer - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsMediaContainer.cs new file mode 100644 index 0000000..b3f3e73 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetLineupChannelsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Lineup")] + public List? Lineup { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsRequest.cs new file mode 100644 index 0000000..d4933ff --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsRequest.cs @@ -0,0 +1,91 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class GetLineupChannelsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The URIs describing the lineups + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=lineup")] + public List Lineup { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsResponse.cs new file mode 100644 index 0000000..8bd503b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetLineupChannelsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetLineupChannelsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsResponseBody.cs new file mode 100644 index 0000000..576e0f1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupChannelsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetLineupChannelsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetLineupChannelsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupRequest.cs new file mode 100644 index 0000000..31affd0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetLineupRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The URI describing the device + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=device")] + public string DeviceQueryParameter { get; set; } = default!; + + /// + /// The URI describing the lineupGroup + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=lineupGroup")] + public string LineupGroup { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupResponse.cs new file mode 100644 index 0000000..a0790e3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLineupResponse.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetLineupResponse + { + + /// + /// 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!; + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLiveTVSessionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLiveTVSessionRequest.cs new file mode 100644 index 0000000..c41f78c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLiveTVSessionRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetLiveTVSessionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The session id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sessionId")] + public string SessionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLiveTVSessionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLiveTVSessionResponse.cs new file mode 100644 index 0000000..8741e99 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLiveTVSessionResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetLiveTVSessionResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsMediaContainer.cs deleted file mode 100644 index c08f294..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsMediaContainer.cs +++ /dev/null @@ -1,47 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetMediaArtsMediaContainer - { - - /// - /// Number of media items returned in this response. - /// - [JsonProperty("size")] - public int Size { get; set; } = default!; - - /// - /// The version number for media tags. - /// - [JsonProperty("mediaTagVersion")] - public long MediaTagVersion { get; set; } = default!; - - /// - /// The prefix used for media tag resource paths. - /// - [JsonProperty("mediaTagPrefix")] - public string MediaTagPrefix { get; set; } = default!; - - /// - /// An plugin identifier for the media container. - /// - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - [JsonProperty("Metadata")] - public List Metadata { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsMetadata.cs deleted file mode 100644 index 729d3cc..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsMetadata.cs +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaArtsMetadata - { - - /// - /// The URL of the artwork. - /// - [JsonProperty("key")] - public string Key { get; set; } = default!; - - /// - /// The provider of the artwork. - /// - [JsonProperty("provider")] - public string? Provider { get; set; } - - /// - /// The URL of the artwork. - /// - [JsonProperty("ratingKey")] - public string RatingKey { get; set; } = default!; - - /// - /// Whether this is the selected artwork. - /// - [JsonProperty("selected")] - public bool Selected { get; set; } = default!; - - /// - /// The URL of the artwork thumbnail. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsRequest.cs deleted file mode 100644 index 3fe338d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsRequest.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetMediaArtsRequest - { - - /// - /// the id of the library item to return the artwork of. - /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")] - public long RatingKey { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsResponse.cs deleted file mode 100644 index 91dbd0f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetMediaArtsResponse - { - - /// - /// 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 available background artwork for the library item. - /// - public GetMediaArtsResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsResponseBody.cs deleted file mode 100644 index 940d70a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaArtsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The available background artwork for the library item. - /// - public class GetMediaArtsResponseBody - { - - [JsonProperty("MediaContainer")] - public GetMediaArtsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataAttributes.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataAttributes.cs deleted file mode 100644 index 9a36a17..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataAttributes.cs +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Attributes associated with the marker. - /// - public class GetMediaMetaDataAttributes - { - - /// - /// The identifier for the attributes. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// The version number of the marker attributes. - /// - [JsonProperty("version")] - public long? Version { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataChapter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataChapter.cs deleted file mode 100644 index 29f3c9c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataChapter.cs +++ /dev/null @@ -1,39 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The thumbnail for the chapter - /// - public class GetMediaMetaDataChapter - { - - [JsonProperty("id")] - public long Id { get; set; } = default!; - - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - [JsonProperty("index")] - public long Index { get; set; } = default!; - - [JsonProperty("startTimeOffset")] - public long StartTimeOffset { get; set; } = default!; - - [JsonProperty("endTimeOffset")] - public long EndTimeOffset { get; set; } = default!; - - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataCountry.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataCountry.cs deleted file mode 100644 index 04c838a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataCountry.cs +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The filter query string for country media items. - /// - public class GetMediaMetaDataCountry - { - - /// - /// The unique identifier for the country.
- /// - /// - /// NOTE: This is different for each Plex server and is not globally unique.
- /// - ///
- ///
- [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The country of origin of this media item - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataDirector.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataDirector.cs deleted file mode 100644 index 623fda4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataDirector.cs +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataDirector - { - - /// - /// Unique identifier for the director. - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The role of Director - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// The filter string used to query this director. - /// - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - /// - /// A unique 24-character hexadecimal key associated with the director's tag, used for internal identification. - /// - [JsonProperty("tagKey")] - public string TagKey { get; set; } = default!; - - /// - /// The absolute URL of the thumbnail image for the director. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataExtras.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataExtras.cs deleted file mode 100644 index 1d5f279..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataExtras.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataExtras - { - - /// - /// The size of the extras. - /// - [JsonProperty("size")] - public long? Size { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataGenre.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataGenre.cs deleted file mode 100644 index 50f8b1c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataGenre.cs +++ /dev/null @@ -1,45 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The filter query string for similar items. - /// - public class GetMediaMetaDataGenre - { - - /// - /// The unique identifier for the genre.
- /// - /// - /// NOTE: This is different for each Plex server and is not globally unique.
- /// - ///
- ///
- [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The genre name of this media-item
- /// - /// - /// - /// - ///
- [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataGuids.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataGuids.cs deleted file mode 100644 index 6ec9ad0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataGuids.cs +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataGuids - { - - /// - /// The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
- /// - /// - /// - /// - ///
- [JsonProperty("id")] - public string Id { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataHasThumbnail.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataHasThumbnail.cs deleted file mode 100644 index 1455fee..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataHasThumbnail.cs +++ /dev/null @@ -1,64 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// Indicates if the part has a thumbnail.
- /// - /// - /// - /// - ///
- public enum GetMediaMetaDataHasThumbnail - { - [JsonProperty("0")] - False, - [JsonProperty("1")] - True, - } - - public static class GetMediaMetaDataHasThumbnailExtension - { - public static string Value(this GetMediaMetaDataHasThumbnail value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetMediaMetaDataHasThumbnail ToEnum(this string value) - { - foreach(var field in typeof(GetMediaMetaDataHasThumbnail).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 GetMediaMetaDataHasThumbnail) - { - return (GetMediaMetaDataHasThumbnail)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetMediaMetaDataHasThumbnail"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataImage.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataImage.cs deleted file mode 100644 index 628b3c5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataImage.cs +++ /dev/null @@ -1,32 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetMediaMetaDataImage - { - - [JsonProperty("alt")] - public string Alt { get; set; } = default!; - - [JsonProperty("type")] - public GetMediaMetaDataLibraryType Type { get; set; } = default!; - - [JsonProperty("url")] - public string Url { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.cs deleted file mode 100644 index b4448f1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.cs +++ /dev/null @@ -1,207 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using Newtonsoft.Json.Linq; - using System; - using System.Collections.Generic; - using System.Numerics; - using System.Reflection; - - public class GetMediaMetaDataLibraryOptimizedForStreamingType - { - private GetMediaMetaDataLibraryOptimizedForStreamingType(string value) { Value = value; } - - public string Value { get; private set; } - - public static GetMediaMetaDataLibraryOptimizedForStreamingType GetMediaMetaDataOptimizedForStreamingLibrary1 { get { return new GetMediaMetaDataLibraryOptimizedForStreamingType("get-media-meta-data_optimizedForStreaming_Library_1"); } } - - public static GetMediaMetaDataLibraryOptimizedForStreamingType Boolean { get { return new GetMediaMetaDataLibraryOptimizedForStreamingType("boolean"); } } - - public static GetMediaMetaDataLibraryOptimizedForStreamingType Null { get { return new GetMediaMetaDataLibraryOptimizedForStreamingType("null"); } } - - public override string ToString() { return Value; } - public static implicit operator String(GetMediaMetaDataLibraryOptimizedForStreamingType v) { return v.Value; } - public static GetMediaMetaDataLibraryOptimizedForStreamingType FromString(string v) { - switch(v) { - case "get-media-meta-data_optimizedForStreaming_Library_1": return GetMediaMetaDataOptimizedForStreamingLibrary1; - case "boolean": return Boolean; - case "null": return Null; - default: throw new ArgumentException("Invalid value for GetMediaMetaDataLibraryOptimizedForStreamingType"); - } - } - public override bool Equals(object? obj) - { - if (obj == null || GetType() != obj.GetType()) - { - return false; - } - return Value.Equals(((GetMediaMetaDataLibraryOptimizedForStreamingType)obj).Value); - } - - public override int GetHashCode() - { - return Value.GetHashCode(); - } - } - - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
- /// - /// - /// - /// - ///
- [JsonConverter(typeof(GetMediaMetaDataLibraryOptimizedForStreaming.GetMediaMetaDataLibraryOptimizedForStreamingConverter))] - public class GetMediaMetaDataLibraryOptimizedForStreaming - { - public GetMediaMetaDataLibraryOptimizedForStreaming(GetMediaMetaDataLibraryOptimizedForStreamingType type) - { - Type = type; - } - - [SpeakeasyMetadata("form:explode=true")] - public GetMediaMetaDataOptimizedForStreamingLibrary1? GetMediaMetaDataOptimizedForStreamingLibrary1 { get; set; } - - [SpeakeasyMetadata("form:explode=true")] - public bool? Boolean { get; set; } - - public GetMediaMetaDataLibraryOptimizedForStreamingType Type { get; set; } - public static GetMediaMetaDataLibraryOptimizedForStreaming CreateGetMediaMetaDataOptimizedForStreamingLibrary1(GetMediaMetaDataOptimizedForStreamingLibrary1 getMediaMetaDataOptimizedForStreamingLibrary1) - { - GetMediaMetaDataLibraryOptimizedForStreamingType typ = GetMediaMetaDataLibraryOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreamingLibrary1; - - GetMediaMetaDataLibraryOptimizedForStreaming res = new GetMediaMetaDataLibraryOptimizedForStreaming(typ); - res.GetMediaMetaDataOptimizedForStreamingLibrary1 = getMediaMetaDataOptimizedForStreamingLibrary1; - return res; - } - public static GetMediaMetaDataLibraryOptimizedForStreaming CreateBoolean(bool boolean) - { - GetMediaMetaDataLibraryOptimizedForStreamingType typ = GetMediaMetaDataLibraryOptimizedForStreamingType.Boolean; - - GetMediaMetaDataLibraryOptimizedForStreaming res = new GetMediaMetaDataLibraryOptimizedForStreaming(typ); - res.Boolean = boolean; - return res; - } - - public static GetMediaMetaDataLibraryOptimizedForStreaming CreateNull() - { - GetMediaMetaDataLibraryOptimizedForStreamingType typ = GetMediaMetaDataLibraryOptimizedForStreamingType.Null; - return new GetMediaMetaDataLibraryOptimizedForStreaming(typ); - } - - public class GetMediaMetaDataLibraryOptimizedForStreamingConverter : JsonConverter - { - - public override bool CanConvert(System.Type objectType) => objectType == typeof(GetMediaMetaDataLibraryOptimizedForStreaming); - - public override bool CanRead => true; - - public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) - { - var json = JRaw.Create(reader).ToString(); - if (json == "null") - { - return null; - } - - var fallbackCandidates = new List<(System.Type, object, string)>(); - - try - { - return new GetMediaMetaDataLibraryOptimizedForStreaming(GetMediaMetaDataLibraryOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreamingLibrary1) - { - GetMediaMetaDataOptimizedForStreamingLibrary1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) - }; - } - catch (ResponseBodyDeserializer.MissingMemberException) - { - fallbackCandidates.Add((typeof(GetMediaMetaDataOptimizedForStreamingLibrary1), new GetMediaMetaDataLibraryOptimizedForStreaming(GetMediaMetaDataLibraryOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreamingLibrary1), "GetMediaMetaDataOptimizedForStreamingLibrary1")); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next option - } - catch (Exception) - { - throw; - } - - try - { - var converted = Convert.ToBoolean(json); - return new GetMediaMetaDataLibraryOptimizedForStreaming(GetMediaMetaDataLibraryOptimizedForStreamingType.Boolean) - { - Boolean = converted - }; - } - catch (System.FormatException) - { - // try next option - } - - if (fallbackCandidates.Count > 0) - { - fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); - foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) - { - try - { - return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next fallback option - } - catch (Exception) - { - throw; - } - } - } - - throw new InvalidOperationException("Could not deserialize into any supported types."); - } - - public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) - { - if (value == null) { - writer.WriteRawValue("null"); - return; - } - - GetMediaMetaDataLibraryOptimizedForStreaming res = (GetMediaMetaDataLibraryOptimizedForStreaming)value; - if (GetMediaMetaDataLibraryOptimizedForStreamingType.FromString(res.Type).Equals(GetMediaMetaDataLibraryOptimizedForStreamingType.Null)) - { - writer.WriteRawValue("null"); - return; - } - - if (res.GetMediaMetaDataOptimizedForStreamingLibrary1 != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.GetMediaMetaDataOptimizedForStreamingLibrary1)); - return; - } - - if (res.Boolean != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); - return; - } - } - - } - - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryType.cs deleted file mode 100644 index e54cc61..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryType.cs +++ /dev/null @@ -1,79 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - [JsonConverter(typeof(OpenEnumConverter))] - public class GetMediaMetaDataLibraryType : IEquatable - { - public static readonly GetMediaMetaDataLibraryType CoverPoster = new GetMediaMetaDataLibraryType("coverPoster"); - public static readonly GetMediaMetaDataLibraryType Background = new GetMediaMetaDataLibraryType("background"); - public static readonly GetMediaMetaDataLibraryType Snapshot = new GetMediaMetaDataLibraryType("snapshot"); - public static readonly GetMediaMetaDataLibraryType ClearLogo = new GetMediaMetaDataLibraryType("clearLogo"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["coverPoster"] = CoverPoster, - ["background"] = Background, - ["snapshot"] = Snapshot, - ["clearLogo"] = ClearLogo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetMediaMetaDataLibraryType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetMediaMetaDataLibraryType Of(string value) - { - return _values.GetOrAdd(value, _ => new GetMediaMetaDataLibraryType(value)); - } - - public static implicit operator GetMediaMetaDataLibraryType(string value) => Of(value); - public static implicit operator string(GetMediaMetaDataLibraryType getmediametadatalibrarytype) => getmediametadatalibrarytype.Value; - - public static GetMediaMetaDataLibraryType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetMediaMetaDataLibraryType); - - public bool Equals(GetMediaMetaDataLibraryType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLocation.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLocation.cs deleted file mode 100644 index 975936b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLocation.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataLocation - { - - /// - /// The file path for the location. - /// - [JsonProperty("path")] - public string Path { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMarker.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMarker.cs deleted file mode 100644 index a5e4f4f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMarker.cs +++ /dev/null @@ -1,43 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The final status of the marker - /// - public class GetMediaMetaDataMarker - { - - [JsonProperty("id")] - public long Id { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("startTimeOffset")] - public long StartTimeOffset { get; set; } = default!; - - [JsonProperty("endTimeOffset")] - public long EndTimeOffset { get; set; } = default!; - - [JsonProperty("final")] - public bool? Final { get; set; } - - /// - /// Attributes associated with the marker. - /// - [JsonProperty("Attributes")] - public GetMediaMetaDataAttributes? Attributes { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMedia.cs deleted file mode 100644 index 6a95825..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMedia.cs +++ /dev/null @@ -1,138 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetMediaMetaDataMedia - { - - /// - /// Unique media identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Duration of the media in milliseconds. - /// - [JsonProperty("duration")] - public int? Duration { get; set; } - - /// - /// Bitrate in bits per second. - /// - [JsonProperty("bitrate")] - public int? Bitrate { get; set; } - - /// - /// Video width in pixels. - /// - [JsonProperty("width")] - public int? Width { get; set; } - - /// - /// Video height in pixels. - /// - [JsonProperty("height")] - public int? Height { get; set; } - - /// - /// Aspect ratio of the video. - /// - [JsonProperty("aspectRatio")] - public float? AspectRatio { get; set; } - - /// - /// Number of audio channels. - /// - [JsonProperty("audioChannels")] - public int? AudioChannels { get; set; } - - [JsonProperty("displayOffset")] - public int? DisplayOffset { get; set; } - - /// - /// Audio codec used. - /// - [JsonProperty("audioCodec")] - public string? AudioCodec { get; set; } - - /// - /// Video codec used. - /// - [JsonProperty("videoCodec")] - public string? VideoCodec { get; set; } - - /// - /// Video resolution (e.g., 4k). - /// - [JsonProperty("videoResolution")] - public string? VideoResolution { get; set; } - - /// - /// Container format of the media. - /// - [JsonProperty("container")] - public string? Container { get; set; } - - /// - /// Frame rate of the video. Values found include NTSC, PAL, 24p
- /// - /// - /// - /// - ///
- [JsonProperty("videoFrameRate")] - public string? VideoFrameRate { get; set; } - - /// - /// Video profile (e.g., main 10). - /// - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - /// - /// Indicates whether voice activity is detected. - /// - [JsonProperty("hasVoiceActivity")] - public bool? HasVoiceActivity { get; set; } - - /// - /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). - /// - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonProperty("optimizedForStreaming")] - public GetMediaMetaDataOptimizedForStreaming? OptimizedForStreaming { get; set; } - - /// - /// Indicates whether the media has 64-bit offsets.
- /// - /// - /// This is relevant for media files that may require larger offsets than what 32-bit integers can provide.
- /// - ///
- ///
- [JsonProperty("has64bitOffsets")] - public bool? Has64bitOffsets { get; set; } - - [JsonProperty("Part")] - public List? Part { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMediaContainer.cs deleted file mode 100644 index 7560ec3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMediaContainer.cs +++ /dev/null @@ -1,74 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetMediaMetaDataMediaContainer - { - - /// - /// Number of media items returned in this response. - /// - [JsonProperty("size")] - public int Size { get; set; } = default!; - - /// - /// Indicates whether syncing is allowed. - /// - [JsonProperty("allowSync")] - public bool AllowSync { get; set; } = default!; - - /// - /// An plugin identifier for the media container. - /// - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - /// - /// The unique identifier for the library section. - /// - [JsonProperty("librarySectionID")] - public long? LibrarySectionID { get; set; } - - /// - /// The title of the library section. - /// - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - /// - /// The universally unique identifier for the library section. - /// - [JsonProperty("librarySectionUUID")] - public string? LibrarySectionUUID { get; set; } - - /// - /// The prefix used for media tag resource paths. - /// - [JsonProperty("mediaTagPrefix")] - public string MediaTagPrefix { get; set; } = default!; - - /// - /// The version number for media tags. - /// - [JsonProperty("mediaTagVersion")] - public long MediaTagVersion { get; set; } = default!; - - /// - /// An array of metadata items. - /// - [JsonProperty("Metadata")] - public List Metadata { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMetadata.cs deleted file mode 100644 index ba762ef..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMetadata.cs +++ /dev/null @@ -1,415 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using NodaTime; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Unknown
- /// - /// - /// - /// - ///
- public class GetMediaMetaDataMetadata - { - - /// - /// The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. - /// - [JsonProperty("ratingKey")] - public string RatingKey { get; set; } = default!; - - /// - /// The unique key for the media item. - /// - [JsonProperty("key")] - public string Key { get; set; } = default!; - - /// - /// The globally unique identifier for the media item. - /// - [JsonProperty("guid")] - public string Guid { get; set; } = default!; - - /// - /// A URL‐friendly version of the media title. - /// - [JsonProperty("slug")] - public string Slug { get; set; } = default!; - - /// - /// The studio that produced the media item. - /// - [JsonProperty("studio")] - public string? Studio { get; set; } - - [JsonProperty("type")] - public GetMediaMetaDataType Type { get; set; } = default!; - - /// - /// The title of the media item. - /// - [JsonProperty("title")] - public string Title { get; set; } = default!; - - /// - /// The sort title used for ordering media items. - /// - [JsonProperty("titleSort")] - public string TitleSort { get; set; } = default!; - - /// - /// The content rating for the media item. - /// - [JsonProperty("contentRating")] - public string? ContentRating { get; set; } - - /// - /// A synopsis of the media item. - /// - [JsonProperty("summary")] - public string Summary { get; set; } = default!; - - /// - /// The critic rating for the media item. - /// - [JsonProperty("rating")] - public float Rating { get; set; } = default!; - - /// - /// The audience rating for the media item. - /// - [JsonProperty("audienceRating")] - public double AudienceRating { get; set; } = default!; - - /// - /// The release year of the media item. - /// - [JsonProperty("year")] - public int? Year { get; set; } - - /// - /// A brief tagline for the media item. - /// - [JsonProperty("tagline")] - public string Tagline { get; set; } = default!; - - /// - /// The thumbnail image URL for the media item. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The art image URL for the media item. - /// - [JsonProperty("art")] - public string Art { get; set; } = default!; - - /// - /// The theme URL for the media item. - /// - [JsonProperty("theme")] - public string Theme { get; set; } = default!; - - /// - /// The index position of the media item. - /// - [JsonProperty("index")] - public int Index { get; set; } = default!; - - /// - /// The number of leaf items (end nodes) under this media item. - /// - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - /// - /// The number of leaf items that have been viewed. - /// - [JsonProperty("viewedLeafCount")] - public int? ViewedLeafCount { get; set; } - - /// - /// The number of child items associated with this media item. - /// - [JsonProperty("childCount")] - public int ChildCount { get; set; } = default!; - - /// - /// The total number of seasons (for TV shows). - /// - [JsonProperty("seasonCount")] - public int SeasonCount { get; set; } = default!; - - /// - /// The duration of the media item in milliseconds. - /// - [JsonProperty("duration")] - public int Duration { get; set; } = default!; - - /// - /// The original release date of the media item. - /// - [JsonProperty("originallyAvailableAt")] - public LocalDate? OriginallyAvailableAt { get; set; } - - [JsonProperty("addedAt")] - public long AddedAt { get; set; } = default!; - - /// - /// Unix epoch datetime in seconds - /// - [JsonProperty("updatedAt")] - public long? UpdatedAt { get; set; } - - /// - /// The URL for the audience rating image. - /// - [JsonProperty("audienceRatingImage")] - public string? AudienceRatingImage { get; set; } - - /// - /// The source from which chapter data is derived. - /// - [JsonProperty("chapterSource")] - public string? ChapterSource { get; set; } - - /// - /// The primary extra key associated with this media item. - /// - [JsonProperty("primaryExtraKey")] - public string? PrimaryExtraKey { get; set; } - - /// - /// The original title of the media item (if different). - /// - [JsonProperty("originalTitle")] - public string? OriginalTitle { get; set; } - - /// - /// The rating key of the parent media item. - /// - [JsonProperty("parentRatingKey")] - public string? ParentRatingKey { get; set; } - - /// - /// The rating key of the grandparent media item. - /// - [JsonProperty("grandparentRatingKey")] - public string? GrandparentRatingKey { get; set; } - - /// - /// The GUID of the parent media item. - /// - [JsonProperty("parentGuid")] - public string? ParentGuid { get; set; } - - /// - /// The GUID of the grandparent media item. - /// - [JsonProperty("grandparentGuid")] - public string? GrandparentGuid { get; set; } - - /// - /// The slug for the grandparent media item. - /// - [JsonProperty("grandparentSlug")] - public string? GrandparentSlug { get; set; } - - /// - /// The key of the grandparent media item. - /// - [JsonProperty("grandparentKey")] - public string? GrandparentKey { get; set; } - - /// - /// The key of the parent media item. - /// - [JsonProperty("parentKey")] - public string? ParentKey { get; set; } - - /// - /// The title of the grandparent media item. - /// - [JsonProperty("grandparentTitle")] - public string? GrandparentTitle { get; set; } - - /// - /// The thumbnail URL for the grandparent media item. - /// - [JsonProperty("grandparentThumb")] - public string? GrandparentThumb { get; set; } - - /// - /// The theme URL for the grandparent media item. - /// - [JsonProperty("grandparentTheme")] - public string? GrandparentTheme { get; set; } - - /// - /// The art URL for the grandparent media item. - /// - [JsonProperty("grandparentArt")] - public string? GrandparentArt { get; set; } - - /// - /// The title of the parent media item. - /// - [JsonProperty("parentTitle")] - public string? ParentTitle { get; set; } - - /// - /// The index position of the parent media item. - /// - [JsonProperty("parentIndex")] - public int? ParentIndex { get; set; } - - /// - /// The thumbnail URL for the parent media item. - /// - [JsonProperty("parentThumb")] - public string? ParentThumb { get; set; } - - /// - /// The URL for the rating image. - /// - [JsonProperty("ratingImage")] - public string? RatingImage { get; set; } - - /// - /// The number of times this media item has been viewed. - /// - [JsonProperty("viewCount")] - public int? ViewCount { get; set; } - - /// - /// The current playback offset (in milliseconds). - /// - [JsonProperty("viewOffset")] - public int? ViewOffset { get; set; } - - /// - /// The number of times this media item has been skipped. - /// - [JsonProperty("skipCount")] - public int? SkipCount { get; set; } - - /// - /// A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. - /// - [JsonProperty("subtype")] - public string? Subtype { get; set; } - - /// - /// The Unix timestamp representing the last time the item was rated. - /// - [JsonProperty("lastRatedAt")] - public long? LastRatedAt { get; set; } - - /// - /// The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). - /// - [JsonProperty("createdAtAccuracy")] - public string? CreatedAtAccuracy { get; set; } - - /// - /// The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. - /// - [JsonProperty("createdAtTZOffset")] - public string? CreatedAtTZOffset { get; set; } - - /// - /// Unix timestamp for when the media item was last viewed. - /// - [JsonProperty("lastViewedAt")] - public int? LastViewedAt { get; set; } - - /// - /// The rating provided by a user for the item. This value is expressed as a decimal number. - /// - [JsonProperty("userRating")] - public float? UserRating { get; set; } - - [JsonProperty("Image")] - public List? Image { get; set; } - - [JsonProperty("UltraBlurColors")] - public GetMediaMetaDataUltraBlurColors? UltraBlurColors { get; set; } - - /// - /// The identifier for the library section. - /// - [JsonProperty("librarySectionID")] - public long? LibrarySectionID { get; set; } - - /// - /// The title of the library section. - /// - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - /// - /// The key corresponding to the library section. - /// - [JsonProperty("librarySectionKey")] - public string? LibrarySectionKey { get; set; } - - [JsonProperty("Guid")] - public List? Guids { get; set; } - - [JsonProperty("Media")] - public List? Media { get; set; } - - [JsonProperty("Genre")] - public List? Genre { get; set; } - - [JsonProperty("Country")] - public List? Country { get; set; } - - [JsonProperty("Director")] - public List? Director { get; set; } - - [JsonProperty("Writer")] - public List? Writer { get; set; } - - [JsonProperty("Producer")] - public List? Producer { get; set; } - - [JsonProperty("Role")] - public List? Role { get; set; } - - [JsonProperty("Rating")] - public List? Ratings { get; set; } - - [JsonProperty("Similar")] - public List? Similar { get; set; } - - [JsonProperty("Location")] - public List? Location { get; set; } - - [JsonProperty("Chapter")] - public List? Chapter { get; set; } - - [JsonProperty("Marker")] - public List? Marker { get; set; } - - [JsonProperty("Extras")] - public GetMediaMetaDataExtras? Extras { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming.cs deleted file mode 100644 index 6344101..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming.cs +++ /dev/null @@ -1,203 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using Newtonsoft.Json.Linq; - using System; - using System.Collections.Generic; - using System.Numerics; - using System.Reflection; - - public class GetMediaMetaDataOptimizedForStreamingType - { - private GetMediaMetaDataOptimizedForStreamingType(string value) { Value = value; } - - public string Value { get; private set; } - - public static GetMediaMetaDataOptimizedForStreamingType GetMediaMetaDataOptimizedForStreaming1 { get { return new GetMediaMetaDataOptimizedForStreamingType("get-media-meta-data_optimizedForStreaming_1"); } } - - public static GetMediaMetaDataOptimizedForStreamingType Boolean { get { return new GetMediaMetaDataOptimizedForStreamingType("boolean"); } } - - public static GetMediaMetaDataOptimizedForStreamingType Null { get { return new GetMediaMetaDataOptimizedForStreamingType("null"); } } - - public override string ToString() { return Value; } - public static implicit operator String(GetMediaMetaDataOptimizedForStreamingType v) { return v.Value; } - public static GetMediaMetaDataOptimizedForStreamingType FromString(string v) { - switch(v) { - case "get-media-meta-data_optimizedForStreaming_1": return GetMediaMetaDataOptimizedForStreaming1; - case "boolean": return Boolean; - case "null": return Null; - default: throw new ArgumentException("Invalid value for GetMediaMetaDataOptimizedForStreamingType"); - } - } - public override bool Equals(object? obj) - { - if (obj == null || GetType() != obj.GetType()) - { - return false; - } - return Value.Equals(((GetMediaMetaDataOptimizedForStreamingType)obj).Value); - } - - public override int GetHashCode() - { - return Value.GetHashCode(); - } - } - - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonConverter(typeof(GetMediaMetaDataOptimizedForStreaming.GetMediaMetaDataOptimizedForStreamingConverter))] - public class GetMediaMetaDataOptimizedForStreaming - { - public GetMediaMetaDataOptimizedForStreaming(GetMediaMetaDataOptimizedForStreamingType type) - { - Type = type; - } - - [SpeakeasyMetadata("form:explode=true")] - public GetMediaMetaDataOptimizedForStreaming1? GetMediaMetaDataOptimizedForStreaming1 { get; set; } - - [SpeakeasyMetadata("form:explode=true")] - public bool? Boolean { get; set; } - - public GetMediaMetaDataOptimizedForStreamingType Type { get; set; } - public static GetMediaMetaDataOptimizedForStreaming CreateGetMediaMetaDataOptimizedForStreaming1(GetMediaMetaDataOptimizedForStreaming1 getMediaMetaDataOptimizedForStreaming1) - { - GetMediaMetaDataOptimizedForStreamingType typ = GetMediaMetaDataOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreaming1; - - GetMediaMetaDataOptimizedForStreaming res = new GetMediaMetaDataOptimizedForStreaming(typ); - res.GetMediaMetaDataOptimizedForStreaming1 = getMediaMetaDataOptimizedForStreaming1; - return res; - } - public static GetMediaMetaDataOptimizedForStreaming CreateBoolean(bool boolean) - { - GetMediaMetaDataOptimizedForStreamingType typ = GetMediaMetaDataOptimizedForStreamingType.Boolean; - - GetMediaMetaDataOptimizedForStreaming res = new GetMediaMetaDataOptimizedForStreaming(typ); - res.Boolean = boolean; - return res; - } - - public static GetMediaMetaDataOptimizedForStreaming CreateNull() - { - GetMediaMetaDataOptimizedForStreamingType typ = GetMediaMetaDataOptimizedForStreamingType.Null; - return new GetMediaMetaDataOptimizedForStreaming(typ); - } - - public class GetMediaMetaDataOptimizedForStreamingConverter : JsonConverter - { - - public override bool CanConvert(System.Type objectType) => objectType == typeof(GetMediaMetaDataOptimizedForStreaming); - - public override bool CanRead => true; - - public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) - { - var json = JRaw.Create(reader).ToString(); - if (json == "null") - { - return null; - } - - var fallbackCandidates = new List<(System.Type, object, string)>(); - - try - { - return new GetMediaMetaDataOptimizedForStreaming(GetMediaMetaDataOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreaming1) - { - GetMediaMetaDataOptimizedForStreaming1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) - }; - } - catch (ResponseBodyDeserializer.MissingMemberException) - { - fallbackCandidates.Add((typeof(GetMediaMetaDataOptimizedForStreaming1), new GetMediaMetaDataOptimizedForStreaming(GetMediaMetaDataOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreaming1), "GetMediaMetaDataOptimizedForStreaming1")); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next option - } - catch (Exception) - { - throw; - } - - try - { - var converted = Convert.ToBoolean(json); - return new GetMediaMetaDataOptimizedForStreaming(GetMediaMetaDataOptimizedForStreamingType.Boolean) - { - Boolean = converted - }; - } - catch (System.FormatException) - { - // try next option - } - - if (fallbackCandidates.Count > 0) - { - fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); - foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) - { - try - { - return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next fallback option - } - catch (Exception) - { - throw; - } - } - } - - throw new InvalidOperationException("Could not deserialize into any supported types."); - } - - public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) - { - if (value == null) { - writer.WriteRawValue("null"); - return; - } - - GetMediaMetaDataOptimizedForStreaming res = (GetMediaMetaDataOptimizedForStreaming)value; - if (GetMediaMetaDataOptimizedForStreamingType.FromString(res.Type).Equals(GetMediaMetaDataOptimizedForStreamingType.Null)) - { - writer.WriteRawValue("null"); - return; - } - - if (res.GetMediaMetaDataOptimizedForStreaming1 != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.GetMediaMetaDataOptimizedForStreaming1)); - return; - } - - if (res.Boolean != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); - return; - } - } - - } - - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming1.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming1.cs deleted file mode 100644 index a9fccbe..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming1.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum GetMediaMetaDataOptimizedForStreaming1 - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.cs deleted file mode 100644 index 7f665e1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum GetMediaMetaDataOptimizedForStreamingLibrary1 - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataPart.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataPart.cs deleted file mode 100644 index 3e3e06c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataPart.cs +++ /dev/null @@ -1,106 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetMediaMetaDataPart - { - - /// - /// Indicates if the part is accessible. - /// - [JsonProperty("accessible")] - public bool? Accessible { get; set; } - - /// - /// Indicates if the part exists. - /// - [JsonProperty("exists")] - public bool? Exists { get; set; } - - /// - /// Unique part identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Key to access this part. - /// - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("indexes")] - public string? Indexes { get; set; } - - /// - /// Duration of the part in milliseconds. - /// - [JsonProperty("duration")] - public int? Duration { get; set; } - - /// - /// File path for the part. - /// - [JsonProperty("file")] - public string? File { get; set; } - - /// - /// File size in bytes. - /// - [JsonProperty("size")] - public long? Size { get; set; } - - [JsonProperty("packetLength")] - public int? PacketLength { get; set; } - - /// - /// Container format of the part. - /// - [JsonProperty("container")] - public string? Container { get; set; } - - /// - /// Video profile for the part. - /// - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - /// - /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). - /// - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - [JsonProperty("has64bitOffsets")] - public bool? Has64bitOffsets { get; set; } - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
- /// - /// - /// - /// - ///
- [JsonProperty("optimizedForStreaming")] - public GetMediaMetaDataLibraryOptimizedForStreaming? OptimizedForStreaming { get; set; } - - [JsonProperty("hasThumbnail")] - public GetMediaMetaDataHasThumbnail? HasThumbnail { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetMediaMetaDataHasThumbnail.False; - - [JsonProperty("Stream")] - public List? Stream { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataProducer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataProducer.cs deleted file mode 100644 index 94d72a7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataProducer.cs +++ /dev/null @@ -1,54 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataProducer - { - - /// - /// The unique role identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// The filter string for the role. - /// - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - /// - /// The actor's name. - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// A key associated with the actor tag. - /// - [JsonProperty("tagKey")] - public string TagKey { get; set; } = default!; - - /// - /// The character name or role. - /// - [JsonProperty("role")] - public string? Role { get; set; } - - /// - /// URL for the role thumbnail image. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRatings.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRatings.cs deleted file mode 100644 index 1b3f579..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRatings.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataRatings - { - - /// - /// The image or reference for the rating. - /// - [JsonProperty("image")] - public string Image { get; set; } = default!; - - /// - /// The rating value. - /// - [JsonProperty("value")] - public float Value { get; set; } = default!; - - /// - /// The type of rating (e.g., audience, critic). - /// - [JsonProperty("type")] - public string Type { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRequest.cs deleted file mode 100644 index fd884b7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRequest.cs +++ /dev/null @@ -1,101 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetMediaMetaDataRequest - { - - /// - /// The id(s) of the library item(s) to return metadata for. Can be a single ID or comma-separated list of IDs. - /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")] - public string RatingKey { get; set; } = default!; - - /// - /// Include concerts data if set to true. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeConcerts")] - public bool? IncludeConcerts { get; set; } - - /// - /// Include extra content (e.g. bonus features). - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeExtras")] - public bool? IncludeExtras { get; set; } - - /// - /// Include on-deck items. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeOnDeck")] - public bool? IncludeOnDeck { get; set; } - - /// - /// Include popular leaves (episodes/chapters). - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includePopularLeaves")] - public bool? IncludePopularLeaves { get; set; } - - /// - /// Include preferences information. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includePreferences")] - public bool? IncludePreferences { get; set; } - - /// - /// Include reviews for the content. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeReviews")] - public bool? IncludeReviews { get; set; } - - /// - /// Include chapter details. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeChapters")] - public bool? IncludeChapters { get; set; } - - /// - /// Include station data. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeStations")] - public bool? IncludeStations { get; set; } - - /// - /// Include external media data. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeExternalMedia")] - public bool? IncludeExternalMedia { get; set; } - - /// - /// Trigger asynchronous metadata augmentation. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=asyncAugmentMetadata")] - public bool? AsyncAugmentMetadata { get; set; } - - /// - /// Trigger asynchronous file checking. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=asyncCheckFiles")] - public bool? AsyncCheckFiles { get; set; } - - /// - /// Trigger asynchronous refresh of analysis. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=asyncRefreshAnalysis")] - public bool? AsyncRefreshAnalysis { get; set; } - - /// - /// Trigger asynchronous refresh of the local media agent. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=asyncRefreshLocalMediaAgent")] - public bool? AsyncRefreshLocalMediaAgent { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataResponse.cs deleted file mode 100644 index cad7f42..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetMediaMetaDataResponse - { - - /// - /// 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 metadata of the library item. - /// - public GetMediaMetaDataResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataResponseBody.cs deleted file mode 100644 index ed6e84c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The metadata of the library item. - /// - public class GetMediaMetaDataResponseBody - { - - [JsonProperty("MediaContainer")] - public GetMediaMetaDataMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRole.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRole.cs deleted file mode 100644 index 119ce0a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRole.cs +++ /dev/null @@ -1,64 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataRole - { - - /// - /// The unique identifier for the role.
- /// - /// - /// NOTE: This is different for each Plex server and is not globally unique.
- /// - ///
- ///
- [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The display tag for the actor (typically the actor's name). - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// The role played by the actor in the media item. - /// - [JsonProperty("role")] - public string? Role { get; set; } - - /// - /// The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. - /// - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - /// - /// A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification.
- /// - /// - /// NOTE: This is globally unique across all Plex Servers.
- /// - ///
- ///
- [JsonProperty("tagKey")] - public string TagKey { get; set; } = default!; - - /// - /// The absolute URL of the thumbnail image for the actor. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataSimilar.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataSimilar.cs deleted file mode 100644 index 69a6e6f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataSimilar.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataSimilar - { - - /// - /// The unique similar item identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// The filter string for similar items. - /// - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - /// - /// The tag or title of the similar content. - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataStream.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataStream.cs deleted file mode 100644 index 0d9839b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataStream.cs +++ /dev/null @@ -1,316 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataStream - { - - /// - /// Unique stream identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Stream type:
- /// - /// - /// - VIDEO = 1
- /// - AUDIO = 2
- /// - SUBTITLE = 3
- /// - ///
- ///
- [JsonProperty("streamType")] - public long StreamType { get; } = 1; - - /// - /// Format of the stream (e.g., srt). - /// - [JsonProperty("format")] - public string? Format { get; set; } - - /// - /// Indicates if this stream is default. - /// - [JsonProperty("default")] - public bool? Default { get; set; } - - /// - /// Codec used by the stream. - /// - [JsonProperty("codec")] - public string? Codec { get; set; } - - /// - /// Index of the stream. - /// - [JsonProperty("index")] - public int? Index { get; set; } - - /// - /// Bitrate of the stream. - /// - [JsonProperty("bitrate")] - public int? Bitrate { get; set; } - - /// - /// Language of the stream. - /// - [JsonProperty("language")] - public string? Language { get; set; } - - /// - /// Language tag (e.g., en). - /// - [JsonProperty("languageTag")] - public string? LanguageTag { get; set; } - - /// - /// ISO language code. - /// - [JsonProperty("languageCode")] - public string? LanguageCode { get; set; } - - /// - /// Indicates whether header compression is enabled. - /// - [JsonProperty("headerCompression")] - public bool? HeaderCompression { get; set; } - - /// - /// Dolby Vision BL compatibility ID. - /// - [JsonProperty("DOVIBLCompatID")] - public int? DOVIBLCompatID { get; set; } - - /// - /// Indicates if Dolby Vision BL is present. - /// - [JsonProperty("DOVIBLPresent")] - public bool? DOVIBLPresent { get; set; } - - /// - /// Indicates if Dolby Vision EL is present. - /// - [JsonProperty("DOVIELPresent")] - public bool? DOVIELPresent { get; set; } - - /// - /// Dolby Vision level. - /// - [JsonProperty("DOVILevel")] - public int? DOVILevel { get; set; } - - /// - /// Indicates if Dolby Vision is present. - /// - [JsonProperty("DOVIPresent")] - public bool? DOVIPresent { get; set; } - - /// - /// Dolby Vision profile. - /// - [JsonProperty("DOVIProfile")] - public int? DOVIProfile { get; set; } - - /// - /// Indicates if Dolby Vision RPU is present. - /// - [JsonProperty("DOVIRPUPresent")] - public bool? DOVIRPUPresent { get; set; } - - /// - /// Dolby Vision version. - /// - [JsonProperty("DOVIVersion")] - public string? DOVIVersion { get; set; } - - /// - /// Bit depth of the video stream. - /// - [JsonProperty("bitDepth")] - public int? BitDepth { get; set; } - - /// - /// Chroma sample location. - /// - [JsonProperty("chromaLocation")] - public string? ChromaLocation { get; set; } - - /// - /// Chroma subsampling format. - /// - [JsonProperty("chromaSubsampling")] - public string? ChromaSubsampling { get; set; } - - /// - /// Coded video height. - /// - [JsonProperty("codedHeight")] - public int? CodedHeight { get; set; } - - /// - /// Coded video width. - /// - [JsonProperty("codedWidth")] - public int? CodedWidth { get; set; } - - [JsonProperty("closedCaptions")] - public bool? ClosedCaptions { get; set; } - - /// - /// Color primaries used. - /// - [JsonProperty("colorPrimaries")] - public string? ColorPrimaries { get; set; } - - /// - /// Color range (e.g., tv). - /// - [JsonProperty("colorRange")] - public string? ColorRange { get; set; } - - /// - /// Color space. - /// - [JsonProperty("colorSpace")] - public string? ColorSpace { get; set; } - - /// - /// Color transfer characteristics. - /// - [JsonProperty("colorTrc")] - public string? ColorTrc { get; set; } - - /// - /// Frame rate of the stream. - /// - [JsonProperty("frameRate")] - public float? FrameRate { get; set; } - - /// - /// Key to access this stream part. - /// - [JsonProperty("key")] - public string? Key { get; set; } - - /// - /// Height of the video stream. - /// - [JsonProperty("height")] - public int? Height { get; set; } - - /// - /// Video level. - /// - [JsonProperty("level")] - public int? Level { get; set; } - - /// - /// Indicates if this is the original stream. - /// - [JsonProperty("original")] - public bool? Original { get; set; } - - [JsonProperty("hasScalingMatrix")] - public bool? HasScalingMatrix { get; set; } - - /// - /// Video profile. - /// - [JsonProperty("profile")] - public string? Profile { get; set; } - - [JsonProperty("scanType")] - public string? ScanType { get; set; } - - [JsonProperty("embeddedInVideo")] - public string? EmbeddedInVideo { get; set; } - - /// - /// Number of reference frames. - /// - [JsonProperty("refFrames")] - public int? RefFrames { get; set; } - - /// - /// Width of the video stream. - /// - [JsonProperty("width")] - public int? Width { get; set; } - - /// - /// Display title for the stream. - /// - [JsonProperty("displayTitle")] - public string? DisplayTitle { get; set; } - - /// - /// Extended display title for the stream. - /// - [JsonProperty("extendedDisplayTitle")] - public string? ExtendedDisplayTitle { get; set; } - - /// - /// Indicates if this stream is selected (applicable for audio streams). - /// - [JsonProperty("selected")] - public bool? Selected { get; set; } - - [JsonProperty("forced")] - public bool? Forced { get; set; } - - /// - /// Number of audio channels (for audio streams). - /// - [JsonProperty("channels")] - public int? Channels { get; set; } - - /// - /// Audio channel layout. - /// - [JsonProperty("audioChannelLayout")] - public string? AudioChannelLayout { get; set; } - - /// - /// Sampling rate for the audio stream. - /// - [JsonProperty("samplingRate")] - public int? SamplingRate { get; set; } - - /// - /// Indicates if the stream can auto-sync. - /// - [JsonProperty("canAutoSync")] - public bool? CanAutoSync { get; set; } - - /// - /// Indicates if the stream is for the hearing impaired. - /// - [JsonProperty("hearingImpaired")] - public bool? HearingImpaired { get; set; } - - /// - /// Indicates if the stream is a dub. - /// - [JsonProperty("dub")] - public bool? Dub { get; set; } - - /// - /// Optional title for the stream (e.g., language variant). - /// - [JsonProperty("title")] - public string? Title { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataType.cs deleted file mode 100644 index cded03e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataType.cs +++ /dev/null @@ -1,98 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media content in the Plex library. This can represent videos, music, or photos.
- /// - /// - /// - /// - ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetMediaMetaDataType : IEquatable - { - public static readonly GetMediaMetaDataType Movie = new GetMediaMetaDataType("movie"); - public static readonly GetMediaMetaDataType TvShow = new GetMediaMetaDataType("show"); - public static readonly GetMediaMetaDataType Season = new GetMediaMetaDataType("season"); - public static readonly GetMediaMetaDataType Episode = new GetMediaMetaDataType("episode"); - public static readonly GetMediaMetaDataType Artist = new GetMediaMetaDataType("artist"); - public static readonly GetMediaMetaDataType Album = new GetMediaMetaDataType("album"); - public static readonly GetMediaMetaDataType Track = new GetMediaMetaDataType("track"); - public static readonly GetMediaMetaDataType PhotoAlbum = new GetMediaMetaDataType("photoalbum"); - public static readonly GetMediaMetaDataType Photo = new GetMediaMetaDataType("photo"); - public static readonly GetMediaMetaDataType Collection = new GetMediaMetaDataType("collection"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["movie"] = Movie, - ["show"] = TvShow, - ["season"] = Season, - ["episode"] = Episode, - ["artist"] = Artist, - ["album"] = Album, - ["track"] = Track, - ["photoalbum"] = PhotoAlbum, - ["photo"] = Photo, - ["collection"] = Collection - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetMediaMetaDataType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetMediaMetaDataType Of(string value) - { - return _values.GetOrAdd(value, _ => new GetMediaMetaDataType(value)); - } - - public static implicit operator GetMediaMetaDataType(string value) => Of(value); - public static implicit operator string(GetMediaMetaDataType getmediametadatatype) => getmediametadatatype.Value; - - public static GetMediaMetaDataType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetMediaMetaDataType); - - public bool Equals(GetMediaMetaDataType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataUltraBlurColors.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataUltraBlurColors.cs deleted file mode 100644 index aabd5d9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataUltraBlurColors.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataUltraBlurColors - { - - [JsonProperty("topLeft")] - public string TopLeft { get; set; } = default!; - - [JsonProperty("topRight")] - public string TopRight { get; set; } = default!; - - [JsonProperty("bottomRight")] - public string BottomRight { get; set; } = default!; - - [JsonProperty("bottomLeft")] - public string BottomLeft { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataWriter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataWriter.cs deleted file mode 100644 index f6f1dd3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataWriter.cs +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaMetaDataWriter - { - - /// - /// Unique identifier for the writer. - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The role of Writer - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// The filter string used to query this writer. - /// - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - /// - /// The absolute URL of the thumbnail image for the writer. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - /// - /// A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification. - /// - [JsonProperty("tagKey")] - public string? TagKey { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPartRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPartRequest.cs new file mode 100644 index 0000000..99098b4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPartRequest.cs @@ -0,0 +1,108 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetMediaPartRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The part id who's index is to be fetched + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=partId")] + public long PartId { get; set; } = default!; + + /// + /// The changestamp of the part; used for busting potential caches. Provided in the `key` for the part + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=changestamp")] + public long Changestamp { get; set; } = default!; + + /// + /// A generic filename used for a client media stack which relies on the extension in the request. Provided in the `key` for the part + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=filename")] + public string Filename { get; set; } = default!; + + /// + /// Whether this is a file download + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=download")] + public BoolInt? Download { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPartResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPartResponse.cs new file mode 100644 index 0000000..308dec2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPartResponse.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetMediaPartResponse + { + + /// + /// 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!; + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersMediaContainer.cs deleted file mode 100644 index e09f9cc..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersMediaContainer.cs +++ /dev/null @@ -1,47 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetMediaPostersMediaContainer - { - - /// - /// Number of media items returned in this response. - /// - [JsonProperty("size")] - public int Size { get; set; } = default!; - - /// - /// The version number for media tags. - /// - [JsonProperty("mediaTagVersion")] - public long MediaTagVersion { get; set; } = default!; - - /// - /// The prefix used for media tag resource paths. - /// - [JsonProperty("mediaTagPrefix")] - public string MediaTagPrefix { get; set; } = default!; - - /// - /// An plugin identifier for the media container. - /// - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - [JsonProperty("Metadata")] - public List Metadata { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersMetadata.cs deleted file mode 100644 index 0e33f3a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersMetadata.cs +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMediaPostersMetadata - { - - /// - /// The URL of the poster. - /// - [JsonProperty("key")] - public string Key { get; set; } = default!; - - /// - /// The provider of the poster. - /// - [JsonProperty("provider")] - public string? Provider { get; set; } - - /// - /// The URL of the poster. - /// - [JsonProperty("ratingKey")] - public string RatingKey { get; set; } = default!; - - /// - /// Whether this is the selected poster. - /// - [JsonProperty("selected")] - public bool Selected { get; set; } = default!; - - /// - /// The URL of the poster thumbnail. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersRequest.cs deleted file mode 100644 index 8fd4473..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersRequest.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetMediaPostersRequest - { - - /// - /// the id of the library item to return the posters of. - /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")] - public long RatingKey { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersResponse.cs deleted file mode 100644 index 2465cf6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetMediaPostersResponse - { - - /// - /// 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 available posters for the library item. - /// - public GetMediaPostersResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersResponseBody.cs deleted file mode 100644 index 563370a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaPostersResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The available posters for the library item. - /// - public class GetMediaPostersResponseBody - { - - [JsonProperty("MediaContainer")] - public GetMediaPostersMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersDirectory.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersDirectory.cs deleted file mode 100644 index 37ea17f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersDirectory.cs +++ /dev/null @@ -1,62 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetMediaProvidersDirectory - { - - [JsonProperty("hubKey")] - public string? HubKey { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("agent")] - public string? Agent { get; set; } - - [JsonProperty("language")] - public string? Language { get; set; } - - [JsonProperty("refreshing")] - public bool? Refreshing { get; set; } - - [JsonProperty("scanner")] - public string? Scanner { get; set; } - - [JsonProperty("uuid")] - public string? Uuid { get; set; } - - [JsonProperty("id")] - public string? Id { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("subtype")] - public string? Subtype { get; set; } - - [JsonProperty("updatedAt")] - public long? UpdatedAt { get; set; } - - [JsonProperty("scannedAt")] - public long? ScannedAt { get; set; } - - [JsonProperty("Pivot")] - public List? Pivot { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersMediaContainer.cs deleted file mode 100644 index ef43b79..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersMediaContainer.cs +++ /dev/null @@ -1,152 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetMediaProvidersMediaContainer - { - - [JsonProperty("size")] - public long? Size { get; set; } - - [JsonProperty("allowCameraUpload")] - public bool? AllowCameraUpload { get; set; } - - [JsonProperty("allowChannelAccess")] - public bool? AllowChannelAccess { get; set; } - - [JsonProperty("allowSharing")] - public bool? AllowSharing { get; set; } - - [JsonProperty("allowSync")] - public bool? AllowSync { get; set; } - - [JsonProperty("allowTuners")] - public bool? AllowTuners { get; set; } - - [JsonProperty("backgroundProcessing")] - public bool? BackgroundProcessing { get; set; } - - [JsonProperty("certificate")] - public bool? Certificate { get; set; } - - [JsonProperty("companionProxy")] - public bool? CompanionProxy { get; set; } - - [JsonProperty("countryCode")] - public string? CountryCode { get; set; } - - [JsonProperty("diagnostics")] - public string? Diagnostics { get; set; } - - [JsonProperty("eventStream")] - public bool? EventStream { get; set; } - - [JsonProperty("friendlyName")] - public string? FriendlyName { get; set; } - - [JsonProperty("livetv")] - public long? Livetv { get; set; } - - [JsonProperty("machineIdentifier")] - public string? MachineIdentifier { get; set; } - - [JsonProperty("musicAnalysis")] - public long? MusicAnalysis { get; set; } - - [JsonProperty("myPlex")] - public bool? MyPlex { get; set; } - - [JsonProperty("myPlexMappingState")] - public string? MyPlexMappingState { get; set; } - - [JsonProperty("myPlexSigninState")] - public string? MyPlexSigninState { get; set; } - - [JsonProperty("myPlexSubscription")] - public bool? MyPlexSubscription { get; set; } - - [JsonProperty("myPlexUsername")] - public string? MyPlexUsername { get; set; } - - [JsonProperty("offlineTranscode")] - public long? OfflineTranscode { get; set; } - - [JsonProperty("ownerFeatures")] - public string? OwnerFeatures { get; set; } - - [JsonProperty("platform")] - public string? Platform { get; set; } - - [JsonProperty("platformVersion")] - public string? PlatformVersion { get; set; } - - [JsonProperty("pluginHost")] - public bool? PluginHost { get; set; } - - [JsonProperty("pushNotifications")] - public bool? PushNotifications { get; set; } - - [JsonProperty("readOnlyLibraries")] - public bool? ReadOnlyLibraries { get; set; } - - [JsonProperty("streamingBrainABRVersion")] - public long? StreamingBrainABRVersion { get; set; } - - [JsonProperty("streamingBrainVersion")] - public long? StreamingBrainVersion { get; set; } - - [JsonProperty("sync")] - public bool? Sync { get; set; } - - [JsonProperty("transcoderActiveVideoSessions")] - public long? TranscoderActiveVideoSessions { get; set; } - - [JsonProperty("transcoderAudio")] - public bool? TranscoderAudio { get; set; } - - [JsonProperty("transcoderLyrics")] - public bool? TranscoderLyrics { get; set; } - - [JsonProperty("transcoderSubtitles")] - public bool? TranscoderSubtitles { get; set; } - - [JsonProperty("transcoderVideo")] - public bool? TranscoderVideo { get; set; } - - [JsonProperty("transcoderVideoBitrates")] - public string? TranscoderVideoBitrates { get; set; } - - [JsonProperty("transcoderVideoQualities")] - public string? TranscoderVideoQualities { get; set; } - - [JsonProperty("transcoderVideoResolutions")] - public string? TranscoderVideoResolutions { get; set; } - - [JsonProperty("updatedAt")] - public long? UpdatedAt { get; set; } - - [JsonProperty("updater")] - public bool? Updater { get; set; } - - [JsonProperty("version")] - public string? Version { get; set; } - - [JsonProperty("voiceSearch")] - public bool? VoiceSearch { get; set; } - - [JsonProperty("MediaProvider")] - public List? MediaProvider { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersRequest.cs deleted file mode 100644 index 715e9a0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersRequest.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetMediaProvidersRequest - { - - /// - /// An authentication token, obtained from plex.tv - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Token")] - public string XPlexToken { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersResponse.cs deleted file mode 100644 index 38f60ab..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetMediaProvidersResponse - { - - /// - /// 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!; - - /// - /// Media providers and their features - /// - public GetMediaProvidersResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersResponseBody.cs deleted file mode 100644 index d2d17ca..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaProvidersResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Media providers and their features - /// - public class GetMediaProvidersResponseBody - { - - [JsonProperty("MediaContainer")] - public GetMediaProvidersMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenDirectory.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenDirectory.cs deleted file mode 100644 index 5b066f4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenDirectory.cs +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMetadataChildrenDirectory - { - - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - [JsonProperty("viewedLeafCount")] - public int? ViewedLeafCount { 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenMediaContainer.cs deleted file mode 100644 index 4eddb4d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenMediaContainer.cs +++ /dev/null @@ -1,89 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetMetadataChildrenMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("allowSync")] - public bool? AllowSync { get; set; } - - [JsonProperty("art")] - public string? Art { get; set; } - - [JsonProperty("identifier")] - public string? Identifier { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("librarySectionID")] - public int? LibrarySectionID { get; set; } - - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - [JsonProperty("librarySectionUUID")] - public string? LibrarySectionUUID { get; set; } - - [JsonProperty("mediaTagPrefix")] - public string? MediaTagPrefix { get; set; } - - [JsonProperty("mediaTagVersion")] - public int? MediaTagVersion { get; set; } - - [JsonProperty("nocache")] - public bool? Nocache { get; set; } - - [JsonProperty("parentIndex")] - public int? ParentIndex { get; set; } - - [JsonProperty("parentTitle")] - public string? ParentTitle { get; set; } - - [JsonProperty("parentYear")] - public int? ParentYear { get; set; } - - [JsonProperty("summary")] - public string? Summary { get; set; } - - [JsonProperty("theme")] - public string? Theme { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - [JsonProperty("title1")] - public string? Title1 { get; set; } - - [JsonProperty("title2")] - public string? Title2 { get; set; } - - [JsonProperty("viewGroup")] - public string? ViewGroup { get; set; } - - [JsonProperty("viewMode")] - public int? ViewMode { get; set; } - - [JsonProperty("Directory")] - public List? Directory { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenMetadata.cs deleted file mode 100644 index b98f733..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenMetadata.cs +++ /dev/null @@ -1,99 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetMetadataChildrenMetadata - { - - [JsonProperty("ratingKey")] - public string? RatingKey { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("parentRatingKey")] - public string? ParentRatingKey { get; set; } - - [JsonProperty("guid")] - public string? Guid { get; set; } - - [JsonProperty("parentGuid")] - public string? ParentGuid { get; set; } - - [JsonProperty("parentStudio")] - public string? ParentStudio { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("parentKey")] - public string? ParentKey { get; set; } - - [JsonProperty("parentTitle")] - public string? ParentTitle { get; set; } - - [JsonProperty("summary")] - public string? Summary { get; set; } - - [JsonProperty("index")] - public int? Index { get; set; } - - [JsonProperty("parentIndex")] - public int? ParentIndex { get; set; } - - [JsonProperty("viewCount")] - public int? ViewCount { get; set; } - - [JsonProperty("lastViewedAt")] - public int? LastViewedAt { get; set; } - - [JsonProperty("parentYear")] - public int? ParentYear { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - [JsonProperty("art")] - public string? Art { get; set; } - - [JsonProperty("parentThumb")] - public string? ParentThumb { get; set; } - - [JsonProperty("parentTheme")] - public string? ParentTheme { get; set; } - - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - [JsonProperty("viewedLeafCount")] - public int? ViewedLeafCount { get; set; } - - [JsonProperty("addedAt")] - public int? AddedAt { get; set; } - - [JsonProperty("updatedAt")] - public int? UpdatedAt { get; set; } - - [JsonProperty("userRating")] - public int? UserRating { get; set; } - - [JsonProperty("skipCount")] - public int? SkipCount { get; set; } - - [JsonProperty("lastRatedAt")] - public int? LastRatedAt { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenRequest.cs deleted file mode 100644 index 802221d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenRequest.cs +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.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!; - - /// - /// Adds additional elements to the response. Supported types are (Stream)
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeElements")] - public string? IncludeElements { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenResponse.cs deleted file mode 100644 index 83bbdb5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - - /// - /// The children of the library item. - /// - public GetMetadataChildrenResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenResponseBody.cs deleted file mode 100644 index 1b03afa..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The children of the library item. - /// - public class GetMetadataChildrenResponseBody - { - - [JsonProperty("MediaContainer")] - public GetMetadataChildrenMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataHubsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataHubsRequest.cs new file mode 100644 index 0000000..9b80bca --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataHubsRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetMetadataHubsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The metadata ID for the hubs to fetch + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=metadataId")] + public long MetadataId { get; set; } = default!; + + /// + /// Limit results to count items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=count")] + public long? 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 BoolInt? OnlyTransient { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataHubsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataHubsResponse.cs new file mode 100644 index 0000000..d5ef3b5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataHubsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetMetadataHubsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithHubs? MediaContainerWithHubs { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataItemRequest.cs new file mode 100644 index 0000000..e053b8d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataItemRequest.cs @@ -0,0 +1,136 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class GetMetadataItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public List Ids { get; set; } = default!; + + /// + /// Determines if file check should be performed asynchronously. An activity is created to indicate progress. Default is false. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=asyncCheckFiles")] + public BoolInt? AsyncCheckFiles { get; set; } + + /// + /// Determines if local media agent refresh should be performed asynchronously. An activity is created to indicate progress. Default is false. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=asyncRefreshLocalMediaAgent")] + public BoolInt? AsyncRefreshLocalMediaAgent { get; set; } + + /// + /// Determines if analysis refresh should be performed asynchronously. An activity is created to indicate progress. Default is false. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=asyncRefreshAnalysis")] + public BoolInt? AsyncRefreshAnalysis { get; set; } + + /// + /// Determines if file check should be performed synchronously. Specifying `asyncCheckFiles` will cause this option to be ignored. Default is false. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=checkFiles")] + public BoolInt? CheckFiles { get; set; } + + /// + /// Determines if synchronous local media agent and analysis refresh should be skipped. Specifying async versions will cause synchronous versions to be skipped. Default is false. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=skipRefresh")] + public BoolInt? SkipRefresh { get; set; } + + /// + /// Determines if file existence check should be performed synchronously. Specifying `checkFiles` will imply this option. Default is false. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=checkFileAvailability")] + public BoolInt? CheckFileAvailability { get; set; } + + /// + /// Add metadata augmentations. An activity is created to indicate progress. Option will be ignored if specified by non-admin or if multiple metadata items are requested. Default is false. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=asyncAugmentMetadata")] + public BoolInt? AsyncAugmentMetadata { get; set; } + + /// + /// Number of augmentations to add. Requires `asyncAugmentMetadata` to be specified. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=augmentCount")] + public BoolInt? AugmentCount { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataItemResponse.cs new file mode 100644 index 0000000..8135900 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataItemResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetMetadataItemResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMyPlexAccountResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMyPlexAccountResponse.cs deleted file mode 100644 index 219a6c7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMyPlexAccountResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMyPlexAccountResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMyPlexAccountResponseBody.cs deleted file mode 100644 index 65aaf61..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMyPlexAccountResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// MyPlex Account - /// - public class GetMyPlexAccountResponseBody - { - - [JsonProperty("MyPlex")] - public MyPlex? MyPlex { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetNotificationsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetNotificationsRequest.cs new file mode 100644 index 0000000..e85df75 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetNotificationsRequest.cs @@ -0,0 +1,100 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class GetNotificationsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example:
+ /// + /// + ///
+ /// - `filters=-log`: All event types except logs (the default).
+ /// - `filters=foo,bar`: Only the foo and bar event types.
+ /// - `filters=`: All events types.
+ /// - `filters=-foo,bar`: All event types except foo and bar.
+ /// + ///
+ ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=filter")] + public List? Filter { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetNotificationsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetNotificationsResponse.cs new file mode 100644 index 0000000..328459b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetNotificationsResponse.cs @@ -0,0 +1,39 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetNotificationsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public byte[]? Bytes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPartIndexRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPartIndexRequest.cs new file mode 100644 index 0000000..daa3abd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPartIndexRequest.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetPartIndexRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The part id who's index is to be fetched + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=partId")] + public long PartId { get; set; } = default!; + + /// + /// The type of index to grab. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=index")] + public Index Index { get; set; } = default!; + + /// + /// The interval between images to return in ms. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=interval")] + public long? Interval { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPartIndexResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPartIndexResponse.cs new file mode 100644 index 0000000..48a93a3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPartIndexResponse.cs @@ -0,0 +1,39 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetPartIndexResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public byte[]? Bytes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonMediaContainer.cs new file mode 100644 index 0000000..0260fcf --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetPersonMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Directory")] + public List? Directory { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonRequest.cs new file mode 100644 index 0000000..b18b8d7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetPersonRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=personId")] + public string PersonId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonResponse.cs new file mode 100644 index 0000000..fc87497 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetPersonResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetPersonResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonResponseBody.cs new file mode 100644 index 0000000..a4e1102 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPersonResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetPersonResponseBody + { + + [JsonProperty("MediaContainer")] + public GetPersonMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPinAuthPinContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPinAuthPinContainer.cs deleted file mode 100644 index 0eb34ad..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPinAuthPinContainer.cs +++ /dev/null @@ -1,68 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// Requests a new pin id used in the authentication flow - /// - public class GetPinAuthPinContainer - { - - [JsonProperty("id")] - public long Id { get; set; } = default!; - - [JsonProperty("code")] - public string Code { get; set; } = default!; - - [JsonProperty("product")] - public string Product { get; set; } = default!; - - [JsonProperty("trusted")] - public bool? Trusted { get; set; } = false; - - [JsonProperty("qr")] - public string Qr { get; set; } = default!; - - /// - /// The X-Client-Identifier used in the request - /// - [JsonProperty("clientIdentifier")] - public string ClientIdentifier { get; set; } = default!; - - /// - /// Geo location data - /// - [JsonProperty("location")] - public GeoData Location { get; set; } = default!; - - /// - /// The number of seconds this pin expires, by default 900 seconds - /// - [JsonProperty("expiresIn")] - public long? ExpiresIn { get; set; } = 900; - - [JsonProperty("createdAt")] - public DateTime CreatedAt { get; set; } = default!; - - [JsonProperty("expiresAt")] - public DateTime ExpiresAt { get; set; } = default!; - - [JsonProperty("authToken")] - public string? AuthToken { get; set; } = null; - - [JsonProperty("newRegistration")] - public object? NewRegistration { get; set; } = null; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPinRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPinRequest.cs deleted file mode 100644 index 3699187..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPinRequest.cs +++ /dev/null @@ -1,59 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetPinRequest - { - - /// - /// Determines the kind of code returned by the API call
- /// - /// - /// Strong codes are used for Pin authentication flows
- /// Non-Strong codes are used for `Plex.tv/link`
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=strong")] - public bool? Strong { get; set; } = false; - - /// - /// An opaque identifier unique to the client (UUID, serial number, or other unique device ID) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] - public string ClientID { get; set; } = default!; - - /// - /// The name of the client application. (Plex Web, Plex Media Server, etc.) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] - public string? ClientName { get; set; } - - /// - /// A relatively friendly name for the client device - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] - public string? DeviceNickname { get; set; } - - /// - /// The version of the client application. - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] - public string? ClientVersion { get; set; } - - /// - /// The platform of the client application. - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] - public string? Platform { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPinResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPinResponse.cs deleted file mode 100644 index 0c6c1aa..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPinResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetPinResponse - { - - /// - /// 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!; - - /// - /// Requests a new pin id used in the authentication flow - /// - public GetPinAuthPinContainer? AuthPinContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlayQueueRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlayQueueRequest.cs new file mode 100644 index 0000000..08b493d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlayQueueRequest.cs @@ -0,0 +1,120 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetPlayQueueRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the play queue. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playQueueId")] + public long PlayQueueId { get; set; } = default!; + + /// + /// If the server should transfer ownership to the requesting client (used in remote control scenarios). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=own")] + public BoolInt? Own { get; set; } + + /// + /// The play queue item ID for the center of the window - this doesn't change the current selected item. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=center")] + public string? Center { get; set; } + + /// + /// How many items on each side of the center of the window + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=window")] + public long? Window { get; set; } + + /// + /// Whether to include the items before the center (if 0, center is not included either), defaults to 1. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeBefore")] + public BoolInt? IncludeBefore { get; set; } + + /// + /// Whether to include the items after the center (if 0, center is not included either), defaults to 1. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeAfter")] + public BoolInt? IncludeAfter { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlayQueueResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlayQueueResponse.cs new file mode 100644 index 0000000..784fcde --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlayQueueResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetPlayQueueResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsCountry.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsCountry.cs deleted file mode 100644 index 3b15647..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsCountry.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistContentsCountry - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsDirector.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsDirector.cs deleted file mode 100644 index 5792d86..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsDirector.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistContentsDirector - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsGenre.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsGenre.cs deleted file mode 100644 index e256c7e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsGenre.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistContentsGenre - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMedia.cs deleted file mode 100644 index 9acad9b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMedia.cs +++ /dev/null @@ -1,71 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetPlaylistContentsMedia - { - - [JsonProperty("id")] - public int? Id { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("bitrate")] - public int? Bitrate { get; set; } - - [JsonProperty("width")] - public int? Width { get; set; } - - [JsonProperty("height")] - public int? Height { get; set; } - - [JsonProperty("aspectRatio")] - public double? AspectRatio { get; set; } - - [JsonProperty("audioChannels")] - public int? 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("optimizedForStreaming")] - public int? OptimizedForStreaming { get; set; } - - [JsonProperty("audioProfile")] - public string? AudioProfile { 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMediaContainer.cs deleted file mode 100644 index c2a7dbe..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMediaContainer.cs +++ /dev/null @@ -1,47 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetPlaylistContentsMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("composite")] - public string? Composite { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - [JsonProperty("playlistType")] - public string? PlaylistType { get; set; } - - [JsonProperty("ratingKey")] - public string? RatingKey { get; set; } - - [JsonProperty("smart")] - public bool? Smart { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMetadata.cs deleted file mode 100644 index 5ad85ba..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsMetadata.cs +++ /dev/null @@ -1,117 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using NodaTime; - using System.Collections.Generic; - - public class GetPlaylistContentsMetadata - { - - [JsonProperty("ratingKey")] - public string? 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("titleSort")] - public string? TitleSort { get; set; } - - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - [JsonProperty("librarySectionID")] - public int? LibrarySectionID { get; set; } - - [JsonProperty("librarySectionKey")] - public string? LibrarySectionKey { 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 int? 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 int? Duration { get; set; } - - [JsonProperty("originallyAvailableAt")] - public LocalDate? OriginallyAvailableAt { get; set; } - - [JsonProperty("addedAt")] - public int? AddedAt { get; set; } - - [JsonProperty("updatedAt")] - public int? UpdatedAt { get; set; } - - [JsonProperty("audienceRatingImage")] - public string? AudienceRatingImage { get; set; } - - [JsonProperty("hasPremiumExtras")] - public string? HasPremiumExtras { get; set; } - - [JsonProperty("hasPremiumPrimaryExtra")] - public string? HasPremiumPrimaryExtra { get; set; } - - [JsonProperty("ratingImage")] - public string? RatingImage { get; set; } - - [JsonProperty("Media")] - public List? Media { get; set; } - - [JsonProperty("Genre")] - public List? Genre { get; set; } - - [JsonProperty("Country")] - public List? Country { get; set; } - - [JsonProperty("Director")] - public List? Director { get; set; } - - [JsonProperty("Writer")] - public List? Writer { get; set; } - - [JsonProperty("Role")] - public List? Role { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsPart.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsPart.cs deleted file mode 100644 index 2db51e9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsPart.cs +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistContentsPart - { - - [JsonProperty("id")] - public int? Id { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("file")] - public string? File { get; set; } - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - [JsonProperty("container")] - public string? Container { get; set; } - - [JsonProperty("has64bitOffsets")] - public bool? Has64bitOffsets { 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsQueryParamType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsQueryParamType.cs deleted file mode 100644 index 28a7869..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsQueryParamType.cs +++ /dev/null @@ -1,100 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetPlaylistContentsQueryParamType : IEquatable - { - public static readonly GetPlaylistContentsQueryParamType Movie = new GetPlaylistContentsQueryParamType(1); - public static readonly GetPlaylistContentsQueryParamType TvShow = new GetPlaylistContentsQueryParamType(2); - public static readonly GetPlaylistContentsQueryParamType Season = new GetPlaylistContentsQueryParamType(3); - public static readonly GetPlaylistContentsQueryParamType Episode = new GetPlaylistContentsQueryParamType(4); - public static readonly GetPlaylistContentsQueryParamType Artist = new GetPlaylistContentsQueryParamType(5); - public static readonly GetPlaylistContentsQueryParamType Album = new GetPlaylistContentsQueryParamType(6); - public static readonly GetPlaylistContentsQueryParamType Track = new GetPlaylistContentsQueryParamType(7); - public static readonly GetPlaylistContentsQueryParamType PhotoAlbum = new GetPlaylistContentsQueryParamType(8); - public static readonly GetPlaylistContentsQueryParamType Photo = new GetPlaylistContentsQueryParamType(9); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - [1] = Movie, - [2] = TvShow, - [3] = Season, - [4] = Episode, - [5] = Artist, - [6] = Album, - [7] = Track, - [8] = PhotoAlbum, - [9] = Photo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetPlaylistContentsQueryParamType(long value) - { - Value = value; - } - - public long Value { get; } - - public static GetPlaylistContentsQueryParamType Of(long value) - { - return _values.GetOrAdd(value, _ => new GetPlaylistContentsQueryParamType(value)); - } - - public static implicit operator GetPlaylistContentsQueryParamType(long value) => Of(value); - public static implicit operator long(GetPlaylistContentsQueryParamType getplaylistcontentsqueryparamtype) => getplaylistcontentsqueryparamtype.Value; - - public static GetPlaylistContentsQueryParamType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetPlaylistContentsQueryParamType); - - public bool Equals(GetPlaylistContentsQueryParamType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsRequest.cs deleted file mode 100644 index 18109e1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsRequest.cs +++ /dev/null @@ -1,44 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetPlaylistContentsRequest - { - - /// - /// the ID of the playlist - /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistID")] - public double PlaylistID { get; set; } = default!; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] - public GetPlaylistContentsQueryParamType Type { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsResponse.cs deleted file mode 100644 index a94f435..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - - /// - /// The playlist contents - /// - public GetPlaylistContentsResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsResponseBody.cs deleted file mode 100644 index a816e17..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The playlist contents - /// - public class GetPlaylistContentsResponseBody - { - - [JsonProperty("MediaContainer")] - public GetPlaylistContentsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsRole.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsRole.cs deleted file mode 100644 index 41613df..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsRole.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistContentsRole - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsWriter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsWriter.cs deleted file mode 100644 index d29dcb2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistContentsWriter.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistContentsWriter - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorDevice.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorDevice.cs new file mode 100644 index 0000000..ade7073 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorDevice.cs @@ -0,0 +1,21 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetPlaylistGeneratorDevice + { + + [JsonProperty("profile")] + public string? Profile { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsMediaContainer.cs new file mode 100644 index 0000000..a37ee5a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsMediaContainer.cs @@ -0,0 +1,57 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetPlaylistGeneratorItemsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Metadata")] + public GetPlaylistGeneratorItemsMetadata? Metadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsMetadata.cs new file mode 100644 index 0000000..e71d37d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsMetadata.cs @@ -0,0 +1,419 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.
+ /// + /// + ///
+ /// Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items.
+ ///
+ /// Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
+ /// + ///
+ ///
+ public class GetPlaylistGeneratorItemsMetadata + { + + /// + /// The title of the item (e.g. “300” or “The Simpsons”) + /// + [JsonProperty("title")] + public object? Title { get; set; } + + /// + /// The type of the video item, such as `movie`, `episode`, or `clip`. + /// + [JsonProperty("type")] + public object? Type { get; set; } + + /// + /// When present, contains the disc number for a track on multi-disc albums. + /// + [JsonProperty("absoluteIndex")] + public long? AbsoluteIndex { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was added to the library. + /// + [JsonProperty("addedAt")] + public long? AddedAt { get; set; } + + /// + /// When present, the URL for the background artwork for the item. + /// + [JsonProperty("art")] + public object? Art { get; set; } + + /// + /// Some rating systems separate reviewer ratings from audience ratings + /// + [JsonProperty("audienceRating")] + public double? AudienceRating { get; set; } + + /// + /// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). + /// + [JsonProperty("audienceRatingImage")] + public object? AudienceRatingImage { get; set; } + + [JsonProperty("Autotag")] + public List? Autotag { get; set; } + + /// + /// When present, the URL for a banner graphic for the item. + /// + [JsonProperty("banner")] + public object? Banner { get; set; } + + /// + /// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). + /// + [JsonProperty("chapterSource")] + public object? ChapterSource { get; set; } + + /// + /// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). + /// + [JsonProperty("composite")] + public object? Composite { get; set; } + + /// + /// If known, the content rating (e.g. MPAA) for an item. + /// + [JsonProperty("contentRating")] + public object? ContentRating { get; set; } + + [JsonProperty("Country")] + public List? Country { get; set; } + + [JsonProperty("Director")] + public List? Director { get; set; } + + /// + /// When present, the duration for the item, in units of milliseconds. + /// + [JsonProperty("duration")] + public long? Duration { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Filter")] + public List? Filter { get; set; } + + [JsonProperty("Genre")] + public List? Genre { get; set; } + + /// + /// The `art` of the grandparent + /// + [JsonProperty("grandparentArt")] + public string? GrandparentArt { get; set; } + + /// + /// The `hero` of the grandparent + /// + [JsonProperty("grandparentHero")] + public string? GrandparentHero { get; set; } + + /// + /// The `key` of the grandparent + /// + [JsonProperty("grandparentKey")] + public string? GrandparentKey { get; set; } + + /// + /// The `ratingKey` of the grandparent + /// + [JsonProperty("grandparentRatingKey")] + public string? GrandparentRatingKey { get; set; } + + /// + /// The `theme` of the grandparent + /// + [JsonProperty("grandparentTheme")] + public string? GrandparentTheme { get; set; } + + /// + /// The `thumb` of the grandparent + /// + [JsonProperty("grandparentThumb")] + public string? GrandparentThumb { get; set; } + + /// + /// The `title` of the grandparent + /// + [JsonProperty("grandparentTitle")] + public string? GrandparentTitle { get; set; } + + [JsonProperty("Guid")] + public List? Guid { get; set; } + + /// + /// When present, the URL for a hero image for the item. + /// + [JsonProperty("hero")] + public object? Hero { get; set; } + + [JsonProperty("Image")] + public List? Image { get; set; } + + /// + /// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. + /// + [JsonProperty("index")] + public long? Index { get; set; } + + /// + /// The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. + /// + [JsonProperty("key")] + public object? Key { get; set; } + + /// + /// When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. + /// + [JsonProperty("lastViewedAt")] + public long? LastViewedAt { get; set; } + + /// + /// For shows and seasons, contains the number of total episodes. + /// + [JsonProperty("leafCount")] + public long? LeafCount { get; set; } + + [JsonProperty("Media")] + public List? Media { get; set; } + + /// + /// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. + /// + [JsonProperty("originallyAvailableAt")] + public object? OriginallyAvailableAt { get; set; } + + /// + /// When present, used to indicate an item's original title, e.g. a movie's foreign title. + /// + [JsonProperty("originalTitle")] + public object? OriginalTitle { get; set; } + + /// + /// The `hero` of the parent + /// + [JsonProperty("parentHero")] + public string? ParentHero { get; set; } + + /// + /// The `index` of the parent + /// + [JsonProperty("parentIndex")] + public long? ParentIndex { get; set; } + + /// + /// The `key` of the parent + /// + [JsonProperty("parentKey")] + public string? ParentKey { get; set; } + + /// + /// The `ratingKey` of the parent + /// + [JsonProperty("parentRatingKey")] + public string? ParentRatingKey { get; set; } + + /// + /// The `thumb` of the parent + /// + [JsonProperty("parentThumb")] + public string? ParentThumb { get; set; } + + /// + /// The `title` of the parent + /// + [JsonProperty("parentTitle")] + public string? ParentTitle { get; set; } + + /// + /// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. + /// + [JsonProperty("primaryExtraKey")] + public object? PrimaryExtraKey { get; set; } + + /// + /// Prompt to give the user for this directory (such as `Search Movies`) + /// + [JsonProperty("prompt")] + public string? Prompt { get; set; } + + /// + /// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. + /// + [JsonProperty("rating")] + public double? Rating { get; set; } + + [JsonProperty("Rating")] + public List? RatingArray { get; set; } + + /// + /// Number of ratings under this metadata + /// + [JsonProperty("ratingCount")] + public long? RatingCount { get; set; } + + /// + /// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. + /// + [JsonProperty("ratingImage")] + public object? RatingImage { get; set; } + + /// + /// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. + /// + [JsonProperty("ratingKey")] + public object? RatingKey { get; set; } + + [JsonProperty("Role")] + public List? Role { get; set; } + + /// + /// Indicates this is a search directory + /// + [JsonProperty("search")] + public bool? Search { get; set; } + + /// + /// Used by old clients to provide nested menus allowing for primative (but structured) navigation. + /// + [JsonProperty("secondary")] + public bool? Secondary { get; set; } + + /// + /// When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. + /// + [JsonProperty("skipChildren")] + public bool? SkipChildren { get; set; } + + /// + /// When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). + /// + [JsonProperty("skipParent")] + public bool? SkipParent { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Sort")] + public List? Sort { get; set; } + + /// + /// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). + /// + [JsonProperty("studio")] + public object? Studio { get; set; } + + /// + /// The subtype of the video item, such as `photo` when the video item is in a photo library + /// + [JsonProperty("subtype")] + public object? Subtype { get; set; } + + /// + /// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). + /// + [JsonProperty("summary")] + public object? Summary { get; set; } + + /// + /// When present, a pithy one-liner about the item (usually only seen for movies). + /// + [JsonProperty("tagline")] + public object? Tagline { get; set; } + + /// + /// When present, the URL for theme music for the item (usually only for TV shows). + /// + [JsonProperty("theme")] + public object? Theme { get; set; } + + /// + /// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. + /// + [JsonProperty("thumb")] + public object? Thumb { get; set; } + + /// + /// Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). + /// + [JsonProperty("titleSort")] + public object? TitleSort { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). + /// + [JsonProperty("updatedAt")] + public long? UpdatedAt { get; set; } + + /// + /// When the user has rated an item, this contains the user rating + /// + [JsonProperty("userRating")] + public double? UserRating { get; set; } + + /// + /// When a users has completed watched or listened to an item, this attribute contains the number of consumptions. + /// + [JsonProperty("viewCount")] + public long? ViewCount { get; set; } + + /// + /// For shows and seasons, contains the number of viewed episodes. + /// + [JsonProperty("viewedLeafCount")] + public long? ViewedLeafCount { get; set; } + + /// + /// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. + /// + [JsonProperty("viewOffset")] + public long? ViewOffset { get; set; } + + [JsonProperty("Writer")] + public List? Writer { get; set; } + + /// + /// When present, the year associated with the item's release (e.g. release year for a movie). + /// + [JsonProperty("year")] + public long? Year { get; set; } + + /// + /// The state of processing if this generator is part of an optimizer playlist + /// + [JsonProperty("processingState")] + public ProcessingState? ProcessingState { get; set; } + + /// + /// The error which could have occurred (or `good`) + /// + [JsonProperty("processingStateContext")] + public ProcessingStateContext? ProcessingStateContext { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsRequest.cs new file mode 100644 index 0000000..d447db1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetPlaylistGeneratorItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistId")] + public long PlaylistId { get; set; } = default!; + + /// + /// The generator item ID to delete. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=generatorId")] + public long GeneratorId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsResponse.cs new file mode 100644 index 0000000..0059cb6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetPlaylistGeneratorItemsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetPlaylistGeneratorItemsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsResponseBody.cs new file mode 100644 index 0000000..d14f114 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorItemsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetPlaylistGeneratorItemsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetPlaylistGeneratorItemsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorLocation.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorLocation.cs new file mode 100644 index 0000000..e0659ac --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorLocation.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetPlaylistGeneratorLocation + { + + [JsonProperty("librarySectionID")] + public long? LibrarySectionID { get; set; } + + [JsonProperty("uri")] + public string? Uri { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorMediaContainer.cs new file mode 100644 index 0000000..89d150c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetPlaylistGeneratorMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Item")] + public List? Item { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorRequest.cs new file mode 100644 index 0000000..3054cd7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetPlaylistGeneratorRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistId")] + public long PlaylistId { get; set; } = default!; + + /// + /// The generator item ID to delete. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=generatorId")] + public long GeneratorId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorResponse.cs new file mode 100644 index 0000000..fa98bc0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetPlaylistGeneratorResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetPlaylistGeneratorResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorResponseBody.cs new file mode 100644 index 0000000..f820f00 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetPlaylistGeneratorResponseBody + { + + [JsonProperty("MediaContainer")] + public GetPlaylistGeneratorMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorScope.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorScope.cs new file mode 100644 index 0000000..b9315c7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorScope.cs @@ -0,0 +1,57 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum GetPlaylistGeneratorScope + { + [JsonProperty("all")] + All, + [JsonProperty("count")] + Count, + } + + public static class GetPlaylistGeneratorScopeExtension + { + public static string Value(this GetPlaylistGeneratorScope value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GetPlaylistGeneratorScope ToEnum(this string value) + { + foreach(var field in typeof(GetPlaylistGeneratorScope).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 GetPlaylistGeneratorScope) + { + return (GetPlaylistGeneratorScope)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GetPlaylistGeneratorScope"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorState.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorState.cs new file mode 100644 index 0000000..ca214f0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorState.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum GetPlaylistGeneratorState + { + [JsonProperty("pending")] + Pending, + [JsonProperty("complete")] + Complete, + [JsonProperty("failed")] + Failed, + } + + public static class GetPlaylistGeneratorStateExtension + { + public static string Value(this GetPlaylistGeneratorState value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GetPlaylistGeneratorState ToEnum(this string value) + { + foreach(var field in typeof(GetPlaylistGeneratorState).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 GetPlaylistGeneratorState) + { + return (GetPlaylistGeneratorState)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GetPlaylistGeneratorState"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorStatus.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorStatus.cs new file mode 100644 index 0000000..aa0f687 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorStatus.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetPlaylistGeneratorStatus + { + + [JsonProperty("itemsCompleteCount")] + public long? ItemsCompleteCount { get; set; } + + [JsonProperty("itemsCount")] + public long? ItemsCount { get; set; } + + [JsonProperty("itemsSuccessfulCount")] + public long? ItemsSuccessfulCount { get; set; } + + [JsonProperty("state")] + public GetPlaylistGeneratorState? State { get; set; } + + [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorSubtitles.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorSubtitles.cs new file mode 100644 index 0000000..0c296e5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorSubtitles.cs @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum GetPlaylistGeneratorSubtitles + { + [JsonProperty("auto")] + Auto, + [JsonProperty("burn")] + Burn, + [JsonProperty("none")] + None, + [JsonProperty("sidecar")] + Sidecar, + [JsonProperty("embedded")] + Embedded, + [JsonProperty("segmented")] + Segmented, + } + + public static class GetPlaylistGeneratorSubtitlesExtension + { + public static string Value(this GetPlaylistGeneratorSubtitles value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GetPlaylistGeneratorSubtitles ToEnum(this string value) + { + foreach(var field in typeof(GetPlaylistGeneratorSubtitles).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 GetPlaylistGeneratorSubtitles) + { + return (GetPlaylistGeneratorSubtitles)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GetPlaylistGeneratorSubtitles"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorType.cs new file mode 100644 index 0000000..495048c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorType.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// The type of this generator + /// + public enum GetPlaylistGeneratorType + { + Minus1 = -1, + FortyTwo = 42, + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsMediaContainer.cs new file mode 100644 index 0000000..781a1c3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetPlaylistGeneratorsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("PlayQueueGenerator")] + public List? PlayQueueGenerator { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsRequest.cs new file mode 100644 index 0000000..dea0fa9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetPlaylistGeneratorsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistId")] + public long PlaylistId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsResponse.cs new file mode 100644 index 0000000..f7c5682 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetPlaylistGeneratorsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetPlaylistGeneratorsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsResponseBody.cs new file mode 100644 index 0000000..a1c0eb8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetPlaylistGeneratorsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetPlaylistGeneratorsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsType.cs new file mode 100644 index 0000000..e833527 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistGeneratorsType.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// The type of playlist generator.
+ /// + /// + ///
+ /// - -1: A smart playlist generator
+ /// - 42: A optimized version generator
+ /// + ///
+ ///
+ public enum GetPlaylistGeneratorsType + { + Minus1 = -1, + FortyTwo = 42, + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistItemsRequest.cs new file mode 100644 index 0000000..1a44d09 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistItemsRequest.cs @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class GetPlaylistItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistId")] + public long PlaylistId { get; set; } = default!; + + /// + /// The metadata types of the item to return. Values past the first are only used in fetching items from the background processing playlist. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=false,name=type")] + public List? Type { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistItemsResponse.cs new file mode 100644 index 0000000..0e23ba0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistItemsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetPlaylistItemsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistMediaContainer.cs deleted file mode 100644 index 59d4393..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistMediaContainer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetPlaylistMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistMetadata.cs deleted file mode 100644 index a449fb4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistMetadata.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistMetadata - { - - [JsonProperty("content")] - public string? Content { get; set; } - - [JsonProperty("ratingKey")] - public string? RatingKey { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("guid")] - public string? Guid { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("summary")] - public string? Summary { get; set; } - - [JsonProperty("smart")] - public bool? Smart { get; set; } - - [JsonProperty("playlistType")] - public string? PlaylistType { get; set; } - - [JsonProperty("composite")] - public string? Composite { get; set; } - - [JsonProperty("icon")] - public string? Icon { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - [JsonProperty("addedAt")] - public int? AddedAt { get; set; } - - [JsonProperty("updatedAt")] - public int? UpdatedAt { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistRequest.cs index cef892d..43f7377 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistRequest.cs @@ -9,15 +9,82 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; public class GetPlaylistRequest { /// - /// the ID of the playlist + /// Indicates the client accepts the indicated media types /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistID")] - public double PlaylistID { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistId")] + public long PlaylistId { get; set; } = default!; } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistResponse.cs index 432fe5f..0fc806a 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistResponse.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistResponse.cs @@ -9,7 +9,7 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; using System; using System.Net.Http; @@ -33,8 +33,8 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public HttpResponseMessage RawResponse { get; set; } = default!; /// - /// The playlist + /// OK /// - public GetPlaylistResponseBody? Object { get; set; } + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistResponseBody.cs deleted file mode 100644 index 6e24460..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The playlist - /// - public class GetPlaylistResponseBody - { - - [JsonProperty("MediaContainer")] - public GetPlaylistMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsMediaContainer.cs deleted file mode 100644 index e2cd551..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsMediaContainer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetPlaylistsMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsMetadata.cs deleted file mode 100644 index 92941d1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsMetadata.cs +++ /dev/null @@ -1,66 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetPlaylistsMetadata - { - - [JsonProperty("ratingKey")] - public string? RatingKey { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("guid")] - public string? Guid { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("summary")] - public string? Summary { get; set; } - - [JsonProperty("smart")] - public bool? Smart { get; set; } - - [JsonProperty("playlistType")] - public string? PlaylistType { get; set; } - - [JsonProperty("composite")] - public string? Composite { get; set; } - - [JsonProperty("icon")] - public string? Icon { get; set; } - - [JsonProperty("viewCount")] - public int? ViewCount { get; set; } - - [JsonProperty("lastViewedAt")] - public int? LastViewedAt { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - [JsonProperty("addedAt")] - public int? AddedAt { get; set; } - - [JsonProperty("updatedAt")] - public int? UpdatedAt { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsRequest.cs deleted file mode 100644 index b895b1d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsRequest.cs +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsResponse.cs deleted file mode 100644 index 4bc3c91..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - - /// - /// returns all playlists - /// - public GetPlaylistsResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsResponseBody.cs deleted file mode 100644 index f554588..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPlaylistsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// returns all playlists - /// - public class GetPlaylistsResponseBody - { - - [JsonProperty("MediaContainer")] - public GetPlaylistsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPostplayHubsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPostplayHubsRequest.cs new file mode 100644 index 0000000..e102daa --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPostplayHubsRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetPostplayHubsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The metadata ID for the hubs to fetch + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=metadataId")] + public long MetadataId { get; set; } = default!; + + /// + /// Limit results to count items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=count")] + public long? 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 BoolInt? OnlyTransient { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPostplayHubsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPostplayHubsResponse.cs new file mode 100644 index 0000000..183be28 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPostplayHubsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetPostplayHubsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithHubs? MediaContainerWithHubs { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPreferenceRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPreferenceRequest.cs new file mode 100644 index 0000000..7445f7d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPreferenceRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetPreferenceRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The preference to fetch + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=id")] + public string? Id { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPreferenceResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPreferenceResponse.cs new file mode 100644 index 0000000..89ffdc2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPreferenceResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetPreferenceResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithSettings? MediaContainerWithSettings { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsMediaContainer.cs new file mode 100644 index 0000000..addfdcd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetPromotedHubsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Hub")] + public List? Hub { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsRequest.cs new file mode 100644 index 0000000..a9e435a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetPromotedHubsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Limit results to count items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=count")] + public long? Count { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsResponse.cs new file mode 100644 index 0000000..fbb3a15 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetPromotedHubsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetPromotedHubsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsResponseBody.cs new file mode 100644 index 0000000..5609c41 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetPromotedHubsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetPromotedHubsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetPromotedHubsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRandomArtworkRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRandomArtworkRequest.cs new file mode 100644 index 0000000..5179dd9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRandomArtworkRequest.cs @@ -0,0 +1,91 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class GetRandomArtworkRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The sections for which to fetch artwork. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=false,name=sections")] + public List? Sections { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRandomArtworkResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRandomArtworkResponse.cs new file mode 100644 index 0000000..576d1c4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRandomArtworkResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetRandomArtworkResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithArtwork? MediaContainerWithArtwork { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedActiveDirection.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedActiveDirection.cs deleted file mode 100644 index c6bac72..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedActiveDirection.cs +++ /dev/null @@ -1,64 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- public enum GetRecentlyAddedActiveDirection - { - [JsonProperty("asc")] - Ascending, - [JsonProperty("desc")] - Descending, - } - - public static class GetRecentlyAddedActiveDirectionExtension - { - public static string Value(this GetRecentlyAddedActiveDirection value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetRecentlyAddedActiveDirection ToEnum(this string value) - { - foreach(var field in typeof(GetRecentlyAddedActiveDirection).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 GetRecentlyAddedActiveDirection) - { - return (GetRecentlyAddedActiveDirection)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetRecentlyAddedActiveDirection"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedDefaultDirection.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedDefaultDirection.cs deleted file mode 100644 index 020e0c0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedDefaultDirection.cs +++ /dev/null @@ -1,64 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- public enum GetRecentlyAddedDefaultDirection - { - [JsonProperty("asc")] - Ascending, - [JsonProperty("desc")] - Descending, - } - - public static class GetRecentlyAddedDefaultDirectionExtension - { - public static string Value(this GetRecentlyAddedDefaultDirection value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetRecentlyAddedDefaultDirection ToEnum(this string value) - { - foreach(var field in typeof(GetRecentlyAddedDefaultDirection).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 GetRecentlyAddedDefaultDirection) - { - return (GetRecentlyAddedDefaultDirection)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetRecentlyAddedDefaultDirection"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedField.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedField.cs deleted file mode 100644 index c3877a7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedField.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedField - { - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("subType")] - public string? SubType { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedFieldType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedFieldType.cs deleted file mode 100644 index 0634530..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedFieldType.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetRecentlyAddedFieldType - { - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("Operator")] - public List Operator { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedFilter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedFilter.cs deleted file mode 100644 index 901a777..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedFilter.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedFilter - { - - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - [JsonProperty("filterType")] - public string FilterType { get; set; } = default!; - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("advanced")] - public bool? Advanced { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedHubsResponseType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedHubsResponseType.cs deleted file mode 100644 index dfc5552..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedHubsResponseType.cs +++ /dev/null @@ -1,79 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - [JsonConverter(typeof(OpenEnumConverter))] - public class GetRecentlyAddedHubsResponseType : IEquatable - { - public static readonly GetRecentlyAddedHubsResponseType CoverPoster = new GetRecentlyAddedHubsResponseType("coverPoster"); - public static readonly GetRecentlyAddedHubsResponseType Background = new GetRecentlyAddedHubsResponseType("background"); - public static readonly GetRecentlyAddedHubsResponseType Snapshot = new GetRecentlyAddedHubsResponseType("snapshot"); - public static readonly GetRecentlyAddedHubsResponseType ClearLogo = new GetRecentlyAddedHubsResponseType("clearLogo"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["coverPoster"] = CoverPoster, - ["background"] = Background, - ["snapshot"] = Snapshot, - ["clearLogo"] = ClearLogo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetRecentlyAddedHubsResponseType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetRecentlyAddedHubsResponseType Of(string value) - { - return _values.GetOrAdd(value, _ => new GetRecentlyAddedHubsResponseType(value)); - } - - public static implicit operator GetRecentlyAddedHubsResponseType(string value) => Of(value); - public static implicit operator string(GetRecentlyAddedHubsResponseType getrecentlyaddedhubsresponsetype) => getrecentlyaddedhubsresponsetype.Value; - - public static GetRecentlyAddedHubsResponseType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetRecentlyAddedHubsResponseType); - - public bool Equals(GetRecentlyAddedHubsResponseType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedHubsType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedHubsType.cs deleted file mode 100644 index 99ac550..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedHubsType.cs +++ /dev/null @@ -1,98 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media content in the Plex library. This can represent videos, music, or photos.
- /// - /// - /// - /// - ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetRecentlyAddedHubsType : IEquatable - { - public static readonly GetRecentlyAddedHubsType Movie = new GetRecentlyAddedHubsType("movie"); - public static readonly GetRecentlyAddedHubsType TvShow = new GetRecentlyAddedHubsType("show"); - public static readonly GetRecentlyAddedHubsType Season = new GetRecentlyAddedHubsType("season"); - public static readonly GetRecentlyAddedHubsType Episode = new GetRecentlyAddedHubsType("episode"); - public static readonly GetRecentlyAddedHubsType Artist = new GetRecentlyAddedHubsType("artist"); - public static readonly GetRecentlyAddedHubsType Album = new GetRecentlyAddedHubsType("album"); - public static readonly GetRecentlyAddedHubsType Track = new GetRecentlyAddedHubsType("track"); - public static readonly GetRecentlyAddedHubsType PhotoAlbum = new GetRecentlyAddedHubsType("photoalbum"); - public static readonly GetRecentlyAddedHubsType Photo = new GetRecentlyAddedHubsType("photo"); - public static readonly GetRecentlyAddedHubsType Collection = new GetRecentlyAddedHubsType("collection"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["movie"] = Movie, - ["show"] = TvShow, - ["season"] = Season, - ["episode"] = Episode, - ["artist"] = Artist, - ["album"] = Album, - ["track"] = Track, - ["photoalbum"] = PhotoAlbum, - ["photo"] = Photo, - ["collection"] = Collection - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetRecentlyAddedHubsType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetRecentlyAddedHubsType Of(string value) - { - return _values.GetOrAdd(value, _ => new GetRecentlyAddedHubsType(value)); - } - - public static implicit operator GetRecentlyAddedHubsType(string value) => Of(value); - public static implicit operator string(GetRecentlyAddedHubsType getrecentlyaddedhubstype) => getrecentlyaddedhubstype.Value; - - public static GetRecentlyAddedHubsType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetRecentlyAddedHubsType); - - public bool Equals(GetRecentlyAddedHubsType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedImage.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedImage.cs deleted file mode 100644 index 2850302..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedImage.cs +++ /dev/null @@ -1,32 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetRecentlyAddedImage - { - - [JsonProperty("alt")] - public string Alt { get; set; } = default!; - - [JsonProperty("type")] - public GetRecentlyAddedHubsResponseType Type { get; set; } = default!; - - [JsonProperty("url")] - public string Url { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryCountry.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryCountry.cs deleted file mode 100644 index 9eaec69..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryCountry.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedLibraryCountry - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryDirector.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryDirector.cs deleted file mode 100644 index 05a1564..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryDirector.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedLibraryDirector - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryFilter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryFilter.cs deleted file mode 100644 index 863a527..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryFilter.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedLibraryFilter - { - - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - [JsonProperty("filterType")] - public string FilterType { get; set; } = default!; - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("advanced")] - public bool? Advanced { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryGenre.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryGenre.cs deleted file mode 100644 index 2dbf420..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryGenre.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedLibraryGenre - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMedia.cs deleted file mode 100644 index f9a295f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMedia.cs +++ /dev/null @@ -1,68 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetRecentlyAddedLibraryMedia - { - - [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/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMediaContainer.cs deleted file mode 100644 index b5b815d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMediaContainer.cs +++ /dev/null @@ -1,54 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - /// - /// The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
- /// - /// - /// - /// - ///
- public class GetRecentlyAddedLibraryMediaContainer - { - - [JsonProperty("Type")] - public List? Type { get; set; } - - [JsonProperty("FieldType")] - public List? FieldType { get; set; } - - [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/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMetadata.cs deleted file mode 100644 index 2e46d9f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryMetadata.cs +++ /dev/null @@ -1,117 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - - public class GetRecentlyAddedLibraryMetadata - { - - [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/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryPart.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryPart.cs deleted file mode 100644 index cf31812..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryPart.cs +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedLibraryPart - { - - [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/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryRequest.cs deleted file mode 100644 index 68ad6c9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryRequest.cs +++ /dev/null @@ -1,84 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetRecentlyAddedLibraryRequest - { - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=contentDirectoryID")] - public long? ContentDirectoryID { get; set; } - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=pinnedContentDirectoryID")] - public List? PinnedContentDirectoryID { get; set; } - - /// - /// The library section ID for filtering content. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=sectionID")] - public long? SectionID { get; set; } - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] - public QueryParamType Type { get; set; } = default!; - - /// - /// Adds the Meta object to the response
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeMeta")] - public QueryParamIncludeMeta? IncludeMeta { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.QueryParamIncludeMeta.Disable; - - /// - /// The index of the first item to return. If not specified, the first item will be returned.
- /// - /// - /// If the number of items exceeds the limit, the response will be paginated.
- /// By default this is 0
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Start")] - public int? XPlexContainerStart { get; set; } = 0; - - /// - /// The number of items to return. If not specified, all items will be returned.
- /// - /// - /// If the number of items exceeds the limit, the response will be paginated.
- /// By default this is 50
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Size")] - public int? XPlexContainerSize { get; set; } = 50; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryResponse.cs deleted file mode 100644 index d9890c4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetRecentlyAddedLibraryResponse - { - - /// - /// 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 GetRecentlyAddedLibraryResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryResponseBody.cs deleted file mode 100644 index 9f94d31..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The recently added content - /// - public class GetRecentlyAddedLibraryResponseBody - { - - [JsonProperty("MediaContainer")] - public GetRecentlyAddedLibraryMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryRole.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryRole.cs deleted file mode 100644 index af1c6b8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryRole.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedLibraryRole - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryType.cs deleted file mode 100644 index 5046011..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryType.cs +++ /dev/null @@ -1,44 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetRecentlyAddedLibraryType - { - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("subtype")] - public string? Subtype { get; set; } - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("active")] - public bool Active { get; set; } = default!; - - [JsonProperty("Filter")] - public List? Filter { get; set; } - - [JsonProperty("Sort")] - public List? Sort { get; set; } - - [JsonProperty("Field")] - public List? Field { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryWriter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryWriter.cs deleted file mode 100644 index 8d9bf56..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedLibraryWriter.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedLibraryWriter - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMediaContainer.cs deleted file mode 100644 index 142e1a1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMediaContainer.cs +++ /dev/null @@ -1,66 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetRecentlyAddedMediaContainer - { - - /// - /// Number of media items returned in this response. - /// - [JsonProperty("size")] - public int Size { get; set; } = default!; - - /// - /// Total number of media items in the library. - /// - [JsonProperty("totalSize")] - public int TotalSize { get; set; } = default!; - - /// - /// Offset value for pagination. - /// - [JsonProperty("offset")] - public long Offset { get; set; } = default!; - - /// - /// Indicates whether syncing is allowed. - /// - [JsonProperty("allowSync")] - public bool AllowSync { get; set; } = default!; - - /// - /// An plugin identifier for the media container. - /// - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - /// - /// The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
- /// - /// - /// - /// - ///
- [JsonProperty("Meta")] - public Meta? Meta { get; set; } - - /// - /// An array of metadata items. - /// - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMetadata.cs deleted file mode 100644 index 4650bbf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMetadata.cs +++ /dev/null @@ -1,433 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using NodaTime; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Unknown
- /// - /// - /// - /// - ///
- public class GetRecentlyAddedMetadata - { - - [JsonProperty("addedAt")] - public long AddedAt { get; set; } = default!; - - /// - /// The art image URL for the media item. - /// - [JsonProperty("art")] - public string Art { get; set; } = default!; - - /// - /// The URL for the audience rating image. - /// - [JsonProperty("audienceRatingImage")] - public string? AudienceRatingImage { get; set; } - - /// - /// The audience rating for the media item. - /// - [JsonProperty("audienceRating")] - public double AudienceRating { get; set; } = default!; - - /// - /// The source from which chapter data is derived. - /// - [JsonProperty("chapterSource")] - public string? ChapterSource { get; set; } - - /// - /// The number of child items associated with this media item. - /// - [JsonProperty("childCount")] - public int ChildCount { get; set; } = default!; - - /// - /// The content rating for the media item. - /// - [JsonProperty("contentRating")] - public string? ContentRating { get; set; } - - /// - /// The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). - /// - [JsonProperty("createdAtAccuracy")] - public string? CreatedAtAccuracy { get; set; } - - /// - /// The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. - /// - [JsonProperty("createdAtTZOffset")] - public string? CreatedAtTZOffset { get; set; } - - /// - /// The duration of the media item in milliseconds. - /// - [JsonProperty("duration")] - public int Duration { get; set; } = default!; - - /// - /// The art URL for the grandparent media item. - /// - [JsonProperty("grandparentArt")] - public string? GrandparentArt { get; set; } - - /// - /// The GUID of the grandparent media item. - /// - [JsonProperty("grandparentGuid")] - public string? GrandparentGuid { get; set; } - - /// - /// The key of the grandparent media item. - /// - [JsonProperty("grandparentKey")] - public string? GrandparentKey { get; set; } - - /// - /// The rating key of the grandparent media item. - /// - [JsonProperty("grandparentRatingKey")] - public string? GrandparentRatingKey { get; set; } - - /// - /// The slug for the grandparent media item. - /// - [JsonProperty("grandparentSlug")] - public string? GrandparentSlug { get; set; } - - /// - /// The theme URL for the grandparent media item. - /// - [JsonProperty("grandparentTheme")] - public string? GrandparentTheme { get; set; } - - /// - /// The thumbnail URL for the grandparent media item. - /// - [JsonProperty("grandparentThumb")] - public string? GrandparentThumb { get; set; } - - /// - /// The title of the grandparent media item. - /// - [JsonProperty("grandparentTitle")] - public string? GrandparentTitle { get; set; } - - /// - /// The globally unique identifier for the media item. - /// - [JsonProperty("guid")] - public string Guid { get; set; } = default!; - - /// - /// The index position of the media item. - /// - [JsonProperty("index")] - public int Index { get; set; } = default!; - - /// - /// The unique key for the media item. - /// - [JsonProperty("key")] - public string Key { get; set; } = default!; - - /// - /// The Unix timestamp representing the last time the item was rated. - /// - [JsonProperty("lastRatedAt")] - public long? LastRatedAt { get; set; } - - /// - /// Unix timestamp for when the media item was last viewed. - /// - [JsonProperty("lastViewedAt")] - public int? LastViewedAt { get; set; } - - /// - /// The number of leaf items (end nodes) under this media item. - /// - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - /// - /// The identifier for the library section. - /// - [JsonProperty("librarySectionID")] - public long? LibrarySectionID { get; set; } - - /// - /// The key corresponding to the library section. - /// - [JsonProperty("librarySectionKey")] - public string? LibrarySectionKey { get; set; } - - /// - /// The title of the library section. - /// - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - /// - /// The original title of the media item (if different). - /// - [JsonProperty("originalTitle")] - public string? OriginalTitle { get; set; } - - /// - /// The original release date of the media item. - /// - [JsonProperty("originallyAvailableAt")] - public LocalDate? OriginallyAvailableAt { get; set; } - - /// - /// The GUID of the parent media item. - /// - [JsonProperty("parentGuid")] - public string? ParentGuid { get; set; } - - /// - /// The index position of the parent media item. - /// - [JsonProperty("parentIndex")] - public int? ParentIndex { get; set; } - - /// - /// The key of the parent media item. - /// - [JsonProperty("parentKey")] - public string? ParentKey { get; set; } - - /// - /// The rating key of the parent media item. - /// - [JsonProperty("parentRatingKey")] - public string? ParentRatingKey { get; set; } - - /// - /// The slug for the parent media item. - /// - [JsonProperty("parentSlug")] - public string? ParentSlug { get; set; } - - /// - /// The studio of the parent media item. - /// - [JsonProperty("parentStudio")] - public string ParentStudio { get; set; } = default!; - - /// - /// The theme URL for the parent media item. - /// - [JsonProperty("parentTheme")] - public string ParentTheme { get; set; } = default!; - - /// - /// The thumbnail URL for the parent media item. - /// - [JsonProperty("parentThumb")] - public string? ParentThumb { get; set; } - - /// - /// The title of the parent media item. - /// - [JsonProperty("parentTitle")] - public string? ParentTitle { get; set; } - - /// - /// The release year of the parent media item. - /// - [JsonProperty("parentYear")] - public int? ParentYear { get; set; } - - /// - /// The primary extra key associated with this media item. - /// - [JsonProperty("primaryExtraKey")] - public string? PrimaryExtraKey { get; set; } - - /// - /// The URL for the rating image. - /// - [JsonProperty("ratingImage")] - public string? RatingImage { get; set; } - - /// - /// The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. - /// - [JsonProperty("ratingKey")] - public string RatingKey { get; set; } = default!; - - /// - /// The critic rating for the media item. - /// - [JsonProperty("rating")] - public float Rating { get; set; } = default!; - - /// - /// The total number of seasons (for TV shows). - /// - [JsonProperty("seasonCount")] - public int SeasonCount { get; set; } = default!; - - /// - /// The number of times this media item has been skipped. - /// - [JsonProperty("skipCount")] - public int? SkipCount { get; set; } - - /// - /// A URL‐friendly version of the media title. - /// - [JsonProperty("slug")] - public string Slug { get; set; } = default!; - - /// - /// The studio that produced the media item. - /// - [JsonProperty("studio")] - public string? Studio { get; set; } - - /// - /// A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. - /// - [JsonProperty("subtype")] - public string? Subtype { get; set; } - - /// - /// A synopsis of the media item. - /// - [JsonProperty("summary")] - public string Summary { get; set; } = default!; - - /// - /// A brief tagline for the media item. - /// - [JsonProperty("tagline")] - public string Tagline { get; set; } = default!; - - /// - /// The theme URL for the media item. - /// - [JsonProperty("theme")] - public string Theme { get; set; } = default!; - - /// - /// The thumbnail image URL for the media item. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The sort title used for ordering media items. - /// - [JsonProperty("titleSort")] - public string TitleSort { get; set; } = default!; - - /// - /// The title of the media item. - /// - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("type")] - public GetRecentlyAddedHubsType Type { get; set; } = default!; - - /// - /// Unix epoch datetime in seconds - /// - [JsonProperty("updatedAt")] - public long? UpdatedAt { get; set; } - - /// - /// The rating provided by a user for the item. This value is expressed as a decimal number. - /// - [JsonProperty("userRating")] - public float? UserRating { get; set; } - - /// - /// The number of times this media item has been viewed. - /// - [JsonProperty("viewCount")] - public int? ViewCount { get; set; } - - /// - /// The current playback offset (in milliseconds). - /// - [JsonProperty("viewOffset")] - public int? ViewOffset { get; set; } - - /// - /// The number of leaf items that have been viewed. - /// - [JsonProperty("viewedLeafCount")] - public int? ViewedLeafCount { get; set; } - - /// - /// The release year of the media item. - /// - [JsonProperty("year")] - public int? Year { get; set; } - - [JsonProperty("Image")] - public List? Image { get; set; } - - [JsonProperty("UltraBlurColors")] - public UltraBlurColors? UltraBlurColors { get; set; } - - [JsonProperty("Guid")] - public List? Guids { get; set; } - - [JsonProperty("Media")] - public List? Media { get; set; } - - [JsonProperty("Genre")] - public List? Genre { get; set; } - - [JsonProperty("Country")] - public List? Country { get; set; } - - [JsonProperty("Director")] - public List? Director { get; set; } - - [JsonProperty("Writer")] - public List? Writer { get; set; } - - [JsonProperty("Role")] - public List? Role { get; set; } - - [JsonProperty("Producer")] - public List? Producer { get; set; } - - [JsonProperty("Rating")] - public List? Rating1 { get; set; } - - [JsonProperty("Similar")] - public List? Similar { get; set; } - - [JsonProperty("Location")] - public List? Location { get; set; } - - [JsonProperty("Collection")] - public List? Collection { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOperator.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOperator.cs deleted file mode 100644 index f864f89..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOperator.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedOperator - { - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming.cs deleted file mode 100644 index cc467f2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming.cs +++ /dev/null @@ -1,203 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using Newtonsoft.Json.Linq; - using System; - using System.Collections.Generic; - using System.Numerics; - using System.Reflection; - - public class GetRecentlyAddedOptimizedForStreamingType - { - private GetRecentlyAddedOptimizedForStreamingType(string value) { Value = value; } - - public string Value { get; private set; } - - public static GetRecentlyAddedOptimizedForStreamingType GetRecentlyAddedOptimizedForStreaming1 { get { return new GetRecentlyAddedOptimizedForStreamingType("get-recently-added_optimizedForStreaming_1"); } } - - public static GetRecentlyAddedOptimizedForStreamingType Boolean { get { return new GetRecentlyAddedOptimizedForStreamingType("boolean"); } } - - public static GetRecentlyAddedOptimizedForStreamingType Null { get { return new GetRecentlyAddedOptimizedForStreamingType("null"); } } - - public override string ToString() { return Value; } - public static implicit operator String(GetRecentlyAddedOptimizedForStreamingType v) { return v.Value; } - public static GetRecentlyAddedOptimizedForStreamingType FromString(string v) { - switch(v) { - case "get-recently-added_optimizedForStreaming_1": return GetRecentlyAddedOptimizedForStreaming1; - case "boolean": return Boolean; - case "null": return Null; - default: throw new ArgumentException("Invalid value for GetRecentlyAddedOptimizedForStreamingType"); - } - } - public override bool Equals(object? obj) - { - if (obj == null || GetType() != obj.GetType()) - { - return false; - } - return Value.Equals(((GetRecentlyAddedOptimizedForStreamingType)obj).Value); - } - - public override int GetHashCode() - { - return Value.GetHashCode(); - } - } - - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonConverter(typeof(GetRecentlyAddedOptimizedForStreaming.GetRecentlyAddedOptimizedForStreamingConverter))] - public class GetRecentlyAddedOptimizedForStreaming - { - public GetRecentlyAddedOptimizedForStreaming(GetRecentlyAddedOptimizedForStreamingType type) - { - Type = type; - } - - [SpeakeasyMetadata("form:explode=true")] - public GetRecentlyAddedOptimizedForStreaming1? GetRecentlyAddedOptimizedForStreaming1 { get; set; } - - [SpeakeasyMetadata("form:explode=true")] - public bool? Boolean { get; set; } - - public GetRecentlyAddedOptimizedForStreamingType Type { get; set; } - public static GetRecentlyAddedOptimizedForStreaming CreateGetRecentlyAddedOptimizedForStreaming1(GetRecentlyAddedOptimizedForStreaming1 getRecentlyAddedOptimizedForStreaming1) - { - GetRecentlyAddedOptimizedForStreamingType typ = GetRecentlyAddedOptimizedForStreamingType.GetRecentlyAddedOptimizedForStreaming1; - - GetRecentlyAddedOptimizedForStreaming res = new GetRecentlyAddedOptimizedForStreaming(typ); - res.GetRecentlyAddedOptimizedForStreaming1 = getRecentlyAddedOptimizedForStreaming1; - return res; - } - public static GetRecentlyAddedOptimizedForStreaming CreateBoolean(bool boolean) - { - GetRecentlyAddedOptimizedForStreamingType typ = GetRecentlyAddedOptimizedForStreamingType.Boolean; - - GetRecentlyAddedOptimizedForStreaming res = new GetRecentlyAddedOptimizedForStreaming(typ); - res.Boolean = boolean; - return res; - } - - public static GetRecentlyAddedOptimizedForStreaming CreateNull() - { - GetRecentlyAddedOptimizedForStreamingType typ = GetRecentlyAddedOptimizedForStreamingType.Null; - return new GetRecentlyAddedOptimizedForStreaming(typ); - } - - public class GetRecentlyAddedOptimizedForStreamingConverter : JsonConverter - { - - public override bool CanConvert(System.Type objectType) => objectType == typeof(GetRecentlyAddedOptimizedForStreaming); - - public override bool CanRead => true; - - public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) - { - var json = JRaw.Create(reader).ToString(); - if (json == "null") - { - return null; - } - - var fallbackCandidates = new List<(System.Type, object, string)>(); - - try - { - return new GetRecentlyAddedOptimizedForStreaming(GetRecentlyAddedOptimizedForStreamingType.GetRecentlyAddedOptimizedForStreaming1) - { - GetRecentlyAddedOptimizedForStreaming1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) - }; - } - catch (ResponseBodyDeserializer.MissingMemberException) - { - fallbackCandidates.Add((typeof(GetRecentlyAddedOptimizedForStreaming1), new GetRecentlyAddedOptimizedForStreaming(GetRecentlyAddedOptimizedForStreamingType.GetRecentlyAddedOptimizedForStreaming1), "GetRecentlyAddedOptimizedForStreaming1")); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next option - } - catch (Exception) - { - throw; - } - - try - { - var converted = Convert.ToBoolean(json); - return new GetRecentlyAddedOptimizedForStreaming(GetRecentlyAddedOptimizedForStreamingType.Boolean) - { - Boolean = converted - }; - } - catch (System.FormatException) - { - // try next option - } - - if (fallbackCandidates.Count > 0) - { - fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); - foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) - { - try - { - return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next fallback option - } - catch (Exception) - { - throw; - } - } - } - - throw new InvalidOperationException("Could not deserialize into any supported types."); - } - - public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) - { - if (value == null) { - writer.WriteRawValue("null"); - return; - } - - GetRecentlyAddedOptimizedForStreaming res = (GetRecentlyAddedOptimizedForStreaming)value; - if (GetRecentlyAddedOptimizedForStreamingType.FromString(res.Type).Equals(GetRecentlyAddedOptimizedForStreamingType.Null)) - { - writer.WriteRawValue("null"); - return; - } - - if (res.GetRecentlyAddedOptimizedForStreaming1 != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.GetRecentlyAddedOptimizedForStreaming1)); - return; - } - - if (res.Boolean != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); - return; - } - } - - } - - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.cs deleted file mode 100644 index 5e8d190..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum GetRecentlyAddedOptimizedForStreaming1 - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedRequest.cs deleted file mode 100644 index efbd914..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedRequest.cs +++ /dev/null @@ -1,90 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetRecentlyAddedRequest - { - - /// - /// The content directory ID. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=contentDirectoryID")] - public long ContentDirectoryID { get; set; } = default!; - - /// - /// Comma-separated list of pinned content directory IDs. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=pinnedContentDirectoryID")] - public string? PinnedContentDirectoryID { get; set; } - - /// - /// The library section ID for filtering content. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=sectionID")] - public long? SectionID { get; set; } - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] - public Models.Requests.Type Type { get; set; } = default!; - - /// - /// Adds the Meta object to the response
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeMeta")] - public IncludeMeta? IncludeMeta { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeMeta.Disable; - - /// - /// The index of the first item to return. If not specified, the first item will be returned.
- /// - /// - /// If the number of items exceeds the limit, the response will be paginated.
- /// By default this is 0
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Start")] - public int? XPlexContainerStart { get; set; } = 0; - - /// - /// The number of items to return. If not specified, all items will be returned.
- /// - /// - /// If the number of items exceeds the limit, the response will be paginated.
- /// By default this is 50
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Size")] - public int? XPlexContainerSize { get; set; } = 50; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedResponse.cs deleted file mode 100644 index 7cd3936..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - - /// - /// A successful response with recently added content. - /// - public GetRecentlyAddedResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedResponseBody.cs deleted file mode 100644 index 769b6c1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// A successful response with recently added content. - /// - public class GetRecentlyAddedResponseBody - { - - [JsonProperty("MediaContainer")] - public GetRecentlyAddedMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedSort.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedSort.cs deleted file mode 100644 index ec99b0a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedSort.cs +++ /dev/null @@ -1,57 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetRecentlyAddedSort - { - - [JsonProperty("default")] - public string? Default { get; set; } - - [JsonProperty("active")] - public bool? Active { get; set; } - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- [JsonProperty("activeDirection")] - public GetRecentlyAddedActiveDirection? ActiveDirection { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetRecentlyAddedActiveDirection.Ascending; - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- [JsonProperty("defaultDirection")] - public GetRecentlyAddedDefaultDirection? DefaultDirection { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetRecentlyAddedDefaultDirection.Ascending; - - [JsonProperty("descKey")] - public string? DescKey { get; set; } - - [JsonProperty("firstCharacterKey")] - public string? FirstCharacterKey { get; set; } - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedType.cs deleted file mode 100644 index 3d00985..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedType.cs +++ /dev/null @@ -1,44 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetRecentlyAddedType - { - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("subtype")] - public string? Subtype { get; set; } - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("active")] - public bool Active { get; set; } = default!; - - [JsonProperty("Filter")] - public List? Filter { get; set; } - - [JsonProperty("Sort")] - public List? Sort { get; set; } - - [JsonProperty("Field")] - public List? Field { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRefreshLibraryMetadataRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRefreshLibraryMetadataRequest.cs deleted file mode 100644 index f90e71e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRefreshLibraryMetadataRequest.cs +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetRefreshLibraryMetadataRequest - { - - /// - /// Force the refresh even if the library is already being refreshed. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")] - public Force? Force { get; set; } - - /// - /// The unique key of the Plex library.
- /// - /// - /// Note: This is unique in the context of the Plex server.
- /// - ///
- ///
- [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")] - public int SectionKey { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRefreshLibraryMetadataResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRefreshLibraryMetadataResponse.cs deleted file mode 100644 index 48ef6ed..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRefreshLibraryMetadataResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetRefreshLibraryMetadataResponse - { - - /// - /// 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedHubsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedHubsRequest.cs new file mode 100644 index 0000000..4379a9f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedHubsRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetRelatedHubsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The metadata ID for the hubs to fetch + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=metadataId")] + public long MetadataId { get; set; } = default!; + + /// + /// Limit results to count items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=count")] + public long? 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 BoolInt? OnlyTransient { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedHubsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedHubsResponse.cs new file mode 100644 index 0000000..be028e9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedHubsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetRelatedHubsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithHubs? MediaContainerWithHubs { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsMediaContainer.cs new file mode 100644 index 0000000..15c2d25 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetRelatedItemsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Hub")] + public List? Hub { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsRequest.cs new file mode 100644 index 0000000..70a7467 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsRequest.cs @@ -0,0 +1,87 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetRelatedItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsResponse.cs new file mode 100644 index 0000000..ef1f221 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetRelatedItemsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetRelatedItemsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsResponseBody.cs new file mode 100644 index 0000000..8fa139f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRelatedItemsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetRelatedItemsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetRelatedItemsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetResizedPhotoRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetResizedPhotoRequest.cs deleted file mode 100644 index 4d9319f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetResizedPhotoRequest.cs +++ /dev/null @@ -1,60 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.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; } = 100; - - /// - /// 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetResizedPhotoResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetResizedPhotoResponse.cs deleted file mode 100644 index 72dfb5c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetResizedPhotoResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsMediaContainer.cs deleted file mode 100644 index 8a68140..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsMediaContainer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetResourcesStatisticsMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("StatisticsResources")] - public List? StatisticsResources { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsRequest.cs deleted file mode 100644 index e3a43b2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsRequest.cs +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetResourcesStatisticsRequest - { - - /// - /// The timespan to retrieve statistics for
- /// - /// - /// the exact meaning of this parameter is not known
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=timespan")] - public long? Timespan { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsResponse.cs deleted file mode 100644 index 62d0adf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetResourcesStatisticsResponse - { - - /// - /// 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!; - - /// - /// Resource Statistics - /// - public GetResourcesStatisticsResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsResponseBody.cs deleted file mode 100644 index 6cdead8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetResourcesStatisticsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Resource Statistics - /// - public class GetResourcesStatisticsResponseBody - { - - [JsonProperty("MediaContainer")] - public GetResourcesStatisticsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsMediaContainer.cs new file mode 100644 index 0000000..51529bc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetScheduledRecordingsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("MediaGrabOperation")] + public List? MediaGrabOperation { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsResponse.cs new file mode 100644 index 0000000..84c0a1d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetScheduledRecordingsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetScheduledRecordingsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsResponseBody.cs new file mode 100644 index 0000000..f585afa --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetScheduledRecordingsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetScheduledRecordingsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetScheduledRecordingsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesCountry.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesCountry.cs deleted file mode 100644 index 8c0ff66..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesCountry.cs +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchAllLibrariesCountry - { - - /// - /// The unique identifier for the country.
- /// - /// - /// NOTE: This is different for each Plex server and is not globally unique.
- /// - ///
- ///
- [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The country of origin of this media item - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesDirector.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesDirector.cs deleted file mode 100644 index e3c34e6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesDirector.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchAllLibrariesDirector - { - - /// - /// Unique identifier for the director. - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The role of Director - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// The absolute URL of the thumbnail image for the director. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesDirectory.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesDirectory.cs deleted file mode 100644 index 08245d5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesDirectory.cs +++ /dev/null @@ -1,87 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchAllLibrariesDirectory - { - - /// - /// The unique identifier path for the search result item. - /// - [JsonProperty("key")] - public string Key { get; set; } = default!; - - /// - /// The identifier for the library section. - /// - [JsonProperty("librarySectionID")] - public long LibrarySectionID { get; set; } = default!; - - /// - /// The key corresponding to the library section. - /// - [JsonProperty("librarySectionKey")] - public string LibrarySectionKey { get; set; } = default!; - - /// - /// The title of the library section. - /// - [JsonProperty("librarySectionTitle")] - public string LibrarySectionTitle { get; set; } = default!; - - [JsonProperty("librarySectionType")] - public long LibrarySectionType { get; } = 1; - - /// - /// The type of the directory. - /// - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// The filter string used to query this specific item in the library. - /// - [JsonProperty("filter")] - public string? Filter { get; set; } - - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// The type of tag associated with this search result (e.g., Director, Actor). - /// - [JsonProperty("tagType")] - public long TagType { get; } = 4; - - /// - /// The unique identifier for the tag associated with this search result. - /// - [JsonProperty("tagKey")] - public string? TagKey { get; set; } - - /// - /// The URL to the thumbnail image associated with this search result. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - /// - /// The number of items associated with this search result. - /// - [JsonProperty("count")] - public long? Count { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesFlattenSeasons.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesFlattenSeasons.cs deleted file mode 100644 index 20ce29b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesFlattenSeasons.cs +++ /dev/null @@ -1,84 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
- /// - /// - /// - /// - ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetSearchAllLibrariesFlattenSeasons : IEquatable - { - public static readonly GetSearchAllLibrariesFlattenSeasons LibraryDefault = new GetSearchAllLibrariesFlattenSeasons("-1"); - public static readonly GetSearchAllLibrariesFlattenSeasons Hide = new GetSearchAllLibrariesFlattenSeasons("0"); - public static readonly GetSearchAllLibrariesFlattenSeasons Show = new GetSearchAllLibrariesFlattenSeasons("1"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["-1"] = LibraryDefault, - ["0"] = Hide, - ["1"] = Show - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetSearchAllLibrariesFlattenSeasons(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetSearchAllLibrariesFlattenSeasons Of(string value) - { - return _values.GetOrAdd(value, _ => new GetSearchAllLibrariesFlattenSeasons(value)); - } - - public static implicit operator GetSearchAllLibrariesFlattenSeasons(string value) => Of(value); - public static implicit operator string(GetSearchAllLibrariesFlattenSeasons getsearchalllibrariesflattenseasons) => getsearchalllibrariesflattenseasons.Value; - - public static GetSearchAllLibrariesFlattenSeasons[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetSearchAllLibrariesFlattenSeasons); - - public bool Equals(GetSearchAllLibrariesFlattenSeasons? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesGenre.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesGenre.cs deleted file mode 100644 index c4bf1aa..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesGenre.cs +++ /dev/null @@ -1,39 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchAllLibrariesGenre - { - - /// - /// The unique identifier for the genre.
- /// - /// - /// NOTE: This is different for each Plex server and is not globally unique.
- /// - ///
- ///
- [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The genre name of this media-item
- /// - /// - /// - /// - ///
- [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesGuids.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesGuids.cs deleted file mode 100644 index d09f7e1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesGuids.cs +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchAllLibrariesGuids - { - - /// - /// The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
- /// - /// - /// - /// - ///
- [JsonProperty("id")] - public string Id { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesHasThumbnail.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesHasThumbnail.cs deleted file mode 100644 index b78819e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesHasThumbnail.cs +++ /dev/null @@ -1,64 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// Indicates if the part has a thumbnail.
- /// - /// - /// - /// - ///
- public enum GetSearchAllLibrariesHasThumbnail - { - [JsonProperty("0")] - False, - [JsonProperty("1")] - True, - } - - public static class GetSearchAllLibrariesHasThumbnailExtension - { - public static string Value(this GetSearchAllLibrariesHasThumbnail value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetSearchAllLibrariesHasThumbnail ToEnum(this string value) - { - foreach(var field in typeof(GetSearchAllLibrariesHasThumbnail).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 GetSearchAllLibrariesHasThumbnail) - { - return (GetSearchAllLibrariesHasThumbnail)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetSearchAllLibrariesHasThumbnail"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesImage.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesImage.cs deleted file mode 100644 index 6c5d752..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesImage.cs +++ /dev/null @@ -1,32 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetSearchAllLibrariesImage - { - - [JsonProperty("alt")] - public string Alt { get; set; } = default!; - - [JsonProperty("type")] - public GetSearchAllLibrariesLibraryType Type { get; set; } = default!; - - [JsonProperty("url")] - public string Url { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLibraryOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLibraryOptimizedForStreaming.cs deleted file mode 100644 index 4caa948..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLibraryOptimizedForStreaming.cs +++ /dev/null @@ -1,207 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using Newtonsoft.Json.Linq; - using System; - using System.Collections.Generic; - using System.Numerics; - using System.Reflection; - - public class GetSearchAllLibrariesLibraryOptimizedForStreamingType - { - private GetSearchAllLibrariesLibraryOptimizedForStreamingType(string value) { Value = value; } - - public string Value { get; private set; } - - public static GetSearchAllLibrariesLibraryOptimizedForStreamingType GetSearchAllLibrariesOptimizedForStreamingLibrary1 { get { return new GetSearchAllLibrariesLibraryOptimizedForStreamingType("get-search-all-libraries_optimizedForStreaming_Library_1"); } } - - public static GetSearchAllLibrariesLibraryOptimizedForStreamingType Boolean { get { return new GetSearchAllLibrariesLibraryOptimizedForStreamingType("boolean"); } } - - public static GetSearchAllLibrariesLibraryOptimizedForStreamingType Null { get { return new GetSearchAllLibrariesLibraryOptimizedForStreamingType("null"); } } - - public override string ToString() { return Value; } - public static implicit operator String(GetSearchAllLibrariesLibraryOptimizedForStreamingType v) { return v.Value; } - public static GetSearchAllLibrariesLibraryOptimizedForStreamingType FromString(string v) { - switch(v) { - case "get-search-all-libraries_optimizedForStreaming_Library_1": return GetSearchAllLibrariesOptimizedForStreamingLibrary1; - case "boolean": return Boolean; - case "null": return Null; - default: throw new ArgumentException("Invalid value for GetSearchAllLibrariesLibraryOptimizedForStreamingType"); - } - } - public override bool Equals(object? obj) - { - if (obj == null || GetType() != obj.GetType()) - { - return false; - } - return Value.Equals(((GetSearchAllLibrariesLibraryOptimizedForStreamingType)obj).Value); - } - - public override int GetHashCode() - { - return Value.GetHashCode(); - } - } - - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
- /// - /// - /// - /// - ///
- [JsonConverter(typeof(GetSearchAllLibrariesLibraryOptimizedForStreaming.GetSearchAllLibrariesLibraryOptimizedForStreamingConverter))] - public class GetSearchAllLibrariesLibraryOptimizedForStreaming - { - public GetSearchAllLibrariesLibraryOptimizedForStreaming(GetSearchAllLibrariesLibraryOptimizedForStreamingType type) - { - Type = type; - } - - [SpeakeasyMetadata("form:explode=true")] - public GetSearchAllLibrariesOptimizedForStreamingLibrary1? GetSearchAllLibrariesOptimizedForStreamingLibrary1 { get; set; } - - [SpeakeasyMetadata("form:explode=true")] - public bool? Boolean { get; set; } - - public GetSearchAllLibrariesLibraryOptimizedForStreamingType Type { get; set; } - public static GetSearchAllLibrariesLibraryOptimizedForStreaming CreateGetSearchAllLibrariesOptimizedForStreamingLibrary1(GetSearchAllLibrariesOptimizedForStreamingLibrary1 getSearchAllLibrariesOptimizedForStreamingLibrary1) - { - GetSearchAllLibrariesLibraryOptimizedForStreamingType typ = GetSearchAllLibrariesLibraryOptimizedForStreamingType.GetSearchAllLibrariesOptimizedForStreamingLibrary1; - - GetSearchAllLibrariesLibraryOptimizedForStreaming res = new GetSearchAllLibrariesLibraryOptimizedForStreaming(typ); - res.GetSearchAllLibrariesOptimizedForStreamingLibrary1 = getSearchAllLibrariesOptimizedForStreamingLibrary1; - return res; - } - public static GetSearchAllLibrariesLibraryOptimizedForStreaming CreateBoolean(bool boolean) - { - GetSearchAllLibrariesLibraryOptimizedForStreamingType typ = GetSearchAllLibrariesLibraryOptimizedForStreamingType.Boolean; - - GetSearchAllLibrariesLibraryOptimizedForStreaming res = new GetSearchAllLibrariesLibraryOptimizedForStreaming(typ); - res.Boolean = boolean; - return res; - } - - public static GetSearchAllLibrariesLibraryOptimizedForStreaming CreateNull() - { - GetSearchAllLibrariesLibraryOptimizedForStreamingType typ = GetSearchAllLibrariesLibraryOptimizedForStreamingType.Null; - return new GetSearchAllLibrariesLibraryOptimizedForStreaming(typ); - } - - public class GetSearchAllLibrariesLibraryOptimizedForStreamingConverter : JsonConverter - { - - public override bool CanConvert(System.Type objectType) => objectType == typeof(GetSearchAllLibrariesLibraryOptimizedForStreaming); - - public override bool CanRead => true; - - public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) - { - var json = JRaw.Create(reader).ToString(); - if (json == "null") - { - return null; - } - - var fallbackCandidates = new List<(System.Type, object, string)>(); - - try - { - return new GetSearchAllLibrariesLibraryOptimizedForStreaming(GetSearchAllLibrariesLibraryOptimizedForStreamingType.GetSearchAllLibrariesOptimizedForStreamingLibrary1) - { - GetSearchAllLibrariesOptimizedForStreamingLibrary1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) - }; - } - catch (ResponseBodyDeserializer.MissingMemberException) - { - fallbackCandidates.Add((typeof(GetSearchAllLibrariesOptimizedForStreamingLibrary1), new GetSearchAllLibrariesLibraryOptimizedForStreaming(GetSearchAllLibrariesLibraryOptimizedForStreamingType.GetSearchAllLibrariesOptimizedForStreamingLibrary1), "GetSearchAllLibrariesOptimizedForStreamingLibrary1")); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next option - } - catch (Exception) - { - throw; - } - - try - { - var converted = Convert.ToBoolean(json); - return new GetSearchAllLibrariesLibraryOptimizedForStreaming(GetSearchAllLibrariesLibraryOptimizedForStreamingType.Boolean) - { - Boolean = converted - }; - } - catch (System.FormatException) - { - // try next option - } - - if (fallbackCandidates.Count > 0) - { - fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); - foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) - { - try - { - return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next fallback option - } - catch (Exception) - { - throw; - } - } - } - - throw new InvalidOperationException("Could not deserialize into any supported types."); - } - - public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) - { - if (value == null) { - writer.WriteRawValue("null"); - return; - } - - GetSearchAllLibrariesLibraryOptimizedForStreaming res = (GetSearchAllLibrariesLibraryOptimizedForStreaming)value; - if (GetSearchAllLibrariesLibraryOptimizedForStreamingType.FromString(res.Type).Equals(GetSearchAllLibrariesLibraryOptimizedForStreamingType.Null)) - { - writer.WriteRawValue("null"); - return; - } - - if (res.GetSearchAllLibrariesOptimizedForStreamingLibrary1 != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.GetSearchAllLibrariesOptimizedForStreamingLibrary1)); - return; - } - - if (res.Boolean != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); - return; - } - } - - } - - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLibraryType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLibraryType.cs deleted file mode 100644 index 5f14ba0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLibraryType.cs +++ /dev/null @@ -1,79 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - [JsonConverter(typeof(OpenEnumConverter))] - public class GetSearchAllLibrariesLibraryType : IEquatable - { - public static readonly GetSearchAllLibrariesLibraryType CoverPoster = new GetSearchAllLibrariesLibraryType("coverPoster"); - public static readonly GetSearchAllLibrariesLibraryType Background = new GetSearchAllLibrariesLibraryType("background"); - public static readonly GetSearchAllLibrariesLibraryType Snapshot = new GetSearchAllLibrariesLibraryType("snapshot"); - public static readonly GetSearchAllLibrariesLibraryType ClearLogo = new GetSearchAllLibrariesLibraryType("clearLogo"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["coverPoster"] = CoverPoster, - ["background"] = Background, - ["snapshot"] = Snapshot, - ["clearLogo"] = ClearLogo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetSearchAllLibrariesLibraryType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetSearchAllLibrariesLibraryType Of(string value) - { - return _values.GetOrAdd(value, _ => new GetSearchAllLibrariesLibraryType(value)); - } - - public static implicit operator GetSearchAllLibrariesLibraryType(string value) => Of(value); - public static implicit operator string(GetSearchAllLibrariesLibraryType getsearchalllibrarieslibrarytype) => getsearchalllibrarieslibrarytype.Value; - - public static GetSearchAllLibrariesLibraryType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetSearchAllLibrariesLibraryType); - - public bool Equals(GetSearchAllLibrariesLibraryType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLocation.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLocation.cs deleted file mode 100644 index 2640833..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesLocation.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The folder path for the media item. - /// - public class GetSearchAllLibrariesLocation - { - - [JsonProperty("path")] - public string Path { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMedia.cs deleted file mode 100644 index 9fb6c31..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMedia.cs +++ /dev/null @@ -1,138 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetSearchAllLibrariesMedia - { - - /// - /// Unique media identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Duration of the media in milliseconds. - /// - [JsonProperty("duration")] - public int? Duration { get; set; } - - /// - /// Bitrate in bits per second. - /// - [JsonProperty("bitrate")] - public int? Bitrate { get; set; } - - /// - /// Video width in pixels. - /// - [JsonProperty("width")] - public int? Width { get; set; } - - /// - /// Video height in pixels. - /// - [JsonProperty("height")] - public int? Height { get; set; } - - /// - /// Aspect ratio of the video. - /// - [JsonProperty("aspectRatio")] - public float? AspectRatio { get; set; } - - /// - /// Number of audio channels. - /// - [JsonProperty("audioChannels")] - public int? AudioChannels { get; set; } - - [JsonProperty("displayOffset")] - public int? DisplayOffset { get; set; } - - /// - /// Audio codec used. - /// - [JsonProperty("audioCodec")] - public string? AudioCodec { get; set; } - - /// - /// Video codec used. - /// - [JsonProperty("videoCodec")] - public string? VideoCodec { get; set; } - - /// - /// Video resolution (e.g., 4k). - /// - [JsonProperty("videoResolution")] - public string? VideoResolution { get; set; } - - /// - /// Container format of the media. - /// - [JsonProperty("container")] - public string? Container { get; set; } - - /// - /// Frame rate of the video. Values found include NTSC, PAL, 24p
- /// - /// - /// - /// - ///
- [JsonProperty("videoFrameRate")] - public string? VideoFrameRate { get; set; } - - /// - /// Video profile (e.g., main 10). - /// - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - /// - /// Indicates whether voice activity is detected. - /// - [JsonProperty("hasVoiceActivity")] - public bool? HasVoiceActivity { get; set; } - - /// - /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). - /// - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonProperty("optimizedForStreaming")] - public GetSearchAllLibrariesOptimizedForStreaming? OptimizedForStreaming { get; set; } - - /// - /// Indicates whether the media has 64-bit offsets.
- /// - /// - /// This is relevant for media files that may require larger offsets than what 32-bit integers can provide.
- /// - ///
- ///
- [JsonProperty("has64bitOffsets")] - public bool? Has64bitOffsets { get; set; } - - [JsonProperty("Part")] - public List? Part { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMediaContainer.cs deleted file mode 100644 index 5d9926e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMediaContainer.cs +++ /dev/null @@ -1,71 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetSearchAllLibrariesMediaContainer - { - - /// - /// Number of media items returned in this response. - /// - [JsonProperty("size")] - public int Size { get; set; } = default!; - - /// - /// Indicates whether syncing is allowed. - /// - [JsonProperty("allowSync")] - public bool AllowSync { get; set; } = default!; - - /// - /// An plugin identifier for the media container. - /// - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - /// - /// The unique identifier for the library section. - /// - [JsonProperty("librarySectionID")] - public long? LibrarySectionID { get; set; } - - /// - /// The title of the library section. - /// - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - /// - /// The universally unique identifier for the library section. - /// - [JsonProperty("librarySectionUUID")] - public string? LibrarySectionUUID { get; set; } - - /// - /// The prefix used for media tag resource paths. - /// - [JsonProperty("mediaTagPrefix")] - public string MediaTagPrefix { get; set; } = default!; - - /// - /// The version number for media tags. - /// - [JsonProperty("mediaTagVersion")] - public long MediaTagVersion { get; set; } = default!; - - [JsonProperty("SearchResult")] - public List SearchResult { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMetadata.cs deleted file mode 100644 index e38c370..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesMetadata.cs +++ /dev/null @@ -1,441 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using NodaTime; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Unknown
- /// - /// - /// - /// - ///
- public class GetSearchAllLibrariesMetadata - { - - /// - /// The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. - /// - [JsonProperty("ratingKey")] - public string RatingKey { get; set; } = default!; - - /// - /// The unique key for the media item. - /// - [JsonProperty("key")] - public string Key { get; set; } = default!; - - /// - /// The globally unique identifier for the media item. - /// - [JsonProperty("guid")] - public string Guid { get; set; } = default!; - - /// - /// A URL‐friendly version of the media title. - /// - [JsonProperty("slug")] - public string Slug { get; set; } = default!; - - /// - /// The studio that produced the media item. - /// - [JsonProperty("studio")] - public string? Studio { get; set; } - - [JsonProperty("type")] - public GetSearchAllLibrariesType Type { get; set; } = default!; - - /// - /// The title of the media item. - /// - [JsonProperty("title")] - public string Title { get; set; } = default!; - - /// - /// The banner image URL for the media item. - /// - [JsonProperty("banner")] - public string Banner { get; set; } = default!; - - /// - /// The sort title used for ordering media items. - /// - [JsonProperty("titleSort")] - public string TitleSort { get; set; } = default!; - - /// - /// The content rating for the media item. - /// - [JsonProperty("contentRating")] - public string? ContentRating { get; set; } - - /// - /// A synopsis of the media item. - /// - [JsonProperty("summary")] - public string Summary { get; set; } = default!; - - /// - /// The critic rating for the media item. - /// - [JsonProperty("rating")] - public float Rating { get; set; } = default!; - - /// - /// The audience rating for the media item. - /// - [JsonProperty("audienceRating")] - public double AudienceRating { get; set; } = default!; - - /// - /// The release year of the media item. - /// - [JsonProperty("year")] - public int? Year { get; set; } - - /// - /// A brief tagline for the media item. - /// - [JsonProperty("tagline")] - public string Tagline { get; set; } = default!; - - /// - /// The thumbnail image URL for the media item. - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The art image URL for the media item. - /// - [JsonProperty("art")] - public string Art { get; set; } = default!; - - /// - /// The theme URL for the media item. - /// - [JsonProperty("theme")] - public string Theme { get; set; } = default!; - - /// - /// The index position of the media item. - /// - [JsonProperty("index")] - public int Index { get; set; } = default!; - - /// - /// The number of leaf items (end nodes) under this media item. - /// - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - /// - /// The number of leaf items that have been viewed. - /// - [JsonProperty("viewedLeafCount")] - public int? ViewedLeafCount { get; set; } - - /// - /// The number of child items associated with this media item. - /// - [JsonProperty("childCount")] - public int ChildCount { get; set; } = default!; - - /// - /// The total number of seasons (for TV shows). - /// - [JsonProperty("seasonCount")] - public int SeasonCount { get; set; } = default!; - - /// - /// The duration of the media item in milliseconds. - /// - [JsonProperty("duration")] - public int Duration { get; set; } = default!; - - /// - /// The original release date of the media item. - /// - [JsonProperty("originallyAvailableAt")] - public LocalDate? OriginallyAvailableAt { get; set; } - - [JsonProperty("addedAt")] - public long AddedAt { get; set; } = default!; - - /// - /// Unix epoch datetime in seconds - /// - [JsonProperty("updatedAt")] - public long? UpdatedAt { get; set; } - - /// - /// The release year of the parent media item. - /// - [JsonProperty("parentYear")] - public int? ParentYear { get; set; } - - /// - /// The URL for the audience rating image. - /// - [JsonProperty("audienceRatingImage")] - public string? AudienceRatingImage { get; set; } - - /// - /// The source from which chapter data is derived. - /// - [JsonProperty("chapterSource")] - public string? ChapterSource { get; set; } - - /// - /// The primary extra key associated with this media item. - /// - [JsonProperty("primaryExtraKey")] - public string? PrimaryExtraKey { get; set; } - - /// - /// The original title of the media item (if different). - /// - [JsonProperty("originalTitle")] - public string? OriginalTitle { get; set; } - - /// - /// The rating key of the parent media item. - /// - [JsonProperty("parentRatingKey")] - public string? ParentRatingKey { get; set; } - - /// - /// The rating key of the grandparent media item. - /// - [JsonProperty("grandparentRatingKey")] - public string? GrandparentRatingKey { get; set; } - - /// - /// The GUID of the parent media item. - /// - [JsonProperty("parentGuid")] - public string? ParentGuid { get; set; } - - /// - /// The GUID of the grandparent media item. - /// - [JsonProperty("grandparentGuid")] - public string? GrandparentGuid { get; set; } - - /// - /// The slug for the grandparent media item. - /// - [JsonProperty("grandparentSlug")] - public string? GrandparentSlug { get; set; } - - /// - /// The key of the grandparent media item. - /// - [JsonProperty("grandparentKey")] - public string? GrandparentKey { get; set; } - - /// - /// The key of the parent media item. - /// - [JsonProperty("parentKey")] - public string? ParentKey { get; set; } - - /// - /// The title of the grandparent media item. - /// - [JsonProperty("grandparentTitle")] - public string? GrandparentTitle { get; set; } - - /// - /// The thumbnail URL for the grandparent media item. - /// - [JsonProperty("grandparentThumb")] - public string? GrandparentThumb { get; set; } - - /// - /// The theme URL for the grandparent media item. - /// - [JsonProperty("grandparentTheme")] - public string? GrandparentTheme { get; set; } - - /// - /// The art URL for the grandparent media item. - /// - [JsonProperty("grandparentArt")] - public string? GrandparentArt { get; set; } - - /// - /// The title of the parent media item. - /// - [JsonProperty("parentTitle")] - public string? ParentTitle { get; set; } - - /// - /// The index position of the parent media item. - /// - [JsonProperty("parentIndex")] - public int? ParentIndex { get; set; } - - /// - /// The thumbnail URL for the parent media item. - /// - [JsonProperty("parentThumb")] - public string? ParentThumb { get; set; } - - /// - /// The URL for the rating image. - /// - [JsonProperty("ratingImage")] - public string? RatingImage { get; set; } - - /// - /// The number of times this media item has been viewed. - /// - [JsonProperty("viewCount")] - public int? ViewCount { get; set; } - - /// - /// The current playback offset (in milliseconds). - /// - [JsonProperty("viewOffset")] - public int? ViewOffset { get; set; } - - /// - /// The number of times this media item has been skipped. - /// - [JsonProperty("skipCount")] - public int? SkipCount { get; set; } - - /// - /// A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. - /// - [JsonProperty("subtype")] - public string? Subtype { get; set; } - - /// - /// The Unix timestamp representing the last time the item was rated. - /// - [JsonProperty("lastRatedAt")] - public long? LastRatedAt { get; set; } - - /// - /// The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). - /// - [JsonProperty("createdAtAccuracy")] - public string? CreatedAtAccuracy { get; set; } - - /// - /// The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. - /// - [JsonProperty("createdAtTZOffset")] - public string? CreatedAtTZOffset { get; set; } - - /// - /// Unix timestamp for when the media item was last viewed. - /// - [JsonProperty("lastViewedAt")] - public int? LastViewedAt { get; set; } - - /// - /// The rating provided by a user for the item. This value is expressed as a decimal number. - /// - [JsonProperty("userRating")] - public float? UserRating { get; set; } - - [JsonProperty("Image")] - public List? Image { get; set; } - - [JsonProperty("UltraBlurColors")] - public GetSearchAllLibrariesUltraBlurColors? UltraBlurColors { get; set; } - - [JsonProperty("Guid")] - public List? Guids { get; set; } - - /// - /// The identifier for the library section. - /// - [JsonProperty("librarySectionID")] - public long? LibrarySectionID { get; set; } - - /// - /// The title of the library section. - /// - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - /// - /// The key corresponding to the library section. - /// - [JsonProperty("librarySectionKey")] - public string? LibrarySectionKey { get; set; } - - /// - /// Setting that indicates the episode ordering for the show.
- /// - /// - /// Options:
- /// - None = Library default
- /// - tmdbAiring = The Movie Database (Aired)
- /// - aired = TheTVDB (Aired)
- /// - dvd = TheTVDB (DVD)
- /// - absolute = TheTVDB (Absolute)
- /// - ///
- ///
- [JsonProperty("showOrdering")] - public GetSearchAllLibrariesShowOrdering? ShowOrdering { get; set; } - - /// - /// Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
- /// - /// - /// - /// - ///
- [JsonProperty("flattenSeasons")] - public GetSearchAllLibrariesFlattenSeasons? FlattenSeasons { get; set; } - - /// - /// Indicates whether child items should be skipped. - /// - [JsonProperty("skipChildren")] - public bool? SkipChildren { get; set; } - - [JsonProperty("Media")] - public List? Media { get; set; } - - [JsonProperty("Genre")] - public List? Genre { get; set; } - - [JsonProperty("Country")] - public List? Country { get; set; } - - [JsonProperty("Director")] - public List? Director { get; set; } - - [JsonProperty("Writer")] - public List? Writer { get; set; } - - [JsonProperty("Role")] - public List? Role { get; set; } - - [JsonProperty("Location")] - public List? Location { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming.cs deleted file mode 100644 index b8e8e01..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming.cs +++ /dev/null @@ -1,203 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using Newtonsoft.Json.Linq; - using System; - using System.Collections.Generic; - using System.Numerics; - using System.Reflection; - - public class GetSearchAllLibrariesOptimizedForStreamingType - { - private GetSearchAllLibrariesOptimizedForStreamingType(string value) { Value = value; } - - public string Value { get; private set; } - - public static GetSearchAllLibrariesOptimizedForStreamingType GetSearchAllLibrariesOptimizedForStreaming1 { get { return new GetSearchAllLibrariesOptimizedForStreamingType("get-search-all-libraries_optimizedForStreaming_1"); } } - - public static GetSearchAllLibrariesOptimizedForStreamingType Boolean { get { return new GetSearchAllLibrariesOptimizedForStreamingType("boolean"); } } - - public static GetSearchAllLibrariesOptimizedForStreamingType Null { get { return new GetSearchAllLibrariesOptimizedForStreamingType("null"); } } - - public override string ToString() { return Value; } - public static implicit operator String(GetSearchAllLibrariesOptimizedForStreamingType v) { return v.Value; } - public static GetSearchAllLibrariesOptimizedForStreamingType FromString(string v) { - switch(v) { - case "get-search-all-libraries_optimizedForStreaming_1": return GetSearchAllLibrariesOptimizedForStreaming1; - case "boolean": return Boolean; - case "null": return Null; - default: throw new ArgumentException("Invalid value for GetSearchAllLibrariesOptimizedForStreamingType"); - } - } - public override bool Equals(object? obj) - { - if (obj == null || GetType() != obj.GetType()) - { - return false; - } - return Value.Equals(((GetSearchAllLibrariesOptimizedForStreamingType)obj).Value); - } - - public override int GetHashCode() - { - return Value.GetHashCode(); - } - } - - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonConverter(typeof(GetSearchAllLibrariesOptimizedForStreaming.GetSearchAllLibrariesOptimizedForStreamingConverter))] - public class GetSearchAllLibrariesOptimizedForStreaming - { - public GetSearchAllLibrariesOptimizedForStreaming(GetSearchAllLibrariesOptimizedForStreamingType type) - { - Type = type; - } - - [SpeakeasyMetadata("form:explode=true")] - public GetSearchAllLibrariesOptimizedForStreaming1? GetSearchAllLibrariesOptimizedForStreaming1 { get; set; } - - [SpeakeasyMetadata("form:explode=true")] - public bool? Boolean { get; set; } - - public GetSearchAllLibrariesOptimizedForStreamingType Type { get; set; } - public static GetSearchAllLibrariesOptimizedForStreaming CreateGetSearchAllLibrariesOptimizedForStreaming1(GetSearchAllLibrariesOptimizedForStreaming1 getSearchAllLibrariesOptimizedForStreaming1) - { - GetSearchAllLibrariesOptimizedForStreamingType typ = GetSearchAllLibrariesOptimizedForStreamingType.GetSearchAllLibrariesOptimizedForStreaming1; - - GetSearchAllLibrariesOptimizedForStreaming res = new GetSearchAllLibrariesOptimizedForStreaming(typ); - res.GetSearchAllLibrariesOptimizedForStreaming1 = getSearchAllLibrariesOptimizedForStreaming1; - return res; - } - public static GetSearchAllLibrariesOptimizedForStreaming CreateBoolean(bool boolean) - { - GetSearchAllLibrariesOptimizedForStreamingType typ = GetSearchAllLibrariesOptimizedForStreamingType.Boolean; - - GetSearchAllLibrariesOptimizedForStreaming res = new GetSearchAllLibrariesOptimizedForStreaming(typ); - res.Boolean = boolean; - return res; - } - - public static GetSearchAllLibrariesOptimizedForStreaming CreateNull() - { - GetSearchAllLibrariesOptimizedForStreamingType typ = GetSearchAllLibrariesOptimizedForStreamingType.Null; - return new GetSearchAllLibrariesOptimizedForStreaming(typ); - } - - public class GetSearchAllLibrariesOptimizedForStreamingConverter : JsonConverter - { - - public override bool CanConvert(System.Type objectType) => objectType == typeof(GetSearchAllLibrariesOptimizedForStreaming); - - public override bool CanRead => true; - - public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) - { - var json = JRaw.Create(reader).ToString(); - if (json == "null") - { - return null; - } - - var fallbackCandidates = new List<(System.Type, object, string)>(); - - try - { - return new GetSearchAllLibrariesOptimizedForStreaming(GetSearchAllLibrariesOptimizedForStreamingType.GetSearchAllLibrariesOptimizedForStreaming1) - { - GetSearchAllLibrariesOptimizedForStreaming1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) - }; - } - catch (ResponseBodyDeserializer.MissingMemberException) - { - fallbackCandidates.Add((typeof(GetSearchAllLibrariesOptimizedForStreaming1), new GetSearchAllLibrariesOptimizedForStreaming(GetSearchAllLibrariesOptimizedForStreamingType.GetSearchAllLibrariesOptimizedForStreaming1), "GetSearchAllLibrariesOptimizedForStreaming1")); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next option - } - catch (Exception) - { - throw; - } - - try - { - var converted = Convert.ToBoolean(json); - return new GetSearchAllLibrariesOptimizedForStreaming(GetSearchAllLibrariesOptimizedForStreamingType.Boolean) - { - Boolean = converted - }; - } - catch (System.FormatException) - { - // try next option - } - - if (fallbackCandidates.Count > 0) - { - fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); - foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) - { - try - { - return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next fallback option - } - catch (Exception) - { - throw; - } - } - } - - throw new InvalidOperationException("Could not deserialize into any supported types."); - } - - public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) - { - if (value == null) { - writer.WriteRawValue("null"); - return; - } - - GetSearchAllLibrariesOptimizedForStreaming res = (GetSearchAllLibrariesOptimizedForStreaming)value; - if (GetSearchAllLibrariesOptimizedForStreamingType.FromString(res.Type).Equals(GetSearchAllLibrariesOptimizedForStreamingType.Null)) - { - writer.WriteRawValue("null"); - return; - } - - if (res.GetSearchAllLibrariesOptimizedForStreaming1 != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.GetSearchAllLibrariesOptimizedForStreaming1)); - return; - } - - if (res.Boolean != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); - return; - } - } - - } - - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming1.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming1.cs deleted file mode 100644 index 96ba53c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming1.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum GetSearchAllLibrariesOptimizedForStreaming1 - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreamingLibrary1.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreamingLibrary1.cs deleted file mode 100644 index fe3710b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesOptimizedForStreamingLibrary1.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum GetSearchAllLibrariesOptimizedForStreamingLibrary1 - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesPart.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesPart.cs deleted file mode 100644 index 7673d69..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesPart.cs +++ /dev/null @@ -1,102 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchAllLibrariesPart - { - - /// - /// Indicates if the part is accessible. - /// - [JsonProperty("accessible")] - public bool? Accessible { get; set; } - - /// - /// Indicates if the part exists. - /// - [JsonProperty("exists")] - public bool? Exists { get; set; } - - /// - /// Unique part identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Key to access this part. - /// - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("indexes")] - public string? Indexes { get; set; } - - /// - /// Duration of the part in milliseconds. - /// - [JsonProperty("duration")] - public int? Duration { get; set; } - - /// - /// File path for the part. - /// - [JsonProperty("file")] - public string? File { get; set; } - - /// - /// File size in bytes. - /// - [JsonProperty("size")] - public long? Size { get; set; } - - [JsonProperty("packetLength")] - public int? PacketLength { get; set; } - - /// - /// Container format of the part. - /// - [JsonProperty("container")] - public string? Container { get; set; } - - /// - /// Video profile for the part. - /// - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - /// - /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). - /// - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - [JsonProperty("has64bitOffsets")] - public bool? Has64bitOffsets { get; set; } - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
- /// - /// - /// - /// - ///
- [JsonProperty("optimizedForStreaming")] - public GetSearchAllLibrariesLibraryOptimizedForStreaming? OptimizedForStreaming { get; set; } - - [JsonProperty("hasThumbnail")] - public GetSearchAllLibrariesHasThumbnail? HasThumbnail { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetSearchAllLibrariesHasThumbnail.False; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesQueryParamIncludeCollections.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesQueryParamIncludeCollections.cs deleted file mode 100644 index c6ae7c0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesQueryParamIncludeCollections.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Whether to include collections in the search results. - /// - public enum GetSearchAllLibrariesQueryParamIncludeCollections - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesQueryParamIncludeExternalMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesQueryParamIncludeExternalMedia.cs deleted file mode 100644 index 10467fb..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesQueryParamIncludeExternalMedia.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Whether to include external media in the search results. - /// - public enum GetSearchAllLibrariesQueryParamIncludeExternalMedia - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesRequest.cs deleted file mode 100644 index 12049f7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesRequest.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetSearchAllLibrariesRequest - { - - /// - /// The search query term. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=query")] - public string Query { get; set; } = default!; - - /// - /// An opaque identifier unique to the client (UUID, serial number, or other unique device ID) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] - public string ClientID { get; set; } = default!; - - /// - /// Limit the number of results returned. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=limit")] - public long? Limit { get; set; } - - /// - /// A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=false,name=searchTypes")] - public List? SearchTypes { get; set; } - - /// - /// Whether to include collections in the search results. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeCollections")] - public GetSearchAllLibrariesQueryParamIncludeCollections? IncludeCollections { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetSearchAllLibrariesQueryParamIncludeCollections.Disable; - - /// - /// Whether to include external media in the search results. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeExternalMedia")] - public GetSearchAllLibrariesQueryParamIncludeExternalMedia? IncludeExternalMedia { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetSearchAllLibrariesQueryParamIncludeExternalMedia.Disable; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesResponse.cs deleted file mode 100644 index 41352ce..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetSearchAllLibrariesResponse - { - - /// - /// 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 libraries available on the Server - /// - public GetSearchAllLibrariesResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesResponseBody.cs deleted file mode 100644 index 677b811..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The libraries available on the Server - /// - public class GetSearchAllLibrariesResponseBody - { - - [JsonProperty("MediaContainer")] - public GetSearchAllLibrariesMediaContainer MediaContainer { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesRole.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesRole.cs deleted file mode 100644 index 4bf1f1f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesRole.cs +++ /dev/null @@ -1,47 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchAllLibrariesRole - { - - /// - /// The unique identifier for the role.
- /// - /// - /// NOTE: This is different for each Plex server and is not globally unique.
- /// - ///
- ///
- [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The display tag for the actor (typically the actor's name). - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// The role played by the actor in the media item. - /// - [JsonProperty("role")] - public string? Role { get; set; } - - /// - /// The absolute URL of the thumbnail image for the actor. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesShowOrdering.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesShowOrdering.cs deleted file mode 100644 index bfaeba4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesShowOrdering.cs +++ /dev/null @@ -1,94 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Setting that indicates the episode ordering for the show.
- /// - /// - /// Options:
- /// - None = Library default
- /// - tmdbAiring = The Movie Database (Aired)
- /// - aired = TheTVDB (Aired)
- /// - dvd = TheTVDB (DVD)
- /// - absolute = TheTVDB (Absolute)
- /// - ///
- ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetSearchAllLibrariesShowOrdering : IEquatable - { - public static readonly GetSearchAllLibrariesShowOrdering None = new GetSearchAllLibrariesShowOrdering("None"); - public static readonly GetSearchAllLibrariesShowOrdering TmdbAiring = new GetSearchAllLibrariesShowOrdering("tmdbAiring"); - public static readonly GetSearchAllLibrariesShowOrdering TvdbAired = new GetSearchAllLibrariesShowOrdering("aired"); - public static readonly GetSearchAllLibrariesShowOrdering TvdbDvd = new GetSearchAllLibrariesShowOrdering("dvd"); - public static readonly GetSearchAllLibrariesShowOrdering TvdbAbsolute = new GetSearchAllLibrariesShowOrdering("absolute"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["None"] = None, - ["tmdbAiring"] = TmdbAiring, - ["aired"] = TvdbAired, - ["dvd"] = TvdbDvd, - ["absolute"] = TvdbAbsolute - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetSearchAllLibrariesShowOrdering(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetSearchAllLibrariesShowOrdering Of(string value) - { - return _values.GetOrAdd(value, _ => new GetSearchAllLibrariesShowOrdering(value)); - } - - public static implicit operator GetSearchAllLibrariesShowOrdering(string value) => Of(value); - public static implicit operator string(GetSearchAllLibrariesShowOrdering getsearchalllibrariesshowordering) => getsearchalllibrariesshowordering.Value; - - public static GetSearchAllLibrariesShowOrdering[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetSearchAllLibrariesShowOrdering); - - public bool Equals(GetSearchAllLibrariesShowOrdering? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesType.cs deleted file mode 100644 index 9cae99d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesType.cs +++ /dev/null @@ -1,98 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media content in the Plex library. This can represent videos, music, or photos.
- /// - /// - /// - /// - ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetSearchAllLibrariesType : IEquatable - { - public static readonly GetSearchAllLibrariesType Movie = new GetSearchAllLibrariesType("movie"); - public static readonly GetSearchAllLibrariesType TvShow = new GetSearchAllLibrariesType("show"); - public static readonly GetSearchAllLibrariesType Season = new GetSearchAllLibrariesType("season"); - public static readonly GetSearchAllLibrariesType Episode = new GetSearchAllLibrariesType("episode"); - public static readonly GetSearchAllLibrariesType Artist = new GetSearchAllLibrariesType("artist"); - public static readonly GetSearchAllLibrariesType Album = new GetSearchAllLibrariesType("album"); - public static readonly GetSearchAllLibrariesType Track = new GetSearchAllLibrariesType("track"); - public static readonly GetSearchAllLibrariesType PhotoAlbum = new GetSearchAllLibrariesType("photoalbum"); - public static readonly GetSearchAllLibrariesType Photo = new GetSearchAllLibrariesType("photo"); - public static readonly GetSearchAllLibrariesType Collection = new GetSearchAllLibrariesType("collection"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["movie"] = Movie, - ["show"] = TvShow, - ["season"] = Season, - ["episode"] = Episode, - ["artist"] = Artist, - ["album"] = Album, - ["track"] = Track, - ["photoalbum"] = PhotoAlbum, - ["photo"] = Photo, - ["collection"] = Collection - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetSearchAllLibrariesType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetSearchAllLibrariesType Of(string value) - { - return _values.GetOrAdd(value, _ => new GetSearchAllLibrariesType(value)); - } - - public static implicit operator GetSearchAllLibrariesType(string value) => Of(value); - public static implicit operator string(GetSearchAllLibrariesType getsearchalllibrariestype) => getsearchalllibrariestype.Value; - - public static GetSearchAllLibrariesType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetSearchAllLibrariesType); - - public bool Equals(GetSearchAllLibrariesType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesUltraBlurColors.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesUltraBlurColors.cs deleted file mode 100644 index 03cc311..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesUltraBlurColors.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchAllLibrariesUltraBlurColors - { - - [JsonProperty("topLeft")] - public string TopLeft { get; set; } = default!; - - [JsonProperty("topRight")] - public string TopRight { get; set; } = default!; - - [JsonProperty("bottomRight")] - public string BottomRight { get; set; } = default!; - - [JsonProperty("bottomLeft")] - public string BottomLeft { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesWriter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesWriter.cs deleted file mode 100644 index c561424..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchAllLibrariesWriter.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchAllLibrariesWriter - { - - /// - /// Unique identifier for the writer. - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The role of Writer - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// The absolute URL of the thumbnail image for the writer. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryMediaContainer.cs deleted file mode 100644 index 263843f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryMediaContainer.cs +++ /dev/null @@ -1,59 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetSearchLibraryMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("allowSync")] - public bool? AllowSync { get; set; } - - [JsonProperty("art")] - public string? Art { get; set; } - - [JsonProperty("identifier")] - public string? Identifier { get; set; } - - [JsonProperty("mediaTagPrefix")] - public string? MediaTagPrefix { get; set; } - - [JsonProperty("mediaTagVersion")] - public int? MediaTagVersion { get; set; } - - [JsonProperty("nocache")] - public bool? Nocache { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - [JsonProperty("title1")] - public string? Title1 { get; set; } - - [JsonProperty("title2")] - public string? Title2 { get; set; } - - [JsonProperty("viewGroup")] - public string? ViewGroup { get; set; } - - [JsonProperty("viewMode")] - public int? ViewMode { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryMetadata.cs deleted file mode 100644 index fd46abe..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryMetadata.cs +++ /dev/null @@ -1,78 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchLibraryMetadata - { - - [JsonProperty("ratingKey")] - public string? RatingKey { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("parentRatingKey")] - public string? ParentRatingKey { get; set; } - - [JsonProperty("guid")] - public string? Guid { get; set; } - - [JsonProperty("parentGuid")] - public string? ParentGuid { get; set; } - - [JsonProperty("parentStudio")] - public string? ParentStudio { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("parentKey")] - public string? ParentKey { get; set; } - - [JsonProperty("parentTitle")] - public string? ParentTitle { get; set; } - - [JsonProperty("summary")] - public string? Summary { get; set; } - - [JsonProperty("index")] - public int? Index { get; set; } - - [JsonProperty("parentIndex")] - public int? ParentIndex { get; set; } - - [JsonProperty("parentYear")] - public int? ParentYear { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - [JsonProperty("art")] - public string? Art { get; set; } - - [JsonProperty("parentThumb")] - public string? ParentThumb { get; set; } - - [JsonProperty("parentTheme")] - public string? ParentTheme { get; set; } - - [JsonProperty("addedAt")] - public int? AddedAt { get; set; } - - [JsonProperty("updatedAt")] - public int? UpdatedAt { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryQueryParamType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryQueryParamType.cs deleted file mode 100644 index 957a88d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryQueryParamType.cs +++ /dev/null @@ -1,100 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetSearchLibraryQueryParamType : IEquatable - { - public static readonly GetSearchLibraryQueryParamType Movie = new GetSearchLibraryQueryParamType(1); - public static readonly GetSearchLibraryQueryParamType TvShow = new GetSearchLibraryQueryParamType(2); - public static readonly GetSearchLibraryQueryParamType Season = new GetSearchLibraryQueryParamType(3); - public static readonly GetSearchLibraryQueryParamType Episode = new GetSearchLibraryQueryParamType(4); - public static readonly GetSearchLibraryQueryParamType Artist = new GetSearchLibraryQueryParamType(5); - public static readonly GetSearchLibraryQueryParamType Album = new GetSearchLibraryQueryParamType(6); - public static readonly GetSearchLibraryQueryParamType Track = new GetSearchLibraryQueryParamType(7); - public static readonly GetSearchLibraryQueryParamType PhotoAlbum = new GetSearchLibraryQueryParamType(8); - public static readonly GetSearchLibraryQueryParamType Photo = new GetSearchLibraryQueryParamType(9); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - [1] = Movie, - [2] = TvShow, - [3] = Season, - [4] = Episode, - [5] = Artist, - [6] = Album, - [7] = Track, - [8] = PhotoAlbum, - [9] = Photo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetSearchLibraryQueryParamType(long value) - { - Value = value; - } - - public long Value { get; } - - public static GetSearchLibraryQueryParamType Of(long value) - { - return _values.GetOrAdd(value, _ => new GetSearchLibraryQueryParamType(value)); - } - - public static implicit operator GetSearchLibraryQueryParamType(long value) => Of(value); - public static implicit operator long(GetSearchLibraryQueryParamType getsearchlibraryqueryparamtype) => getsearchlibraryqueryparamtype.Value; - - public static GetSearchLibraryQueryParamType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetSearchLibraryQueryParamType); - - public bool Equals(GetSearchLibraryQueryParamType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryRequest.cs deleted file mode 100644 index c17bcad..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryRequest.cs +++ /dev/null @@ -1,49 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetSearchLibraryRequest - { - - /// - /// The unique key of the Plex library.
- /// - /// - /// Note: This is unique in the context of the Plex server.
- /// - ///
- ///
- [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionKey")] - public int SectionKey { get; set; } = default!; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] - public GetSearchLibraryQueryParamType Type { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryResponse.cs deleted file mode 100644 index a1b3e65..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetSearchLibraryResponse - { - - /// - /// 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 contents of the library by section and type - /// - public GetSearchLibraryResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryResponseBody.cs deleted file mode 100644 index 5b96f08..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchLibraryResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The contents of the library by section and type - /// - public class GetSearchLibraryResponseBody - { - - [JsonProperty("MediaContainer")] - public GetSearchLibraryMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsCountry.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsCountry.cs deleted file mode 100644 index f99078a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsCountry.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchResultsCountry - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsDirector.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsDirector.cs deleted file mode 100644 index 13ba765..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsDirector.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchResultsDirector - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsGenre.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsGenre.cs deleted file mode 100644 index 42c582b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsGenre.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchResultsGenre - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMedia.cs deleted file mode 100644 index 501d42e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMedia.cs +++ /dev/null @@ -1,65 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMediaContainer.cs deleted file mode 100644 index ef14bda..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMediaContainer.cs +++ /dev/null @@ -1,38 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMetadata.cs deleted file mode 100644 index e3909bf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsMetadata.cs +++ /dev/null @@ -1,123 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsPart.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsPart.cs deleted file mode 100644 index 3b4f72d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsPart.cs +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsRequest.cs deleted file mode 100644 index 08d1839..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsRequest.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.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/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsResponse.cs deleted file mode 100644 index bba80f3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsResponseBody.cs deleted file mode 100644 index e7683f1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Search Results - /// - public class GetSearchResultsResponseBody - { - - [JsonProperty("MediaContainer")] - public GetSearchResultsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsRole.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsRole.cs deleted file mode 100644 index 57f2d01..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsRole.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchResultsRole - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsWriter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsWriter.cs deleted file mode 100644 index 1b5b8a6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSearchResultsWriter.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSearchResultsWriter - { - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersMediaContainer.cs new file mode 100644 index 0000000..fd58d0d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetSectionFiltersMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Directory")] + public List? Directory { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersRequest.cs new file mode 100644 index 0000000..d8e8316 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetSectionFiltersRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersResponse.cs new file mode 100644 index 0000000..12929c1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetSectionFiltersResponse + { + + /// + /// 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 filters on the section + /// + public GetSectionFiltersResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersResponseBody.cs new file mode 100644 index 0000000..cfb3352 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionFiltersResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// The filters on the section + /// + public class GetSectionFiltersResponseBody + { + + [JsonProperty("MediaContainer")] + public GetSectionFiltersMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsMediaContainer.cs new file mode 100644 index 0000000..1a4ae4b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetSectionHubsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Hub")] + public List? Hub { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsRequest.cs new file mode 100644 index 0000000..cb4c8ee --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetSectionHubsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The section ID for the hubs to fetch + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// Limit results to count items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=count")] + public long? 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 BoolInt? OnlyTransient { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsResponse.cs new file mode 100644 index 0000000..01a4d9a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetSectionHubsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetSectionHubsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsResponseBody.cs new file mode 100644 index 0000000..fda488d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionHubsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetSectionHubsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetSectionHubsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionImageRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionImageRequest.cs new file mode 100644 index 0000000..4433883 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionImageRequest.cs @@ -0,0 +1,105 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetSectionImageRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// The update time of the image. Used for busting cache. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=updatedAt")] + public long UpdatedAt { get; set; } = default!; + + /// + /// This is a complex query built of several parameters. See API Info section for information on building media queries + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")] + public MediaQuery? MediaQuery { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=composite")] + public Composite? Composite { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionImageResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionImageResponse.cs new file mode 100644 index 0000000..b7b9329 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionImageResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetSectionImageResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionPreferencesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionPreferencesRequest.cs new file mode 100644 index 0000000..9997a84 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionPreferencesRequest.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetSectionPreferencesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=agent")] + public string? Agent { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionPreferencesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionPreferencesResponse.cs new file mode 100644 index 0000000..10eab93 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionPreferencesResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetSectionPreferencesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithSettings? MediaContainerWithSettings { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsMediaContainer.cs new file mode 100644 index 0000000..c6d8bbf --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsMediaContainer.cs @@ -0,0 +1,67 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetSectionsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("allowSync")] + public bool? AllowSync { get; set; } + + [JsonProperty("Directory")] + public List? Directory { get; set; } + + /// + /// Typically just "Plex Library" + /// + [JsonProperty("title1")] + public string? Title1 { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsPrefsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsPrefsRequest.cs new file mode 100644 index 0000000..e1f45fc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsPrefsRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetSectionsPrefsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The metadata type + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long Type { get; set; } = default!; + + /// + /// The metadata agent in use + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=agent")] + public string? Agent { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsPrefsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsPrefsResponse.cs new file mode 100644 index 0000000..3d5be9c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsPrefsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetSectionsPrefsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public RequestHandlerSlashGetResponses200? RequestHandlerSlashGetResponses200 { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsResponse.cs new file mode 100644 index 0000000..8194ef4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetSectionsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetSectionsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsResponseBody.cs new file mode 100644 index 0000000..a487660 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSectionsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetSectionsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetSectionsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesMediaContainer.cs deleted file mode 100644 index 5f493f4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesMediaContainer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesResponse.cs deleted file mode 100644 index 6fc2f55..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesResponseBody.cs deleted file mode 100644 index aab09a2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerActivitiesResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerCapabilitiesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerCapabilitiesResponse.cs deleted file mode 100644 index 3d4cce7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerCapabilitiesResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerCapabilitiesResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerCapabilitiesResponseBody.cs deleted file mode 100644 index a1c0578..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerCapabilitiesResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityMediaContainer.cs deleted file mode 100644 index 40ae73f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityMediaContainer.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityResponse.cs deleted file mode 100644 index 659aebf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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 Server Identity information - /// - public GetServerIdentityResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityResponseBody.cs deleted file mode 100644 index 7a9d8b1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerIdentityResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The Server Identity information - /// - public class GetServerIdentityResponseBody - { - - [JsonProperty("MediaContainer")] - public GetServerIdentityMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerInfoRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerInfoRequest.cs new file mode 100644 index 0000000..42c618c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerInfoRequest.cs @@ -0,0 +1,84 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetServerInfoRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerInfoResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerInfoResponse.cs new file mode 100644 index 0000000..55c34d8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerInfoResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetServerInfoResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithDirectory? MediaContainerWithDirectory { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListMediaContainer.cs deleted file mode 100644 index afdb55c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListMediaContainer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListResponse.cs deleted file mode 100644 index cd022f9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListResponseBody.cs deleted file mode 100644 index 1bc239b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListServer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListServer.cs deleted file mode 100644 index c26172f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerListServer.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesMediaContainer.cs deleted file mode 100644 index f7ea412..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesMediaContainer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetServerPreferencesMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("Setting")] - public List? Setting { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesResponse.cs deleted file mode 100644 index 29db15e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - - /// - /// Server Preferences - /// - public GetServerPreferencesResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesResponseBody.cs deleted file mode 100644 index eb0afac..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerPreferencesResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Server Preferences - /// - public class GetServerPreferencesResponseBody - { - - [JsonProperty("MediaContainer")] - public GetServerPreferencesMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerResourcesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerResourcesRequest.cs deleted file mode 100644 index 48b7d58..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerResourcesRequest.cs +++ /dev/null @@ -1,47 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetServerResourcesRequest - { - - /// - /// Include Https entries in the results - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeHttps")] - public IncludeHttps? IncludeHttps { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeHttps.Disable; - - /// - /// Include Relay addresses in the results
- /// - /// - /// E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeRelay")] - public IncludeRelay? IncludeRelay { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeRelay.Disable; - - /// - /// Include IPv6 entries in the results - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeIPv6")] - public IncludeIPv6? IncludeIPv6 { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeIPv6.Disable; - - /// - /// An opaque identifier unique to the client (UUID, serial number, or other unique device ID) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] - public string ClientID { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerResourcesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerResourcesResponse.cs deleted file mode 100644 index 90ae5a5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetServerResourcesResponse.cs +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetServerResourcesResponse - { - - /// - /// 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 Plex Devices. This includes Plex hosted servers and clients - /// - public List? PlexDevices { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryMediaContainer.cs deleted file mode 100644 index 094d4d7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryMediaContainer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetSessionHistoryMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryMetadata.cs deleted file mode 100644 index be83b7c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryMetadata.cs +++ /dev/null @@ -1,76 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using NodaTime; - - public class GetSessionHistoryMetadata - { - - [JsonProperty("historyKey")] - public string? HistoryKey { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("ratingKey")] - public string? RatingKey { get; set; } - - [JsonProperty("librarySectionID")] - public string? LibrarySectionID { get; set; } - - [JsonProperty("parentKey")] - public string? ParentKey { get; set; } - - [JsonProperty("grandparentKey")] - public string? GrandparentKey { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("grandparentTitle")] - public string? GrandparentTitle { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - [JsonProperty("parentThumb")] - public string? ParentThumb { get; set; } - - [JsonProperty("grandparentThumb")] - public string? GrandparentThumb { get; set; } - - [JsonProperty("grandparentArt")] - public string? GrandparentArt { get; set; } - - [JsonProperty("index")] - public int? Index { get; set; } - - [JsonProperty("parentIndex")] - public int? ParentIndex { get; set; } - - [JsonProperty("originallyAvailableAt")] - public LocalDate? OriginallyAvailableAt { get; set; } - - [JsonProperty("viewedAt")] - public int? ViewedAt { get; set; } - - [JsonProperty("accountID")] - public int? AccountID { get; set; } - - [JsonProperty("deviceID")] - public int? DeviceID { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryRequest.cs deleted file mode 100644 index 9c607b9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryRequest.cs +++ /dev/null @@ -1,59 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetSessionHistoryRequest - { - - /// - /// Sorts the results by the specified field followed by the direction (asc, desc)
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=sort")] - public string? Sort { get; set; } - - /// - /// Filter results by those that are related to a specific users id
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=accountId")] - public long? AccountId { get; set; } - - /// - /// Filters content by field and direction/equality
- /// - /// - /// (Unknown if viewedAt is the only supported column)
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=filter")] - public QueryParamFilter? Filter { get; set; } - - /// - /// Filters the results based on the id of a valid library section
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=librarySectionID")] - public long? LibrarySectionID { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryResponse.cs deleted file mode 100644 index 31254c2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - - /// - /// List of Plex Sessions - /// - public GetSessionHistoryResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryResponseBody.cs deleted file mode 100644 index ace6a0b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionHistoryResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// List of Plex Sessions - /// - public class GetSessionHistoryResponseBody - { - - [JsonProperty("MediaContainer")] - public GetSessionHistoryMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionPlaylistIndexRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionPlaylistIndexRequest.cs new file mode 100644 index 0000000..90c331a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionPlaylistIndexRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetSessionPlaylistIndexRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The session id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sessionId")] + public string SessionId { get; set; } = default!; + + /// + /// The consumer id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=consumerId")] + public string ConsumerId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionPlaylistIndexResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionPlaylistIndexResponse.cs new file mode 100644 index 0000000..14b0c10 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionPlaylistIndexResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetSessionPlaylistIndexResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionSegmentRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionSegmentRequest.cs new file mode 100644 index 0000000..da6bf38 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionSegmentRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetSessionSegmentRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The session id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sessionId")] + public string SessionId { get; set; } = default!; + + /// + /// The consumer id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=consumerId")] + public string ConsumerId { get; set; } = default!; + + /// + /// The segment id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=segmentId")] + public string SegmentId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionSegmentResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionSegmentResponse.cs new file mode 100644 index 0000000..000ea21 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionSegmentResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetSessionSegmentResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMedia.cs deleted file mode 100644 index b134c26..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMedia.cs +++ /dev/null @@ -1,44 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetSessionsMedia - { - - [JsonProperty("audioChannels")] - public int? AudioChannels { get; set; } - - [JsonProperty("audioCodec")] - public string? AudioCodec { get; set; } - - [JsonProperty("bitrate")] - public int? Bitrate { get; set; } - - [JsonProperty("container")] - public string? Container { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("id")] - public string? Id { get; set; } - - [JsonProperty("selected")] - public bool? Selected { get; set; } - - [JsonProperty("Part")] - public List? Part { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMediaContainer.cs deleted file mode 100644 index d47bc71..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMediaContainer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetSessionsMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMetadata.cs deleted file mode 100644 index 82a7331..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsMetadata.cs +++ /dev/null @@ -1,137 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetSessionsMetadata - { - - [JsonProperty("addedAt")] - public int? AddedAt { get; set; } - - [JsonProperty("art")] - public string? Art { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("grandparentArt")] - public string? GrandparentArt { get; set; } - - [JsonProperty("grandparentGuid")] - public string? GrandparentGuid { get; set; } - - [JsonProperty("grandparentKey")] - public string? GrandparentKey { get; set; } - - [JsonProperty("grandparentRatingKey")] - public string? GrandparentRatingKey { get; set; } - - [JsonProperty("grandparentThumb")] - public string? GrandparentThumb { get; set; } - - [JsonProperty("grandparentTitle")] - public string? GrandparentTitle { get; set; } - - [JsonProperty("guid")] - public string? Guid { get; set; } - - [JsonProperty("index")] - public int? Index { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("librarySectionID")] - public string? LibrarySectionID { get; set; } - - [JsonProperty("librarySectionKey")] - public string? LibrarySectionKey { get; set; } - - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - [JsonProperty("musicAnalysisVersion")] - public string? MusicAnalysisVersion { get; set; } - - /// - /// The original untranslated name of the media item when non-english, or the track artist if an audio Item has an album artist - /// - [JsonProperty("originalTitle")] - public string? OriginalTitle { get; set; } - - [JsonProperty("parentGuid")] - public string? ParentGuid { get; set; } - - [JsonProperty("parentIndex")] - public int? ParentIndex { get; set; } - - [JsonProperty("parentKey")] - public string? ParentKey { get; set; } - - [JsonProperty("parentRatingKey")] - public string? ParentRatingKey { get; set; } - - [JsonProperty("parentStudio")] - public string? ParentStudio { get; set; } - - [JsonProperty("parentThumb")] - public string? ParentThumb { get; set; } - - [JsonProperty("parentTitle")] - public string? ParentTitle { get; set; } - - [JsonProperty("parentYear")] - public int? ParentYear { get; set; } - - [JsonProperty("ratingCount")] - public int? RatingCount { get; set; } - - [JsonProperty("ratingKey")] - public string? RatingKey { get; set; } - - [JsonProperty("sessionKey")] - public string? SessionKey { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("titleSort")] - public string? TitleSort { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("updatedAt")] - public int? UpdatedAt { get; set; } - - [JsonProperty("viewOffset")] - public int? ViewOffset { get; set; } - - [JsonProperty("Media")] - public List? Media { get; set; } - - [JsonProperty("User")] - public GetSessionsUser? User { get; set; } - - [JsonProperty("Player")] - public Player? Player { get; set; } - - [JsonProperty("Session")] - public Session? Session { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsPart.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsPart.cs deleted file mode 100644 index ca46117..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsPart.cs +++ /dev/null @@ -1,50 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetSessionsPart - { - - [JsonProperty("container")] - public string? Container { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("file")] - public string? File { get; set; } - - [JsonProperty("hasThumbnail")] - public string? HasThumbnail { get; set; } - - [JsonProperty("id")] - public string? Id { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("decision")] - public string? Decision { get; set; } - - [JsonProperty("selected")] - public bool? Selected { get; set; } - - [JsonProperty("Stream")] - public List? Stream { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsResponse.cs index 6e43e2c..690b23e 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsResponse.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsResponse.cs @@ -9,9 +9,10 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; using System; + using System.Collections.Generic; using System.Net.Http; public class GetSessionsResponse @@ -33,8 +34,10 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public HttpResponseMessage RawResponse { get; set; } = default!; /// - /// List of Active Plex Sessions + /// OK /// - public GetSessionsResponseBody? Object { get; set; } + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsResponseBody.cs deleted file mode 100644 index 8ea641e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// List of Active Plex Sessions - /// - public class GetSessionsResponseBody - { - - [JsonProperty("MediaContainer")] - public GetSessionsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsStream.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsStream.cs deleted file mode 100644 index 143361e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsStream.cs +++ /dev/null @@ -1,78 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSessionsStream - { - - [JsonProperty("albumGain")] - public string? AlbumGain { get; set; } - - [JsonProperty("albumPeak")] - public string? AlbumPeak { get; set; } - - [JsonProperty("albumRange")] - public string? AlbumRange { get; set; } - - [JsonProperty("audioChannelLayout")] - public string? AudioChannelLayout { get; set; } - - [JsonProperty("bitDepth")] - public int? BitDepth { get; set; } - - [JsonProperty("bitrate")] - public int? Bitrate { get; set; } - - [JsonProperty("channels")] - public int? Channels { get; set; } - - [JsonProperty("codec")] - public string? Codec { get; set; } - - [JsonProperty("displayTitle")] - public string? DisplayTitle { get; set; } - - [JsonProperty("extendedDisplayTitle")] - public string? ExtendedDisplayTitle { get; set; } - - [JsonProperty("gain")] - public string? Gain { get; set; } - - [JsonProperty("id")] - public string? Id { get; set; } - - [JsonProperty("index")] - public int? Index { get; set; } - - [JsonProperty("loudness")] - public string? Loudness { get; set; } - - [JsonProperty("lra")] - public string? Lra { get; set; } - - [JsonProperty("peak")] - public string? Peak { get; set; } - - [JsonProperty("samplingRate")] - public int? SamplingRate { get; set; } - - [JsonProperty("selected")] - public bool? Selected { get; set; } - - [JsonProperty("streamType")] - public int? StreamType { get; set; } - - [JsonProperty("location")] - public string? Location { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsUser.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsUser.cs deleted file mode 100644 index 532b88b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSessionsUser.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetSessionsUser - { - - [JsonProperty("id")] - public string? Id { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicPathRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicPathRequest.cs new file mode 100644 index 0000000..ee8ebcd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicPathRequest.cs @@ -0,0 +1,114 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetSonicPathRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// The starting metadata item id + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=startID")] + public long StartID { get; set; } = default!; + + /// + /// The ending metadata item id + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=endID")] + public long EndID { get; set; } = default!; + + /// + /// Limit results to count items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=count")] + public long? Count { get; set; } + + /// + /// The maximum distance allowed along the path; defaults to 0.25 + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=maxDistance")] + public double? MaxDistance { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicPathResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicPathResponse.cs new file mode 100644 index 0000000..0bad2b3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicPathResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetSonicPathResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicallySimilarRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicallySimilarRequest.cs new file mode 100644 index 0000000..d1f133b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicallySimilarRequest.cs @@ -0,0 +1,115 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class GetSonicallySimilarRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// The metadata type to fetch (should be 10 for audio track) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long? Type { get; set; } + + /// + /// The music analysis to center the search. Typically obtained from the `musicAnalysis` of a track + /// + [SpeakeasyMetadata("queryParam:style=form,explode=false,name=values")] + public List Values { get; set; } = default!; + + /// + /// The limit of the number of items to fetch; defaults to 50 + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=limit")] + public long? Limit { get; set; } + + /// + /// The maximum distance to search, defaults to 0.25 + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=maxDistance")] + public double? MaxDistance { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicallySimilarResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicallySimilarResponse.cs new file mode 100644 index 0000000..e89cd1c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSonicallySimilarResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetSonicallySimilarResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationMediaContainer.cs new file mode 100644 index 0000000..8662993 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationMediaContainer.cs @@ -0,0 +1,57 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetSourceConnectionInformationMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Device")] + public Models.Requests.Device? Device { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationRequest.cs index 896f52e..7f0239f 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationRequest.cs @@ -9,15 +9,88 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; public class GetSourceConnectionInformationRequest { + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + /// /// The source identifier with an included prefix. /// [SpeakeasyMetadata("queryParam:style=form,explode=true,name=source")] public string Source { get; set; } = default!; + + /// + /// Force refresh + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=refresh")] + public BoolInt? Refresh { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationResponse.cs index 2fcfef7..16ffa7b 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationResponse.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationResponse.cs @@ -9,6 +9,7 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; using System; using System.Net.Http; @@ -30,5 +31,10 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// Raw HTTP response; suitable for custom response parsing /// public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// OK + /// + public GetSourceConnectionInformationResponseBody? Object { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationResponseBody.cs new file mode 100644 index 0000000..1b65778 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSourceConnectionInformationResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetSourceConnectionInformationResponseBody + { + + [JsonProperty("MediaContainer")] + public GetSourceConnectionInformationMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsDevice.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsDevice.cs deleted file mode 100644 index 637a38a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsDevice.cs +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetStatisticsDevice - { - - [JsonProperty("id")] - public int? 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 int? CreatedAt { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsMediaContainer.cs deleted file mode 100644 index 551ed22..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsMediaContainer.cs +++ /dev/null @@ -1,32 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetStatisticsMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("Device")] - public List? Device { get; set; } - - [JsonProperty("Account")] - public List? Account { get; set; } - - [JsonProperty("StatisticsMedia")] - public List? StatisticsMedia { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsRequest.cs deleted file mode 100644 index 0005624..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsRequest.cs +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetStatisticsRequest - { - - /// - /// The timespan to retrieve statistics for
- /// - /// - /// the exact meaning of this parameter is not known
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=timespan")] - public long? Timespan { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsResponse.cs deleted file mode 100644 index 6df972d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetStatisticsResponse - { - - /// - /// 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!; - - /// - /// Media Statistics - /// - public GetStatisticsResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsResponseBody.cs deleted file mode 100644 index 1189b49..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStatisticsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Media Statistics - /// - public class GetStatisticsResponseBody - { - - [JsonProperty("MediaContainer")] - public GetStatisticsMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsLevel.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsLevel.cs new file mode 100644 index 0000000..7b2575b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsLevel.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetStreamLevelsLevel + { + + /// + /// The level in db. + /// + [JsonProperty("v")] + public double? V { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsMediaContainer.cs new file mode 100644 index 0000000..980bc3a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsMediaContainer.cs @@ -0,0 +1,64 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetStreamLevelsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Level")] + public List? Level { get; set; } + + /// + /// The total number of samples (as a string) + /// + [JsonProperty("totalSamples")] + public string? TotalSamples { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsRequest.cs new file mode 100644 index 0000000..63163de --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetStreamLevelsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The id of the stream + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=streamId")] + public long StreamId { get; set; } = default!; + + /// + /// Subsample result down to return only the provided number of samples + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subsample")] + public long? Subsample { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsResponse.cs new file mode 100644 index 0000000..d6394ef --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetStreamLevelsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetStreamLevelsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsResponseBody.cs new file mode 100644 index 0000000..26eeedb --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLevelsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetStreamLevelsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetStreamLevelsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLoudnessRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLoudnessRequest.cs new file mode 100644 index 0000000..6e8af67 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLoudnessRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetStreamLoudnessRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The id of the stream + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=streamId")] + public long StreamId { get; set; } = default!; + + /// + /// Subsample result down to return only the provided number of samples + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subsample")] + public long? Subsample { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLoudnessResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLoudnessResponse.cs new file mode 100644 index 0000000..2733f52 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamLoudnessResponse.cs @@ -0,0 +1,39 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetStreamLoudnessResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public string? Res { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamRequest.cs new file mode 100644 index 0000000..0b4c60d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamRequest.cs @@ -0,0 +1,114 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetStreamRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The id of the stream + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=streamId")] + public long StreamId { get; set; } = default!; + + /// + /// The extension of the stream. Required to fetch the `sub` portion of `idx`/`sub` subtitles + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ext")] + public string Ext { get; set; } = default!; + + /// + /// The requested encoding for the subtitle (only used for text subtitles) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=encoding")] + public string? Encoding { get; set; } + + /// + /// The requested format for the subtitle to convert the subtitles to (only used for text subtitles) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=format")] + public string? Format { get; set; } + + /// + /// Whether the server should attempt to automatically adjust the subtitle timestamps to match the media + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustSubtitle")] + public BoolInt? AutoAdjustSubtitle { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamResponse.cs new file mode 100644 index 0000000..dd626fd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetStreamResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetStreamResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSubscriptionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSubscriptionRequest.cs new file mode 100644 index 0000000..1cdffba --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSubscriptionRequest.cs @@ -0,0 +1,99 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetSubscriptionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriptionId")] + public long SubscriptionId { get; set; } = default!; + + /// + /// Indicates whether the active grabs should be included as well + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeGrabs")] + public BoolInt? IncludeGrabs { get; set; } + + /// + /// Compute the storage of recorded items desired by this subscription + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeStorage")] + public BoolInt? IncludeStorage { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetSubscriptionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSubscriptionResponse.cs new file mode 100644 index 0000000..a4363cd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetSubscriptionResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetSubscriptionResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithSubscription? MediaContainerWithSubscription { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsMediaContainer.cs new file mode 100644 index 0000000..a87e850 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetTagsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Directory")] + public List? Directory { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsRequest.cs new file mode 100644 index 0000000..71758cf --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetTagsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The metadata type to filter by + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long? Type { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsResponse.cs new file mode 100644 index 0000000..18cefdf --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetTagsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetTagsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsResponseBody.cs new file mode 100644 index 0000000..e6520ab --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTagsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetTagsResponseBody + { + + [JsonProperty("MediaContainer")] + public GetTagsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTasksResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTasksResponse.cs new file mode 100644 index 0000000..29cfd56 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTasksResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetTasksResponse + { + + /// + /// 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!; + + /// + /// Butler tasks + /// + public GetTasksResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTasksResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTasksResponseBody.cs new file mode 100644 index 0000000..78345c1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTasksResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// Butler tasks + /// + public class GetTasksResponseBody + { + + [JsonProperty("ButlerTasks")] + public ButlerTasks? ButlerTasks { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateMediaContainer.cs new file mode 100644 index 0000000..9257de1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetTemplateMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("SubscriptionTemplate")] + public List? SubscriptionTemplate { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateRequest.cs new file mode 100644 index 0000000..3748e8a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetTemplateRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The guid of the item for which to get the template + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=guid")] + public string? Guid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateResponse.cs new file mode 100644 index 0000000..e667a29 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class GetTemplateResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetTemplateResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateResponseBody.cs new file mode 100644 index 0000000..5ad7082 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTemplateResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetTemplateResponseBody + { + + [JsonProperty("MediaContainer")] + public GetTemplateMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbImageRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbImageRequest.cs deleted file mode 100644 index 9f76ab7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbImageRequest.cs +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetThumbImageRequest - { - - /// - /// the id of the library item to return the children of. - /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")] - public long RatingKey { get; set; } = default!; - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=width")] - public long Width { get; set; } = default!; - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=height")] - public long Height { get; set; } = default!; - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=minSize")] - public long MinSize { get; set; } = default!; - - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=upscale")] - public long Upscale { get; set; } = default!; - - /// - /// An authentication token, obtained from plex.tv - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Token")] - public string XPlexToken { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbImageResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbImageResponse.cs deleted file mode 100644 index 8e41668..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbImageResponse.cs +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetThumbImageResponse - { - - /// - /// 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!; - - /// - /// Successful response returning an image - /// - public byte[]? Bytes { get; set; } - - public Dictionary> Headers { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbRequest.cs new file mode 100644 index 0000000..8e62869 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class GetThumbRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the device. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=deviceId")] + public long DeviceId { get; set; } = default!; + + /// + /// A version number of the thumb used for busting cache + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=version")] + public long VersionPathParameter { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbResponse.cs new file mode 100644 index 0000000..a8baad6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetThumbResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetThumbResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTimelineRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTimelineRequest.cs deleted file mode 100644 index 65f5f9c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTimelineRequest.cs +++ /dev/null @@ -1,83 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetTimelineResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTimelineResponse.cs deleted file mode 100644 index 45258ad..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTimelineResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdAuthPinContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdAuthPinContainer.cs deleted file mode 100644 index d1c4cb8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdAuthPinContainer.cs +++ /dev/null @@ -1,68 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// The Pin with a non-null authToken when it has been verified by the user - /// - public class GetTokenByPinIdAuthPinContainer - { - - [JsonProperty("id")] - public long Id { get; set; } = default!; - - [JsonProperty("code")] - public string Code { get; set; } = default!; - - [JsonProperty("product")] - public string Product { get; set; } = default!; - - [JsonProperty("trusted")] - public bool? Trusted { get; set; } = false; - - [JsonProperty("qr")] - public string Qr { get; set; } = default!; - - /// - /// The X-Client-Identifier used in the request - /// - [JsonProperty("clientIdentifier")] - public string ClientIdentifier { get; set; } = default!; - - /// - /// Geo location data - /// - [JsonProperty("location")] - public GetTokenByPinIdGeoData Location { get; set; } = default!; - - /// - /// The number of seconds this pin expires, by default 900 seconds - /// - [JsonProperty("expiresIn")] - public long? ExpiresIn { get; set; } = 900; - - [JsonProperty("createdAt")] - public DateTime CreatedAt { get; set; } = default!; - - [JsonProperty("expiresAt")] - public DateTime ExpiresAt { get; set; } = default!; - - [JsonProperty("authToken")] - public string? AuthToken { get; set; } = null; - - [JsonProperty("newRegistration")] - public object? NewRegistration { get; set; } = null; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdGeoData.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdGeoData.cs deleted file mode 100644 index 5e06578..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdGeoData.cs +++ /dev/null @@ -1,87 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// Geo location data - /// - public class GetTokenByPinIdGeoData - { - - /// - /// The ISO 3166-1 alpha-2 code of the country. - /// - [JsonProperty("code")] - public string Code { get; set; } = default!; - - /// - /// The continent code where the country is located. - /// - [JsonProperty("continent_code")] - public string ContinentCode { get; set; } = default!; - - /// - /// The official name of the country. - /// - [JsonProperty("country")] - public string Country { get; set; } = default!; - - /// - /// The name of the city. - /// - [JsonProperty("city")] - public string City { get; set; } = default!; - - /// - /// Indicates if the country is a member of the European Union. - /// - [JsonProperty("european_union_member")] - public bool? EuropeanUnionMember { get; set; } = false; - - /// - /// The time zone of the country. - /// - [JsonProperty("time_zone")] - public string TimeZone { get; set; } = default!; - - /// - /// The postal code of the location. - /// - [JsonProperty("postal_code")] - public string PostalCode { get; set; } = default!; - - /// - /// Indicates if the country has privacy restrictions. - /// - [JsonProperty("in_privacy_restricted_country")] - public bool? InPrivacyRestrictedCountry { get; set; } = false; - - /// - /// Indicates if the region has privacy restrictions. - /// - [JsonProperty("in_privacy_restricted_region")] - public bool? InPrivacyRestrictedRegion { get; set; } = false; - - /// - /// The name of the primary administrative subdivision. - /// - [JsonProperty("subdivisions")] - public string Subdivisions { get; set; } = default!; - - /// - /// The geographical coordinates (latitude, longitude) of the location. - /// - [JsonProperty("coordinates")] - public string Coordinates { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdRequest.cs deleted file mode 100644 index 28d8728..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdRequest.cs +++ /dev/null @@ -1,53 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetTokenByPinIdRequest - { - - /// - /// The PinID to retrieve an access token for - /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=pinID")] - public long PinID { get; set; } = default!; - - /// - /// An opaque identifier unique to the client (UUID, serial number, or other unique device ID) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] - public string ClientID { get; set; } = default!; - - /// - /// The name of the client application. (Plex Web, Plex Media Server, etc.) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] - public string? ClientName { get; set; } - - /// - /// A relatively friendly name for the client device - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] - public string? DeviceNickname { get; set; } - - /// - /// The version of the client application. - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] - public string? ClientVersion { get; set; } - - /// - /// The platform of the client application. - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] - public string? Platform { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdResponse.cs deleted file mode 100644 index 8a3c6be..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenByPinIdResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetTokenByPinIdResponse - { - - /// - /// 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 Pin with a non-null authToken when it has been verified by the user - /// - public GetTokenByPinIdAuthPinContainer? AuthPinContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsAuthenticationResponseStatus.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsAuthenticationResponseStatus.cs deleted file mode 100644 index 0e273d8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsAuthenticationResponseStatus.cs +++ /dev/null @@ -1,78 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// String representation of subscriptionActive - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class GetTokenDetailsAuthenticationResponseStatus : IEquatable - { - public static readonly GetTokenDetailsAuthenticationResponseStatus Inactive = new GetTokenDetailsAuthenticationResponseStatus("Inactive"); - public static readonly GetTokenDetailsAuthenticationResponseStatus Active = new GetTokenDetailsAuthenticationResponseStatus("Active"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["Inactive"] = Inactive, - ["Active"] = Active - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetTokenDetailsAuthenticationResponseStatus(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetTokenDetailsAuthenticationResponseStatus Of(string value) - { - return _values.GetOrAdd(value, _ => new GetTokenDetailsAuthenticationResponseStatus(value)); - } - - public static implicit operator GetTokenDetailsAuthenticationResponseStatus(string value) => Of(value); - public static implicit operator string(GetTokenDetailsAuthenticationResponseStatus gettokendetailsauthenticationresponsestatus) => gettokendetailsauthenticationresponsestatus.Value; - - public static GetTokenDetailsAuthenticationResponseStatus[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetTokenDetailsAuthenticationResponseStatus); - - public bool Equals(GetTokenDetailsAuthenticationResponseStatus? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsAuthenticationStatus.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsAuthenticationStatus.cs deleted file mode 100644 index 2c44092..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsAuthenticationStatus.cs +++ /dev/null @@ -1,78 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// String representation of subscriptionActive - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class GetTokenDetailsAuthenticationStatus : IEquatable - { - public static readonly GetTokenDetailsAuthenticationStatus Inactive = new GetTokenDetailsAuthenticationStatus("Inactive"); - public static readonly GetTokenDetailsAuthenticationStatus Active = new GetTokenDetailsAuthenticationStatus("Active"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["Inactive"] = Inactive, - ["Active"] = Active - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetTokenDetailsAuthenticationStatus(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetTokenDetailsAuthenticationStatus Of(string value) - { - return _values.GetOrAdd(value, _ => new GetTokenDetailsAuthenticationStatus(value)); - } - - public static implicit operator GetTokenDetailsAuthenticationStatus(string value) => Of(value); - public static implicit operator string(GetTokenDetailsAuthenticationStatus gettokendetailsauthenticationstatus) => gettokendetailsauthenticationstatus.Value; - - public static GetTokenDetailsAuthenticationStatus[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetTokenDetailsAuthenticationStatus); - - public bool Equals(GetTokenDetailsAuthenticationStatus? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsResponse.cs deleted file mode 100644 index 53d449d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetTokenDetailsResponse - { - - /// - /// 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!; - - /// - /// Logged in user details - /// - public GetTokenDetailsUserPlexAccount? UserPlexAccount { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsStatus.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsStatus.cs deleted file mode 100644 index 2f06ef3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsStatus.cs +++ /dev/null @@ -1,75 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - [JsonConverter(typeof(OpenEnumConverter))] - public class GetTokenDetailsStatus : IEquatable - { - public static readonly GetTokenDetailsStatus Online = new GetTokenDetailsStatus("online"); - public static readonly GetTokenDetailsStatus Offline = new GetTokenDetailsStatus("offline"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["online"] = Online, - ["offline"] = Offline - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetTokenDetailsStatus(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static GetTokenDetailsStatus Of(string value) - { - return _values.GetOrAdd(value, _ => new GetTokenDetailsStatus(value)); - } - - public static implicit operator GetTokenDetailsStatus(string value) => Of(value); - public static implicit operator string(GetTokenDetailsStatus gettokendetailsstatus) => gettokendetailsstatus.Value; - - public static GetTokenDetailsStatus[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetTokenDetailsStatus); - - public bool Equals(GetTokenDetailsStatus? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsSubscription.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsSubscription.cs deleted file mode 100644 index 72b77d5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsSubscription.cs +++ /dev/null @@ -1,59 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetTokenDetailsSubscription - { - - /// - /// List of features allowed on your Plex Pass subscription - /// - [JsonProperty("features")] - public List? Features { get; set; } - - /// - /// If the account's Plex Pass subscription is active - /// - [JsonProperty("active")] - public bool? Active { get; set; } - - /// - /// Date the account subscribed to Plex Pass - /// - [JsonProperty("subscribedAt")] - public string? SubscribedAt { get; set; } = null; - - /// - /// String representation of subscriptionActive - /// - [JsonProperty("status")] - public GetTokenDetailsAuthenticationResponseStatus? Status { get; set; } - - /// - /// Payment service used for your Plex Pass subscription - /// - [JsonProperty("paymentService")] - public string? PaymentService { get; set; } = null; - - /// - /// Name of Plex Pass subscription plan - /// - [JsonProperty("plan")] - public string? Plan { get; set; } = null; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsUserPlexAccount.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsUserPlexAccount.cs deleted file mode 100644 index ca2ee7b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTokenDetailsUserPlexAccount.cs +++ /dev/null @@ -1,255 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Logged in user details - /// - public class GetTokenDetailsUserPlexAccount - { - - /// - /// Unknown - /// - [JsonProperty("adsConsent", NullValueHandling = NullValueHandling.Include)] - public bool? AdsConsent { get; set; } - - [JsonProperty("adsConsentReminderAt", NullValueHandling = NullValueHandling.Include)] - public long? AdsConsentReminderAt { get; set; } - - [JsonProperty("adsConsentSetAt", NullValueHandling = NullValueHandling.Include)] - public long? AdsConsentSetAt { get; set; } - - /// - /// Unknown - /// - [JsonProperty("anonymous")] - public bool? Anonymous { get; set; } = false; - - /// - /// The account token - /// - [JsonProperty("authToken")] - public string AuthToken { get; set; } = default!; - - /// - /// If the two-factor authentication backup codes have been created - /// - [JsonProperty("backupCodesCreated")] - public bool? BackupCodesCreated { get; set; } = false; - - /// - /// If the account has been confirmed - /// - [JsonProperty("confirmed")] - public bool? Confirmed { get; set; } = false; - - /// - /// The account country - /// - [JsonProperty("country")] - public string Country { get; set; } = default!; - - /// - /// The account email address - /// - [JsonProperty("email")] - public string Email { get; set; } = default!; - - /// - /// If login with email only is enabled - /// - [JsonProperty("emailOnlyAuth")] - public bool? EmailOnlyAuth { get; set; } = false; - - /// - /// If experimental features are enabled - /// - [JsonProperty("experimentalFeatures")] - public bool? ExperimentalFeatures { get; set; } = false; - - /// - /// Your account full name - /// - [JsonProperty("friendlyName")] - public string FriendlyName { get; set; } = default!; - - /// - /// List of devices your allowed to use with this account - /// - [JsonProperty("entitlements")] - public List Entitlements { get; set; } = default!; - - /// - /// If the account is a Plex Home guest user - /// - [JsonProperty("guest")] - public bool? Guest { get; set; } = false; - - /// - /// If the account has a password - /// - [JsonProperty("hasPassword")] - public bool? HasPassword { get; set; } = true; - - /// - /// If the account is a Plex Home user - /// - [JsonProperty("home")] - public bool? Home { get; set; } = false; - - /// - /// If the account is the Plex Home admin - /// - [JsonProperty("homeAdmin")] - public bool? HomeAdmin { get; set; } = false; - - /// - /// The number of accounts in the Plex Home - /// - [JsonProperty("homeSize")] - public int HomeSize { get; set; } = default!; - - /// - /// The Plex account ID - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// Unix epoch datetime in seconds - /// - [JsonProperty("joinedAt")] - public long JoinedAt { get; set; } = default!; - - /// - /// The account locale - /// - [JsonProperty("locale", NullValueHandling = NullValueHandling.Include)] - public string? Locale { get; set; } - - /// - /// If you are subscribed to the Plex newsletter - /// - [JsonProperty("mailingListActive")] - public bool? MailingListActive { get; set; } = false; - - /// - /// Your current mailing list status (active or unsubscribed) - /// - [JsonProperty("mailingListStatus")] - public MailingListStatus MailingListStatus { get; set; } = default!; - - /// - /// The maximum number of accounts allowed in the Plex Home - /// - [JsonProperty("maxHomeSize")] - public int MaxHomeSize { get; set; } = default!; - - /// - /// [Might be removed] The hashed Plex Home PIN - /// - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible")] - [JsonProperty("pin")] - public string? Pin { get; set; } - - [JsonProperty("profile")] - public UserProfile Profile { get; set; } = default!; - - /// - /// If the account has a Plex Home PIN enabled - /// - [JsonProperty("protected")] - public bool? Protected { get; set; } = false; - - /// - /// Unix epoch datetime in seconds - /// - [JsonProperty("rememberExpiresAt")] - public long RememberExpiresAt { get; set; } = default!; - - /// - /// If the account is a Plex Home managed user - /// - [JsonProperty("restricted")] - public bool? Restricted { get; set; } = false; - - /// - /// [Might be removed] List of account roles. Plexpass membership listed here - /// - [JsonProperty("roles")] - public List? Roles { get; set; } - - /// - /// Unknown - /// - [JsonProperty("scrobbleTypes")] - public string ScrobbleTypes { get; set; } = default!; - - [JsonProperty("services")] - public List Services { get; set; } = default!; - - /// - /// If the account’s Plex Pass subscription is active - /// - [JsonProperty("subscription")] - public Subscription Subscription { get; set; } = default!; - - /// - /// Description of the Plex Pass subscription - /// - [JsonProperty("subscriptionDescription", NullValueHandling = NullValueHandling.Include)] - public string? SubscriptionDescription { get; set; } - - [JsonProperty("subscriptions")] - public List? Subscriptions { get; set; } - - /// - /// URL of the account thumbnail - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The title of the account (username or friendly name) - /// - [JsonProperty("title")] - public string Title { get; set; } = default!; - - /// - /// If two-factor authentication is enabled - /// - [JsonProperty("twoFactorEnabled")] - public bool? TwoFactorEnabled { get; set; } = false; - - /// - /// The account username - /// - [JsonProperty("username")] - public string Username { get; set; } = default!; - - /// - /// The account UUID - /// - [JsonProperty("uuid")] - public string Uuid { get; set; } = default!; - - [JsonProperty("attributionPartner", NullValueHandling = NullValueHandling.Include)] - public string? AttributionPartner { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentCountry.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentCountry.cs deleted file mode 100644 index 7019d76..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentCountry.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTopWatchedContentCountry - { - - [JsonProperty("id")] - public int? Id { get; set; } - - [JsonProperty("filter")] - public string? Filter { get; set; } - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentGenre.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentGenre.cs deleted file mode 100644 index b0654bf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentGenre.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTopWatchedContentGenre - { - - [JsonProperty("id")] - public int? Id { get; set; } - - [JsonProperty("filter")] - public string? Filter { get; set; } - - [JsonProperty("tag")] - public string? Tag { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentGuids.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentGuids.cs deleted file mode 100644 index d8a9c43..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentGuids.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTopWatchedContentGuids - { - - [JsonProperty("id")] - public string? Id { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentMediaContainer.cs deleted file mode 100644 index 51b7134..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentMediaContainer.cs +++ /dev/null @@ -1,53 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetTopWatchedContentMediaContainer - { - - /// - /// Number of media items returned in this response. - /// - [JsonProperty("size")] - public int Size { get; set; } = default!; - - /// - /// Indicates whether syncing is allowed. - /// - [JsonProperty("allowSync")] - public bool AllowSync { get; set; } = default!; - - /// - /// An plugin identifier for the media container. - /// - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - /// - /// The prefix used for media tag resource paths. - /// - [JsonProperty("mediaTagPrefix")] - public string MediaTagPrefix { get; set; } = default!; - - /// - /// The version number for media tags. - /// - [JsonProperty("mediaTagVersion")] - public long MediaTagVersion { get; set; } = default!; - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentMetadata.cs deleted file mode 100644 index 9f25820..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentMetadata.cs +++ /dev/null @@ -1,117 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using NodaTime; - using System.Collections.Generic; - - public class GetTopWatchedContentMetadata - { - - [JsonProperty("ratingKey")] - public string? RatingKey { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("guid")] - public string? Guid { get; set; } - - [JsonProperty("slug")] - public string? Slug { get; set; } - - [JsonProperty("studio")] - public string? Studio { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - [JsonProperty("librarySectionID")] - public int? LibrarySectionID { get; set; } - - [JsonProperty("librarySectionKey")] - public string? LibrarySectionKey { get; set; } - - [JsonProperty("contentRating")] - public string? ContentRating { get; set; } - - [JsonProperty("summary")] - public string? Summary { get; set; } - - [JsonProperty("index")] - public long? Index { get; set; } - - [JsonProperty("audienceRating")] - public double? AudienceRating { get; set; } - - [JsonProperty("year")] - public int? 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 int? Duration { get; set; } - - [JsonProperty("originallyAvailableAt")] - public LocalDate? OriginallyAvailableAt { get; set; } - - [JsonProperty("leafCount")] - public long? LeafCount { get; set; } - - [JsonProperty("viewedLeafCount")] - public long? ViewedLeafCount { get; set; } - - [JsonProperty("childCount")] - public long? ChildCount { get; set; } - - [JsonProperty("addedAt")] - public int? AddedAt { get; set; } - - [JsonProperty("updatedAt")] - public int? UpdatedAt { get; set; } - - [JsonProperty("globalViewCount")] - public long? GlobalViewCount { get; set; } - - [JsonProperty("audienceRatingImage")] - public string? AudienceRatingImage { get; set; } - - [JsonProperty("Genre")] - public List? Genre { get; set; } - - [JsonProperty("Country")] - public List? Country { get; set; } - - [JsonProperty("Guid")] - public List? Guids { get; set; } - - [JsonProperty("Role")] - public List? Role { get; set; } - - [JsonProperty("User")] - public List? User { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentQueryParamIncludeGuids.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentQueryParamIncludeGuids.cs deleted file mode 100644 index 20cecdf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentQueryParamIncludeGuids.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Adds the Guid object to the response
- /// - /// - /// - /// - ///
- public enum GetTopWatchedContentQueryParamIncludeGuids - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentQueryParamType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentQueryParamType.cs deleted file mode 100644 index 48bdda4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentQueryParamType.cs +++ /dev/null @@ -1,100 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class GetTopWatchedContentQueryParamType : IEquatable - { - public static readonly GetTopWatchedContentQueryParamType Movie = new GetTopWatchedContentQueryParamType(1); - public static readonly GetTopWatchedContentQueryParamType TvShow = new GetTopWatchedContentQueryParamType(2); - public static readonly GetTopWatchedContentQueryParamType Season = new GetTopWatchedContentQueryParamType(3); - public static readonly GetTopWatchedContentQueryParamType Episode = new GetTopWatchedContentQueryParamType(4); - public static readonly GetTopWatchedContentQueryParamType Artist = new GetTopWatchedContentQueryParamType(5); - public static readonly GetTopWatchedContentQueryParamType Album = new GetTopWatchedContentQueryParamType(6); - public static readonly GetTopWatchedContentQueryParamType Track = new GetTopWatchedContentQueryParamType(7); - public static readonly GetTopWatchedContentQueryParamType PhotoAlbum = new GetTopWatchedContentQueryParamType(8); - public static readonly GetTopWatchedContentQueryParamType Photo = new GetTopWatchedContentQueryParamType(9); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - [1] = Movie, - [2] = TvShow, - [3] = Season, - [4] = Episode, - [5] = Artist, - [6] = Album, - [7] = Track, - [8] = PhotoAlbum, - [9] = Photo - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private GetTopWatchedContentQueryParamType(long value) - { - Value = value; - } - - public long Value { get; } - - public static GetTopWatchedContentQueryParamType Of(long value) - { - return _values.GetOrAdd(value, _ => new GetTopWatchedContentQueryParamType(value)); - } - - public static implicit operator GetTopWatchedContentQueryParamType(long value) => Of(value); - public static implicit operator long(GetTopWatchedContentQueryParamType gettopwatchedcontentqueryparamtype) => gettopwatchedcontentqueryparamtype.Value; - - public static GetTopWatchedContentQueryParamType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as GetTopWatchedContentQueryParamType); - - public bool Equals(GetTopWatchedContentQueryParamType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentRequest.cs deleted file mode 100644 index 20b4543..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentRequest.cs +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetTopWatchedContentRequest - { - - /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] - public GetTopWatchedContentQueryParamType Type { get; set; } = default!; - - /// - /// Adds the Guid object to the response
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeGuids")] - public GetTopWatchedContentQueryParamIncludeGuids? IncludeGuids { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.GetTopWatchedContentQueryParamIncludeGuids.Disable; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentResponse.cs deleted file mode 100644 index a9f4943..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetTopWatchedContentResponse - { - - /// - /// 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 metadata of the library item. - /// - public GetTopWatchedContentResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentResponseBody.cs deleted file mode 100644 index 095b12e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The metadata of the library item. - /// - public class GetTopWatchedContentResponseBody - { - - [JsonProperty("MediaContainer")] - public GetTopWatchedContentMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentRole.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentRole.cs deleted file mode 100644 index eb4d443..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentRole.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTopWatchedContentRole - { - - [JsonProperty("id")] - public int? Id { get; set; } - - [JsonProperty("filter")] - public string? Filter { get; set; } - - [JsonProperty("tag")] - public string? Tag { get; set; } - - [JsonProperty("tagKey")] - public string? TagKey { get; set; } - - [JsonProperty("role")] - public string? Role { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentUser.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentUser.cs deleted file mode 100644 index 2852638..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTopWatchedContentUser.cs +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetTopWatchedContentUser - { - - [JsonProperty("id")] - public int? Id { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsMediaContainer.cs deleted file mode 100644 index 99cedb6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsMediaContainer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetTranscodeSessionsMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("TranscodeSession")] - public List? TranscodeSession { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsResponse.cs deleted file mode 100644 index a8b99ed..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsResponseBody.cs deleted file mode 100644 index 0cc202e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTranscodeSessionsResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenMediaContainer.cs new file mode 100644 index 0000000..ccac698 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenMediaContainer.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class GetTransientTokenMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + /// + /// The transient token + /// + [JsonProperty("token")] + public string? Token { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenQueryParamType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenQueryParamType.cs deleted file mode 100644 index 2281cdf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenQueryParamType.cs +++ /dev/null @@ -1,58 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// `delegation` - This is the only supported `type` parameter. - /// - public enum GetTransientTokenQueryParamType - { - [JsonProperty("delegation")] - Delegation, - } - - public static class GetTransientTokenQueryParamTypeExtension - { - public static string Value(this GetTransientTokenQueryParamType value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetTransientTokenQueryParamType ToEnum(this string value) - { - foreach(var field in typeof(GetTransientTokenQueryParamType).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 GetTransientTokenQueryParamType) - { - return (GetTransientTokenQueryParamType)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetTransientTokenQueryParamType"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenRequest.cs index 3d1ebd2..079e16c 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenRequest.cs @@ -9,6 +9,7 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; @@ -16,13 +17,79 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests { /// - /// `delegation` - This is the only supported `type` parameter. + /// Indicates the client accepts the indicated media types /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] - public GetTransientTokenQueryParamType Type { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; /// - /// `all` - This is the only supported `scope` parameter. + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The value `delegation` is the only supported `type` parameter. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public QueryParamType Type { get; set; } = default!; + + /// + /// The value `all` is the only supported `scope` parameter. /// [SpeakeasyMetadata("queryParam:style=form,explode=true,name=scope")] public Scope Scope { get; set; } = default!; diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenResponse.cs index 2ead26d..242a6e2 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenResponse.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenResponse.cs @@ -9,6 +9,7 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; using System; using System.Net.Http; @@ -30,5 +31,10 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// Raw HTTP response; suitable for custom response parsing /// public HttpResponseMessage RawResponse { get; set; } = default!; + + /// + /// OK + /// + public GetTransientTokenResponseBody? Object { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenResponseBody.cs new file mode 100644 index 0000000..66c6da5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetTransientTokenResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetTransientTokenResponseBody + { + + [JsonProperty("MediaContainer")] + public GetTransientTokenMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusMediaContainer.cs deleted file mode 100644 index 1f7fdb0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusMediaContainer.cs +++ /dev/null @@ -1,38 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetUpdateStatusMediaContainer - { - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("canInstall")] - public bool? CanInstall { get; set; } - - [JsonProperty("checkedAt")] - public int? CheckedAt { get; set; } - - [JsonProperty("downloadURL")] - public string? DownloadURL { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - - [JsonProperty("Release")] - public List? Release { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusResponse.cs deleted file mode 100644 index 43132ba..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - - /// - /// The Server Updates - /// - public GetUpdateStatusResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusResponseBody.cs deleted file mode 100644 index 2a929ca..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdateStatusResponseBody.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The Server Updates - /// - public class GetUpdateStatusResponseBody - { - - [JsonProperty("MediaContainer")] - public GetUpdateStatusMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusMediaContainer.cs new file mode 100644 index 0000000..c031528 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusMediaContainer.cs @@ -0,0 +1,53 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class GetUpdatesStatusMediaContainer + { + + /// + /// The version of the updater (currently `1`) + /// + [JsonProperty("autoUpdateVersion")] + public long? AutoUpdateVersion { get; set; } + + /// + /// Indicates whether this install can be updated through these endpoints (typically only on MacOS and Windows) + /// + [JsonProperty("canInstall")] + public bool? CanInstall { get; set; } + + /// + /// The last time a check for updates was performed + /// + [JsonProperty("checkedAt")] + public long? CheckedAt { get; set; } + + /// + /// The URL where the update is available + /// + [JsonProperty("downloadURL")] + public string? DownloadURL { get; set; } + + [JsonProperty("Release")] + public List? Release { get; set; } + + /// + /// The current error code (`0` means no error) + /// + [JsonProperty("status")] + public long? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusResponse.cs new file mode 100644 index 0000000..f79c68a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class GetUpdatesStatusResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetUpdatesStatusResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusResponseBody.cs new file mode 100644 index 0000000..2ee6b97 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class GetUpdatesStatusResponseBody + { + + [JsonProperty("MediaContainer")] + public GetUpdatesStatusMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusState.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusState.cs new file mode 100644 index 0000000..f9115d4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUpdatesStatusState.cs @@ -0,0 +1,88 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The status of this update.
+ /// + /// + ///
+ /// - available - This release is available
+ /// - downloading - This release is downloading
+ /// - downloaded - This release has been downloaded
+ /// - installing - This release is installing
+ /// - tonight - This release will be installed tonight
+ /// - skipped - This release has been skipped
+ /// - error - This release has an error
+ /// - notify - This release is only notifying it is available (typically because it cannot be installed on this setup)
+ /// - done - This release is complete
+ /// + ///
+ ///
+ public enum GetUpdatesStatusState + { + [JsonProperty("available")] + Available, + [JsonProperty("downloading")] + Downloading, + [JsonProperty("downloaded")] + Downloaded, + [JsonProperty("installing")] + Installing, + [JsonProperty("tonight")] + Tonight, + [JsonProperty("skipped")] + Skipped, + [JsonProperty("error")] + Error, + [JsonProperty("notify")] + Notify, + [JsonProperty("done")] + Done, + } + + public static class GetUpdatesStatusStateExtension + { + public static string Value(this GetUpdatesStatusState value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GetUpdatesStatusState ToEnum(this string value) + { + foreach(var field in typeof(GetUpdatesStatusState).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 GetUpdatesStatusState) + { + return (GetUpdatesStatusState)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GetUpdatesStatusState"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUserFriendsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUserFriendsResponse.cs deleted file mode 100644 index ede44b7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUserFriendsResponse.cs +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Collections.Generic; - using System.Net.Http; - - public class GetUserFriendsResponse - { - - /// - /// 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!; - - /// - /// Friends Data - /// - public List? Friends { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersMediaContainer.cs deleted file mode 100644 index b6a5588..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersMediaContainer.cs +++ /dev/null @@ -1,49 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System.Collections.Generic; - - /// - /// Container holding user and server details. - /// - public class GetUsersMediaContainer - { - - /// - /// The friendly name of the Plex instance. - /// - public string FriendlyName { get; set; } = default!; - - public string Identifier { get; set; } = default!; - - /// - /// Unique Machine identifier of the Plex server. - /// - public string MachineIdentifier { get; set; } = default!; - - /// - /// Total number of users. - /// - public long TotalSize { get; set; } = default!; - - /// - /// Number of users in the current response. - /// - public long Size { get; set; } = default!; - - /// - /// List of users with access to the Plex server. - /// - public List User { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersRequest.cs deleted file mode 100644 index 4438fe6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersRequest.cs +++ /dev/null @@ -1,95 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetUsersRequest - { - - /// - /// An opaque identifier unique to the client (UUID, serial number, or other unique device ID) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] - public string ClientID { get; set; } = default!; - - /// - /// The name of the client application. (Plex Web, Plex Media Server, etc.) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] - public string? ClientName { get; set; } - - /// - /// A relatively friendly name for the client device - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] - public string? DeviceNickname { get; set; } - - /// - /// The name of the device the client application is running on. This is used to track the client application and its usage. (Chrome, Safari, etc.) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] - public string? DeviceName { get; set; } - - /// - /// The resolution of the device the client application is running on. This is used to track the client application and its usage. (1487x1165,2560x1440) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Screen-Resolution")] - public string? DeviceScreenResolution { get; set; } - - /// - /// The version of the client application. - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] - public string? ClientVersion { get; set; } - - /// - /// The platform of the client application. - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] - public string? Platform { get; set; } - - /// - /// The features of the client application. This is used to track the client application and its usage. (external-media,indirect-media,hub-style-list) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Features")] - public string? ClientFeatures { get; set; } - - /// - /// A potentially less friendly identifier for the device model - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] - public string? Model { get; set; } - - /// - /// The session ID of the client application. This is used to track the client application and its usage. (97e136ef-4ddd-4ff3-89a7-a5820c96c2ca) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Session-Id")] - public string? XPlexSessionId { get; set; } - - /// - /// The language of the client application. - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Language")] - public string? XPlexLanguage { get; set; } - - /// - /// The version of the platform - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] - public string? PlatformVersion { get; set; } - - /// - /// An authentication token, obtained from plex.tv - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Token")] - public string XPlexToken { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersResponse.cs deleted file mode 100644 index d1e0b1e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersResponse.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetUsersResponse - { - - /// - /// 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!; - - public byte[]? Body { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersResponseBody.cs deleted file mode 100644 index ea70376..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersResponseBody.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Successful response with media container data in XML - /// - public class GetUsersResponseBody - { - - /// - /// Container holding user and server details. - /// - public GetUsersMediaContainer? MediaContainer { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersServer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersServer.cs deleted file mode 100644 index 99b088e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetUsersServer.cs +++ /dev/null @@ -1,51 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - - public class GetUsersServer - { - - /// - /// Unique ID of the server of the connected user - /// - public long Id { get; set; } = default!; - - /// - /// ID of the actual Plex server. - /// - public long ServerId { get; set; } = default!; - - /// - /// Machine identifier of the Plex server. - /// - public string MachineIdentifier { get; set; } = default!; - - /// - /// Name of the Plex server of the connected user. - /// - public string Name { get; set; } = default!; - - public long LastSeenAt { get; set; } = default!; - - /// - /// Number of libraries in the server this user has access to. - /// - public long NumLibraries { get; set; } = default!; - - public AllLibraries? AllLibraries { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.AllLibraries.Disable; - - public Owned? Owned { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.Owned.Disable; - - public Pending? Pending { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.Pending.Disable; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListRequest.cs deleted file mode 100644 index 4e061f7..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListRequest.cs +++ /dev/null @@ -1,112 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class GetWatchListRequest - { - - /// - /// Filter - /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=filter")] - public Filter Filter { get; set; } = default!; - - /// - /// In the format "field:dir". Available fields are "watchlistedAt" (Added At),
- /// - /// - /// "titleSort" (Title), "originallyAvailableAt" (Release Date), or "rating" (Critic Rating).
- /// "dir" can be "asc" or "desc"
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=sort")] - public string? Sort { get; set; } - - /// - /// The type of library to filter. Can be "movie" or "show", or all if not present.
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=libtype")] - public Libtype? Libtype { get; set; } - - /// - /// The number of items to return. If not specified, all items will be returned.
- /// - /// - /// If the number of items exceeds the limit, the response will be paginated.
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=maxresults")] - public int? Maxresults { get; set; } - - /// - /// include collections in the results
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeCollections")] - public IncludeCollections? IncludeCollections { get; set; } - - /// - /// include external media in the results
- /// - /// - /// - /// - ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=includeExternalMedia")] - public IncludeExternalMedia? IncludeExternalMedia { get; set; } - - /// - /// The index of the first item to return. If not specified, the first item will be returned.
- /// - /// - /// If the number of items exceeds the limit, the response will be paginated.
- /// By default this is 0
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Start")] - public int? XPlexContainerStart { get; set; } = 0; - - /// - /// The number of items to return. If not specified, all items will be returned.
- /// - /// - /// If the number of items exceeds the limit, the response will be paginated.
- /// By default this is 50
- /// - ///
- ///
- [SpeakeasyMetadata("queryParam:style=form,explode=true,name=X-Plex-Container-Size")] - public int? XPlexContainerSize { get; set; } = 50; - - /// - /// An authentication token, obtained from plex.tv - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Token")] - public string XPlexToken { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListResponse.cs deleted file mode 100644 index 38640c3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class GetWatchListResponse - { - - /// - /// 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!; - - /// - /// Watchlist Data - /// - public GetWatchListResponseBody? Object { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListResponseBody.cs deleted file mode 100644 index 6709200..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetWatchListResponseBody.cs +++ /dev/null @@ -1,44 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - /// - /// Watchlist Data - /// - public class GetWatchListResponseBody - { - - [JsonProperty("librarySectionID")] - public string? LibrarySectionID { get; set; } - - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - [JsonProperty("offset")] - public int? Offset { get; set; } - - [JsonProperty("totalSize")] - public int? TotalSize { get; set; } - - [JsonProperty("identifier")] - public string? Identifier { get; set; } - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Guids.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Guids.cs deleted file mode 100644 index e552887..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Guids.cs +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Guids - { - - /// - /// The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
- /// - /// - /// - /// - ///
- [JsonProperty("id")] - public string Id { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/HasThumbnail.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/HasThumbnail.cs deleted file mode 100644 index 6f4c2b1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/HasThumbnail.cs +++ /dev/null @@ -1,60 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// Indicates if the part has a thumbnail. - /// - public enum HasThumbnail - { - [JsonProperty("0")] - False, - [JsonProperty("1")] - True, - } - - public static class HasThumbnailExtension - { - public static string Value(this HasThumbnail value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static HasThumbnail ToEnum(this string value) - { - foreach(var field in typeof(HasThumbnail).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 HasThumbnail) - { - return (HasThumbnail)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum HasThumbnail"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Hidden.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Hidden.cs deleted file mode 100644 index 22981e9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Hidden.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// The Plex library visibility setting - /// - public enum Hidden - { - Visible = 0, - ExcludeHomeScreen = 1, - ExcludeHomeScreenAndGlobalSearch = 2, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Hints.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Hints.cs new file mode 100644 index 0000000..7fad356 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Hints.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// Hints describing what we're looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote. + /// + public class Hints + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Home.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Home.cs deleted file mode 100644 index 0791ed8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Home.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Indicates if the user is part of a home group. - /// - public enum Home - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/HomeVisibility.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/HomeVisibility.cs new file mode 100644 index 0000000..d378989 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/HomeVisibility.cs @@ -0,0 +1,72 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// Whether this hub is visible on the home screen
+ /// + /// + /// - all: Visible to all users
+ /// - none: Visible to no users
+ /// - admin: Visible to only admin users
+ /// - shared: Visible to shared users
+ /// + ///
+ ///
+ public enum HomeVisibility + { + [JsonProperty("all")] + All, + [JsonProperty("none")] + None, + [JsonProperty("admin")] + Admin, + [JsonProperty("shared")] + Shared, + } + + public static class HomeVisibilityExtension + { + public static string Value(this HomeVisibility value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static HomeVisibility ToEnum(this string value) + { + foreach(var field in typeof(HomeVisibility).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 HomeVisibility) + { + return (HomeVisibility)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum HomeVisibility"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Hub.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Hub.cs index ecef320..151fb1e 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Hub.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Hub.cs @@ -12,42 +12,66 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; - using System.Collections.Generic; public class Hub { - [JsonProperty("hubKey")] - public string? HubKey { get; set; } + /// + /// Whether this hub is visible on the home screen
+ /// + /// + /// - all: Visible to all users
+ /// - none: Visible to no users
+ /// - admin: Visible to only admin users
+ /// - shared: Visible to shared users
+ /// + ///
+ ///
+ [JsonProperty("homeVisibility")] + public Models.Requests.HomeVisibility? HomeVisibility { get; set; } - [JsonProperty("key")] - public string? Key { get; set; } + /// + /// The identifier for this hub + /// + [JsonProperty("identifier")] + public string? Identifier { get; set; } + /// + /// Whether this hub is visible to admin user home + /// + [JsonProperty("promotedToOwnHome")] + public bool? PromotedToOwnHome { get; set; } + + /// + /// Whether this hub is promoted to all for recommendations + /// + [JsonProperty("promotedToRecommended")] + public bool? PromotedToRecommended { get; set; } + + /// + /// Whether this hub is visible to shared user's home + /// + [JsonProperty("promotedToSharedHome")] + public bool? PromotedToSharedHome { get; set; } + + /// + /// The visibility of this hub in recommendations:
+ /// + /// + /// - all: Visible to all users
+ /// - none: Visible to no users
+ /// - admin: Visible to only admin users
+ /// - shared: Visible to shared users
+ /// + ///
+ ///
+ [JsonProperty("recommendationsVisibility")] + public Models.Requests.RecommendationsVisibility? RecommendationsVisibility { get; set; } + + /// + /// The title of this hub + /// [JsonProperty("title")] public string? Title { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("hubIdentifier")] - public string? HubIdentifier { get; set; } - - [JsonProperty("context")] - public string? Context { get; set; } - - [JsonProperty("size")] - public int? Size { get; set; } - - [JsonProperty("more")] - public bool? More { get; set; } - - [JsonProperty("style")] - public string? Style { get; set; } - - [JsonProperty("promoted")] - public bool? Promoted { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Image.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Image.cs deleted file mode 100644 index 850b4e8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Image.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Image - { - - [JsonProperty("alt")] - public string? Alt { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("url")] - public string? Url { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeAdvanced.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeAdvanced.cs deleted file mode 100644 index b63dc42..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeAdvanced.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum IncludeAdvanced - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeCollections.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeCollections.cs deleted file mode 100644 index 377ba98..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeCollections.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// include collections in the results
- /// - /// - /// - /// - ///
- public enum IncludeCollections - { - One = 1, - Zero = 0, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeDetails.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeDetails.cs deleted file mode 100644 index 9b9bae4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeDetails.cs +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// 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/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeExternalMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeExternalMedia.cs deleted file mode 100644 index bd67c2e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeExternalMedia.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// include external media in the results
- /// - /// - /// - /// - ///
- public enum IncludeExternalMedia - { - One = 1, - Zero = 0, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeGuids.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeGuids.cs deleted file mode 100644 index 5545760..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeGuids.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Adds the Guids object to the response
- /// - /// - /// - /// - ///
- public enum IncludeGuids - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeHttps.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeHttps.cs deleted file mode 100644 index d6673d2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeHttps.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Include Https entries in the results - /// - public enum IncludeHttps - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeIPv6.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeIPv6.cs deleted file mode 100644 index c96553a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeIPv6.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Include IPv6 entries in the results - /// - public enum IncludeIPv6 - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeMeta.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeMeta.cs deleted file mode 100644 index fb906f6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeMeta.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Adds the Meta object to the response
- /// - /// - /// - /// - ///
- public enum IncludeMeta - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeRelay.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeRelay.cs deleted file mode 100644 index 00e3d46..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/IncludeRelay.cs +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Include Relay addresses in the results
- /// - /// - /// E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400
- /// - ///
- ///
- public enum IncludeRelay - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Index.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Index.cs new file mode 100644 index 0000000..526cd7f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Index.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The type of index to grab. + /// + public enum Index + { + [JsonProperty("sd")] + Sd, + } + + public static class IndexExtension + { + public static string Value(this Index value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Index ToEnum(this string value) + { + foreach(var field in typeof(Index).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 Index) + { + return (Index)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Index"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/IngestTransientItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/IngestTransientItemRequest.cs new file mode 100644 index 0000000..49edb37 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/IngestTransientItemRequest.cs @@ -0,0 +1,108 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class IngestTransientItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The file of the file to ingest. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] + public string? Url { get; set; } + + /// + /// A virtual path to use when the url is opaque. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=virtualFilePath")] + public string? VirtualFilePath { get; set; } + + /// + /// Whether or not to compute Plex and OpenSubtitle hashes for the file. Defaults to 0. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=computeHashes")] + public BoolInt? ComputeHashes { get; set; } + + /// + /// Whether or not non matching media should be stored. Defaults to 0. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=ingestNonMatches")] + public BoolInt? IngestNonMatches { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/IngestTransientItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/IngestTransientItemResponse.cs new file mode 100644 index 0000000..7ab0b30 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/IngestTransientItemResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class IngestTransientItemResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/InternalPaymentMethod.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/InternalPaymentMethod.cs deleted file mode 100644 index 802a2a5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/InternalPaymentMethod.cs +++ /dev/null @@ -1,17 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class InternalPaymentMethod - { - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Item.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Item.cs new file mode 100644 index 0000000..727c604 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Item.cs @@ -0,0 +1,61 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class Item + { + + /// + /// The composite thumbnail image path + /// + [JsonProperty("composite")] + public string? Composite { get; set; } + + [JsonProperty("Device")] + public GetPlaylistGeneratorDevice? Device { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + [JsonProperty("Location")] + public GetPlaylistGeneratorLocation? Location { get; set; } + + [JsonProperty("MediaSettings")] + public MediaSettings? MediaSettings { get; set; } + + [JsonProperty("Policy")] + public Policy? Policy { get; set; } + + [JsonProperty("Status")] + public GetPlaylistGeneratorStatus? Status { get; set; } + + [JsonProperty("target")] + public string? Target { get; set; } + + /// + /// The tag of this generator's settings + /// + [JsonProperty("targetTagID")] + public long? TargetTagID { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + + /// + /// The type of this generator + /// + [JsonProperty("type")] + public GetPlaylistGeneratorType? Type { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Language.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Language.cs new file mode 100644 index 0000000..cc03fd3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Language.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class Language + { + + /// + /// 3 letter language code + /// + [JsonProperty("code")] + public string? Code { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Level.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Level.cs index 00f6719..91c052a 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Level.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Level.cs @@ -10,83 +10,26 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests { using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; /// /// An integer log level to write to the PMS log with.
/// /// - /// 0: Error
- /// 1: Warning
- /// 2: Info
- /// 3: Debug
- /// 4: Verbose
+ /// - 0: Error
+ /// - 1: Warning
+ /// - 2: Info
+ /// - 3: Debug
+ /// - 4: Verbose
/// ///
///
- [JsonConverter(typeof(OpenEnumConverter))] - public class Level : IEquatable + public enum Level { - public static readonly Level Zero = new Level(0); - public static readonly Level One = new Level(1); - public static readonly Level Two = new Level(2); - public static readonly Level Three = new Level(3); - public static readonly Level Four = new Level(4); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - [0] = Zero, - [1] = One, - [2] = Two, - [3] = Three, - [4] = Four - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private Level(long value) - { - Value = value; - } - - public long Value { get; } - - public static Level Of(long value) - { - return _values.GetOrAdd(value, _ => new Level(value)); - } - - public static implicit operator Level(long value) => Of(value); - public static implicit operator long(Level level) => level.Value; - - public static Level[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as Level); - - public bool Equals(Level? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); + Zero = 0, + One = 1, + Two = 2, + Three = 3, + Four = 4, } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Libtype.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Libtype.cs deleted file mode 100644 index 6998629..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Libtype.cs +++ /dev/null @@ -1,82 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The type of library to filter. Can be "movie" or "show", or all if not present.
- /// - /// - /// - /// - ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class Libtype : IEquatable - { - public static readonly Libtype Movie = new Libtype("movie"); - public static readonly Libtype Show = new Libtype("show"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["movie"] = Movie, - ["show"] = Show - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private Libtype(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static Libtype Of(string value) - { - return _values.GetOrAdd(value, _ => new Libtype(value)); - } - - public static implicit operator Libtype(string value) => Of(value); - public static implicit operator string(Libtype libtype) => libtype.Value; - - public static Libtype[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as Libtype); - - public bool Equals(Libtype? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Lineup.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Lineup.cs new file mode 100644 index 0000000..aa855b5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Lineup.cs @@ -0,0 +1,57 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class Lineup + { + + [JsonProperty("title")] + public string? Title { get; set; } + + /// + /// The type of this object (`lineup` in this case) + /// + [JsonProperty("type")] + public string? Type { get; set; } + + /// + /// - `-1`: N/A
+ /// + /// + /// - `0`: Over the air
+ /// - `1`: Cable
+ /// - `2`: Satellite
+ /// - `3`: IPTV
+ /// - `4`: Virtual
+ /// + ///
+ ///
+ [JsonProperty("lineupType")] + public Models.Requests.LineupType? LineupType { get; set; } + + [JsonProperty("location")] + public string? Location { get; set; } + + /// + /// The uuid of this lineup + /// + [JsonProperty("uuid")] + public string? Uuid { get; set; } + + [JsonProperty("Channel")] + public List? Channel { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/LineupType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/LineupType.cs new file mode 100644 index 0000000..7ed2a70 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/LineupType.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// - `-1`: N/A
+ /// + /// + /// - `0`: Over the air
+ /// - `1`: Cable
+ /// - `2`: Satellite
+ /// - `3`: IPTV
+ /// - `4`: Virtual
+ /// + ///
+ ///
+ public enum LineupType + { + Minus1 = -1, + Zero = 0, + One = 1, + Two = 2, + Three = 3, + Four = 4, + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesMediaContainer.cs new file mode 100644 index 0000000..1e4f725 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesMediaContainer.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class ListActivitiesMediaContainer + { + + [JsonProperty("Activity")] + public List? Activity { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesResponse.cs new file mode 100644 index 0000000..c11b250 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ListActivitiesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public ListActivitiesResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesResponseBody.cs new file mode 100644 index 0000000..f6c9977 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListActivitiesResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class ListActivitiesResponseBody + { + + [JsonProperty("MediaContainer")] + public ListActivitiesMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListContentRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListContentRequest.cs new file mode 100644 index 0000000..4c41291 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListContentRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ListContentRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// This is a complex query built of several parameters. See API Info section for information on building media queries + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaQuery")] + public MediaQuery? MediaQuery { get; set; } + + /// + /// The id of the section + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public string SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListContentResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListContentResponse.cs new file mode 100644 index 0000000..c6b29e7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListContentResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ListContentResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsDVRsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsDVRsMediaContainer.cs new file mode 100644 index 0000000..3631525 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsDVRsMediaContainer.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class ListDVRsDVRsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + /// + /// A status indicator. If present and non-zero, indicates an error + /// + [JsonProperty("status")] + public long? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsMediaContainer.cs new file mode 100644 index 0000000..6faf73b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsMediaContainer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class ListDVRsMediaContainer + { + + [JsonProperty("MediaContainer")] + public ListDVRsDVRsMediaContainer? MediaContainer { get; set; } + + [JsonProperty("DVR")] + public List? Dvr { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsResponse.cs new file mode 100644 index 0000000..c480e0a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ListDVRsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public ListDVRsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsResponseBody.cs new file mode 100644 index 0000000..03069ea --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDVRsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class ListDVRsResponseBody + { + + [JsonProperty("MediaContainer")] + public ListDVRsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListDevicesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDevicesResponse.cs new file mode 100644 index 0000000..e7b1eb0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDevicesResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ListDevicesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithDevice? MediaContainerWithDevice { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsMediaContainer.cs new file mode 100644 index 0000000..736dbcf --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class ListDownloadQueueItemsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("DownloadQueueItem")] + public List? DownloadQueueItem { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsRequest.cs new file mode 100644 index 0000000..82e6e6c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ListDownloadQueueItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The queue id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=queueId")] + public long QueueId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsResponse.cs new file mode 100644 index 0000000..a4d2cbc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ListDownloadQueueItemsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public ListDownloadQueueItemsResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsResponseBody.cs new file mode 100644 index 0000000..ff81d7d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class ListDownloadQueueItemsResponseBody + { + + [JsonProperty("MediaContainer")] + public ListDownloadQueueItemsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsStatus.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsStatus.cs new file mode 100644 index 0000000..e053428 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListDownloadQueueItemsStatus.cs @@ -0,0 +1,78 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The state of the item:
+ /// + /// + /// - deciding: The item decision is pending
+ /// - waiting: The item is waiting for transcode
+ /// - processing: The item is being transcoded
+ /// - available: The item is available for download
+ /// - error: The item encountered an error in the decision or transcode
+ /// - expired: The transcoded item has timed out and is no longer available
+ /// + ///
+ ///
+ public enum ListDownloadQueueItemsStatus + { + [JsonProperty("deciding")] + Deciding, + [JsonProperty("waiting")] + Waiting, + [JsonProperty("processing")] + Processing, + [JsonProperty("available")] + Available, + [JsonProperty("error")] + Error, + [JsonProperty("expired")] + Expired, + } + + public static class ListDownloadQueueItemsStatusExtension + { + public static string Value(this ListDownloadQueueItemsStatus value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static ListDownloadQueueItemsStatus ToEnum(this string value) + { + foreach(var field in typeof(ListDownloadQueueItemsStatus).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 ListDownloadQueueItemsStatus) + { + return (ListDownloadQueueItemsStatus)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum ListDownloadQueueItemsStatus"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsMediaContainer.cs new file mode 100644 index 0000000..94c44af --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class ListHubsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Hub")] + public List? Hub { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsRequest.cs new file mode 100644 index 0000000..ed444ed --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ListHubsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The section ID for the hubs to reorder + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// Restrict hubs to ones relevant to the provided metadata item + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=metadataItemId")] + public long? MetadataItemId { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsResponse.cs new file mode 100644 index 0000000..13af937 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ListHubsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public ListHubsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsResponseBody.cs new file mode 100644 index 0000000..c25dd78 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListHubsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class ListHubsResponseBody + { + + [JsonProperty("MediaContainer")] + public ListHubsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListLineupsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListLineupsRequest.cs new file mode 100644 index 0000000..0b29391 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListLineupsRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ListLineupsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// 3 letter country code + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=country")] + public string Country { get; set; } = default!; + + /// + /// The `providerIdentifier` of the provider + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=epgId")] + public string EpgId { get; set; } = default!; + + /// + /// The region for the lineup + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=region")] + public string Region { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListLineupsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListLineupsResponse.cs new file mode 100644 index 0000000..50c7b4f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListLineupsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ListLineupsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithLineup? MediaContainerWithLineup { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListMatchesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListMatchesRequest.cs new file mode 100644 index 0000000..6d3b50e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListMatchesRequest.cs @@ -0,0 +1,105 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ListMatchesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=title")] + public string? Title { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=parentTitle")] + public string? ParentTitle { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=agent")] + public string? Agent { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=language")] + public string? Language { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=year")] + public long? Year { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=manual")] + public BoolInt? Manual { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListMatchesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListMatchesResponse.cs new file mode 100644 index 0000000..c3234bd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListMatchesResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ListMatchesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListMomentsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListMomentsRequest.cs new file mode 100644 index 0000000..63f3698 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListMomentsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ListMomentsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListMomentsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListMomentsResponse.cs new file mode 100644 index 0000000..594d3c8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListMomentsResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ListMomentsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithArtwork? MediaContainerWithArtwork { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListPersonMediaRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPersonMediaRequest.cs new file mode 100644 index 0000000..0fd589f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPersonMediaRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ListPersonMediaRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=personId")] + public string PersonId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListPersonMediaResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPersonMediaResponse.cs new file mode 100644 index 0000000..210211a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPersonMediaResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ListPersonMediaResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryMediaContainer.cs new file mode 100644 index 0000000..4038746 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class ListPlaybackHistoryMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Metadata")] + public List? Metadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryMetadata.cs new file mode 100644 index 0000000..f5dc598 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryMetadata.cs @@ -0,0 +1,84 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class ListPlaybackHistoryMetadata + { + + /// + /// The account id of this playback + /// + [JsonProperty("accountID")] + public long? AccountID { get; set; } + + /// + /// The device id which played the item + /// + [JsonProperty("deviceID")] + public long? DeviceID { get; set; } + + /// + /// The key for this individual history item + /// + [JsonProperty("historyKey")] + public string? HistoryKey { get; set; } + + /// + /// The metadata key for the item played + /// + [JsonProperty("key")] + public string? Key { get; set; } + + /// + /// The library section id containing the item played + /// + [JsonProperty("librarySectionID")] + public string? LibrarySectionID { get; set; } + + /// + /// The originally available at of the item played + /// + [JsonProperty("originallyAvailableAt")] + public string? OriginallyAvailableAt { get; set; } + + /// + /// The rating key for the item played + /// + [JsonProperty("ratingKey")] + public string? RatingKey { get; set; } + + /// + /// The thumb of the item played + /// + [JsonProperty("thumb")] + public string? Thumb { get; set; } + + /// + /// The title of the item played + /// + [JsonProperty("title")] + public string? Title { get; set; } + + /// + /// The metadata type of the item played + /// + [JsonProperty("type")] + public string? Type { get; set; } + + /// + /// The time when the item was played + /// + [JsonProperty("viewedAt")] + public long? ViewedAt { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryRequest.cs new file mode 100644 index 0000000..b9efee0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryRequest.cs @@ -0,0 +1,115 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class ListPlaybackHistoryRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The account id to restrict view history + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=accountID")] + public long? AccountID { get; set; } + + /// + /// The time period to restrict history (typically of the form `viewedAt>=12456789`) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=viewedAt")] + public long? ViewedAt { get; set; } + + /// + /// The library section id to restrict view history + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=librarySectionID")] + public long? LibrarySectionID { get; set; } + + /// + /// The metadata item to restrict view history (can provide the id for a show to see all of that show's view history). Note this is translated to `metadata_items.id`, `parents.id`, or `grandparents.id` internally depending on the metadata type. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=metadataItemID")] + public long? MetadataItemID { get; set; } + + /// + /// The field on which to sort. Multiple orderings can be specified separated by `,` and the direction specified following a `:` (`desc` or `asc`; `asc` is assumed if not provided). Note `metadataItemID` may not be used here. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=sort")] + public List? Sort { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryResponse.cs new file mode 100644 index 0000000..243b2ad --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ListPlaybackHistoryResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public ListPlaybackHistoryResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryResponseBody.cs new file mode 100644 index 0000000..c98ac73 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaybackHistoryResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class ListPlaybackHistoryResponseBody + { + + [JsonProperty("MediaContainer")] + public ListPlaybackHistoryMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaylistsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaylistsRequest.cs new file mode 100644 index 0000000..f959161 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaylistsRequest.cs @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ListPlaylistsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Limit to a type of playlist + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=playlistType")] + public Models.Requests.PlaylistType? PlaylistType { get; set; } + + /// + /// Whether this is a smart collection/playlist + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=smart")] + public bool? Smart { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaylistsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaylistsResponse.cs new file mode 100644 index 0000000..d4ab259 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListPlaylistsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ListPlaylistsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersMediaContainer.cs new file mode 100644 index 0000000..fa15852 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersMediaContainer.cs @@ -0,0 +1,236 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class ListProvidersMediaContainer + { + + /// + /// A unique identifier for the provider, e.g. `com.plexapp.plugins.library`. + /// + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { 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 long? Livetv { get; set; } + + [JsonProperty("machineIdentifier")] + public object? MachineIdentifier { get; set; } + + [JsonProperty("mediaProviders")] + public bool? MediaProviders { get; set; } + + [JsonProperty("multiuser")] + public bool? Multiuser { get; set; } + + [JsonProperty("musicAnalysis")] + public long? MusicAnalysis { get; set; } + + [JsonProperty("myPlex")] + public bool? MyPlex { get; set; } + + [JsonProperty("myPlexMappingState")] + public object? MyPlexMappingState { get; set; } + + [JsonProperty("myPlexSigninState")] + public object? MyPlexSigninState { get; set; } + + [JsonProperty("myPlexSubscription")] + public bool? MyPlexSubscription { get; set; } + + [JsonProperty("myPlexUsername")] + public string? MyPlexUsername { get; set; } + + [JsonProperty("offlineTranscode")] + public object? OfflineTranscode { get; set; } + + /// + /// A comma-separated list of features which are enabled for the server owner + /// + [JsonProperty("ownerFeatures")] + public string? OwnerFeatures { get; set; } + + [JsonProperty("platform")] + public string? Platform { get; set; } + + [JsonProperty("platformVersion")] + public string? PlatformVersion { get; set; } + + [JsonProperty("pluginHost")] + public bool? PluginHost { get; set; } + + [JsonProperty("pushNotifications")] + public bool? PushNotifications { get; set; } + + [JsonProperty("readOnlyLibraries")] + public bool? ReadOnlyLibraries { get; set; } + + [JsonProperty("streamingBrainABRVersion")] + public long? StreamingBrainABRVersion { get; set; } + + [JsonProperty("streamingBrainVersion")] + public long? StreamingBrainVersion { get; set; } + + [JsonProperty("sync")] + public bool? Sync { get; set; } + + [JsonProperty("transcoderActiveVideoSessions")] + public long? TranscoderActiveVideoSessions { get; set; } + + [JsonProperty("transcoderAudio")] + public bool? TranscoderAudio { get; set; } + + [JsonProperty("transcoderLyrics")] + public bool? TranscoderLyrics { get; set; } + + [JsonProperty("transcoderPhoto")] + public bool? TranscoderPhoto { get; set; } + + [JsonProperty("transcoderSubtitles")] + public bool? TranscoderSubtitles { get; set; } + + [JsonProperty("transcoderVideo")] + public bool? TranscoderVideo { get; set; } + + /// + /// The suggested video quality bitrates to present to the user + /// + [JsonProperty("transcoderVideoBitrates")] + public object? TranscoderVideoBitrates { get; set; } + + [JsonProperty("transcoderVideoQualities")] + public string? TranscoderVideoQualities { get; set; } + + /// + /// The suggested video resolutions to the above quality bitrates + /// + [JsonProperty("transcoderVideoResolutions")] + public object? TranscoderVideoResolutions { get; set; } + + [JsonProperty("updatedAt")] + public long? UpdatedAt { get; set; } + + [JsonProperty("updater")] + public bool? Updater { get; set; } + + [JsonProperty("version")] + public string? Version { get; set; } + + [JsonProperty("voiceSearch")] + public bool? VoiceSearch { get; set; } + + [JsonProperty("Feature")] + public List? Feature { get; set; } + + /// + /// A comma-separated list of default protocols for the provider, which can be:
+ /// + /// + /// - `stream`: The provider allows streaming media directly from the provider (e.g. for Vimeo). - `download`: The provider allows downloading media for offline storage, sync, etc. (e.g. Podcasts). - `livetv`: The provider provides live content which is only available on a schedule basis. + /// + ///
+ [JsonProperty("protocols")] + public string? Protocols { get; set; } + + /// + /// The title of the provider. + /// + [JsonProperty("title")] + public string? Title { get; set; } + + /// + /// This attribute contains a comma-separated list of the media types exposed by the provider (e.g. `video, audio`). + /// + [JsonProperty("types")] + public string? Types { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersResponse.cs new file mode 100644 index 0000000..59a7f81 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ListProvidersResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public ListProvidersResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersResponseBody.cs new file mode 100644 index 0000000..906b718 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListProvidersResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class ListProvidersResponseBody + { + + [JsonProperty("MediaContainer")] + public ListProvidersMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsMediaContainer.cs new file mode 100644 index 0000000..68a3947 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class ListSessionsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Metadata")] + public List? Metadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsResponse.cs new file mode 100644 index 0000000..37631bd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ListSessionsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public ListSessionsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsResponseBody.cs new file mode 100644 index 0000000..4a79e7a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSessionsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class ListSessionsResponseBody + { + + [JsonProperty("MediaContainer")] + public ListSessionsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListSimilarRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSimilarRequest.cs new file mode 100644 index 0000000..4219eb4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSimilarRequest.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ListSimilarRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + /// + /// Limit results to count items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=count")] + public long? Count { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListSimilarResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSimilarResponse.cs new file mode 100644 index 0000000..0ae0fe7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSimilarResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ListSimilarResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListSonicallySimilarRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSonicallySimilarRequest.cs new file mode 100644 index 0000000..cf4a5e9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSonicallySimilarRequest.cs @@ -0,0 +1,99 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ListSonicallySimilarRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=excludeParentID")] + public long? ExcludeParentID { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=excludeGrandparentID")] + public long? ExcludeGrandparentID { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=limit")] + public long? Limit { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=maxDistance")] + public double? MaxDistance { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListSonicallySimilarResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSonicallySimilarResponse.cs new file mode 100644 index 0000000..10aa227 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListSonicallySimilarResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ListSonicallySimilarResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersMediaContainer.cs new file mode 100644 index 0000000..c4a63c1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class ListTopUsersMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Account")] + public List? Account { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersRequest.cs new file mode 100644 index 0000000..d278d9d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersRequest.cs @@ -0,0 +1,87 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ListTopUsersRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersResponse.cs new file mode 100644 index 0000000..466d8e8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ListTopUsersResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public ListTopUsersResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersResponseBody.cs new file mode 100644 index 0000000..a89c121 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ListTopUsersResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class ListTopUsersResponseBody + { + + [JsonProperty("MediaContainer")] + public ListTopUsersMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Location.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Location.cs index 8672ffb..9f03489 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Location.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Location.cs @@ -11,14 +11,52 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests { using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; + using System; /// - /// The folder path for the media item. + /// Network type of the client, can be used to help determine target bitrate. /// - public class Location + public enum Location { - - [JsonProperty("path")] - public string Path { get; set; } = default!; + [JsonProperty("lan")] + Lan, + [JsonProperty("wan")] + Wan, + [JsonProperty("cellular")] + Cellular, } + + public static class LocationExtension + { + public static string Value(this Location value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Location ToEnum(this string value) + { + foreach(var field in typeof(Location).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 Location) + { + return (Location)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Location"); + } + } + } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/LogLineRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/LogLineRequest.cs deleted file mode 100644 index da9babf..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/LogLineRequest.cs +++ /dev/null @@ -1,50 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - 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/LukeHagar/PlexAPI/SDK/Models/Requests/LogLineResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/LogLineResponse.cs deleted file mode 100644 index 1214c8c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/LogLineResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/LogMultiLineResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/LogMultiLineResponse.cs deleted file mode 100644 index 273bcfc..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/LogMultiLineResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MailingListStatus.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MailingListStatus.cs deleted file mode 100644 index 3a4a58e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/MailingListStatus.cs +++ /dev/null @@ -1,78 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Your current mailing list status (active or unsubscribed) - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class MailingListStatus : IEquatable - { - public static readonly MailingListStatus Active = new MailingListStatus("active"); - public static readonly MailingListStatus Unsubscribed = new MailingListStatus("unsubscribed"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["active"] = Active, - ["unsubscribed"] = Unsubscribed - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private MailingListStatus(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static MailingListStatus Of(string value) - { - return _values.GetOrAdd(value, _ => new MailingListStatus(value)); - } - - public static implicit operator MailingListStatus(string value) => Of(value); - public static implicit operator string(MailingListStatus mailingliststatus) => mailingliststatus.Value; - - public static MailingListStatus[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as MailingListStatus); - - public bool Equals(MailingListStatus? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MakeDecisionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MakeDecisionRequest.cs new file mode 100644 index 0000000..665639a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MakeDecisionRequest.cs @@ -0,0 +1,283 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class MakeDecisionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Type of transcode media + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=transcodeType")] + public TranscodeType TranscodeType { get; set; } = default!; + + /// + /// Transcode session UUID + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=transcodeSessionId")] + public string? TranscodeSessionId { get; set; } + + /// + /// Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=advancedSubtitles")] + public Models.Components.AdvancedSubtitles? AdvancedSubtitles { get; set; } + + /// + /// Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=audioBoost")] + public long? AudioBoost { get; set; } + + /// + /// Target video number of audio channels. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=audioChannelCount")] + public long? AudioChannelCount { get; set; } + + /// + /// Indicates the client supports ABR. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustQuality")] + public BoolInt? AutoAdjustQuality { get; set; } + + /// + /// Indicates if the server should adjust subtitles based on Voice Activity Data. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustSubtitle")] + public BoolInt? AutoAdjustSubtitle { get; set; } + + /// + /// Indicates the client supports direct playing the indicated content. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directPlay")] + public BoolInt? DirectPlay { get; set; } + + /// + /// Indicates the client supports direct streaming the video of the indicated content. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStream")] + public BoolInt? DirectStream { get; set; } + + /// + /// Indicates the client supports direct streaming the audio of the indicated content. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStreamAudio")] + public BoolInt? DirectStreamAudio { get; set; } + + /// + /// Indicates if resolution should be adjusted for orientation. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=disableResolutionRotation")] + public BoolInt? DisableResolutionRotation { get; set; } + + /// + /// Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=hasMDE")] + public BoolInt? HasMDE { get; set; } + + /// + /// Network type of the client, can be used to help determine target bitrate. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=location")] + public Models.Requests.Location? Location { get; set; } + + /// + /// Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaBufferSize")] + public long? MediaBufferSize { get; set; } + + /// + /// Index of the media to transcode. -1 or not specified indicates let the server choose. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaIndex")] + public long? MediaIndex { get; set; } + + /// + /// Target bitrate for audio only files (in kbps, used to transcode). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=musicBitrate")] + public long? MusicBitrate { get; set; } + + /// + /// Offset from the start of the media (in seconds). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=offset")] + public double? Offset { get; set; } + + /// + /// Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=partIndex")] + public long? PartIndex { get; set; } + + /// + /// Internal PMS path of the media to transcode. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=path")] + public string? Path { get; set; } + + /// + /// Maximum bitrate (in kbps) to use in ABR. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=peakBitrate")] + public long? PeakBitrate { get; set; } + + /// + /// Target photo resolution. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=photoResolution")] + public string? PhotoResolution { get; set; } + + /// + /// Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=protocol")] + public Models.Requests.Protocol? Protocol { get; set; } + + /// + /// Number of seconds to include in each transcoded segment + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=secondsPerSegment")] + public long? SecondsPerSegment { get; set; } + + /// + /// Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subtitleSize")] + public long? SubtitleSize { get; set; } + + /// + /// Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subtitles")] + public Models.Requests.Subtitles? Subtitles { get; set; } + + /// + /// Target video bitrate (in kbps). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=videoBitrate")] + public long? VideoBitrate { get; set; } + + /// + /// Target photo quality. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=videoQuality")] + public long? VideoQuality { get; set; } + + /// + /// Target maximum video resolution. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=videoResolution")] + public string? VideoResolution { get; set; } + + /// + /// See Profile Augmentations . + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Profile-Extra")] + public string? XPlexClientProfileExtra { get; set; } + + /// + /// Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Profile-Name")] + public string? XPlexClientProfileName { get; set; } + + /// + /// Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Session-Identifier")] + public string? XPlexSessionIdentifier { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MakeDecisionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MakeDecisionResponse.cs new file mode 100644 index 0000000..6703dda --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MakeDecisionResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class MakeDecisionResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithDecision? MediaContainerWithDecision { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MarkPlayedRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MarkPlayedRequest.cs index 54c0401..6f47e88 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/MarkPlayedRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MarkPlayedRequest.cs @@ -9,15 +9,94 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; public class MarkPlayedRequest { /// - /// The media key to mark as played + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library` + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=identifier")] + public string Identifier { get; set; } = default!; + + /// + /// The key of the item to rate. This is the `ratingKey` found in metadata items /// [SpeakeasyMetadata("queryParam:style=form,explode=true,name=key")] - public double Key { get; set; } = default!; + public string? Key { get; set; } + + /// + /// The URI of the item to mark as played. See intro for description of the URIs + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=uri")] + public string? Uri { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MarkUnplayedRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MarkUnplayedRequest.cs deleted file mode 100644 index 911b773..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/MarkUnplayedRequest.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.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/LukeHagar/PlexAPI/SDK/Models/Requests/MarkUnplayedResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MarkUnplayedResponse.cs deleted file mode 100644 index 13a0aba..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/MarkUnplayedResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Marker.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Marker.cs deleted file mode 100644 index 016837d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Marker.cs +++ /dev/null @@ -1,43 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The final status of the marker - /// - public class Marker - { - - [JsonProperty("id")] - public long Id { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("startTimeOffset")] - public long StartTimeOffset { get; set; } = default!; - - [JsonProperty("endTimeOffset")] - public long EndTimeOffset { get; set; } = default!; - - [JsonProperty("final")] - public bool? Final { get; set; } - - /// - /// Attributes associated with the marker. - /// - [JsonProperty("Attributes")] - public Attributes? Attributes { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MatchItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MatchItemRequest.cs new file mode 100644 index 0000000..a97517f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MatchItemRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class MatchItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=guid")] + public string? Guid { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=name")] + public string? Name { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=year")] + public long? Year { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MatchItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MatchItemResponse.cs new file mode 100644 index 0000000..41c6607 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MatchItemResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class MatchItemResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Media.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Media.cs deleted file mode 100644 index 760a39e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Media.cs +++ /dev/null @@ -1,133 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class Media - { - - /// - /// Unique media identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Duration of the media in milliseconds. - /// - [JsonProperty("duration")] - public int? Duration { get; set; } - - /// - /// Bitrate in bits per second. - /// - [JsonProperty("bitrate")] - public int? Bitrate { get; set; } - - /// - /// Video width in pixels. - /// - [JsonProperty("width")] - public int? Width { get; set; } - - /// - /// Video height in pixels. - /// - [JsonProperty("height")] - public int? Height { get; set; } - - /// - /// Aspect ratio of the video. - /// - [JsonProperty("aspectRatio")] - public float? AspectRatio { get; set; } - - /// - /// Number of audio channels. - /// - [JsonProperty("audioChannels")] - public int? AudioChannels { get; set; } - - [JsonProperty("displayOffset")] - public int? DisplayOffset { get; set; } - - /// - /// Audio codec used. - /// - [JsonProperty("audioCodec")] - public string? AudioCodec { get; set; } - - /// - /// Video codec used. - /// - [JsonProperty("videoCodec")] - public string? VideoCodec { get; set; } - - /// - /// Video resolution (e.g., 4k). - /// - [JsonProperty("videoResolution")] - public string? VideoResolution { get; set; } - - /// - /// File container type. - /// - [JsonProperty("container")] - public string? Container { get; set; } - - /// - /// Frame rate of the video. Values found include NTSC, PAL, 24p
- /// - /// - /// - /// - ///
- [JsonProperty("videoFrameRate")] - public string? VideoFrameRate { get; set; } - - /// - /// Video profile (e.g., main 10). - /// - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - /// - /// Indicates whether voice activity is detected. - /// - [JsonProperty("hasVoiceActivity")] - public bool? HasVoiceActivity { get; set; } - - /// - /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). - /// - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonProperty("optimizedForStreaming")] - public OptimizedForStreaming? OptimizedForStreaming { get; set; } - - [JsonProperty("has64bitOffsets")] - public bool? Has64bitOffsets { get; set; } - - /// - /// An array of parts for this media item. - /// - [JsonProperty("Part")] - public List? Part { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MediaContainer.cs index 7fbd1ae..a629f07 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/MediaContainer.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MediaContainer.cs @@ -12,13 +12,44 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; - using System.Collections.Generic; + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
public class MediaContainer { + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + [JsonProperty("size")] - public double? Size { get; set; } + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } [JsonProperty("allowCameraUpload")] public bool? AllowCameraUpload { get; set; } @@ -66,10 +97,10 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public bool? ItemClusters { get; set; } [JsonProperty("livetv")] - public double? Livetv { get; set; } + public long? Livetv { get; set; } [JsonProperty("machineIdentifier")] - public string? MachineIdentifier { get; set; } + public object? MachineIdentifier { get; set; } [JsonProperty("mediaProviders")] public bool? MediaProviders { get; set; } @@ -78,16 +109,16 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public bool? Multiuser { get; set; } [JsonProperty("musicAnalysis")] - public double? MusicAnalysis { get; set; } + public long? MusicAnalysis { get; set; } [JsonProperty("myPlex")] public bool? MyPlex { get; set; } [JsonProperty("myPlexMappingState")] - public string? MyPlexMappingState { get; set; } + public object? MyPlexMappingState { get; set; } [JsonProperty("myPlexSigninState")] - public string? MyPlexSigninState { get; set; } + public object? MyPlexSigninState { get; set; } [JsonProperty("myPlexSubscription")] public bool? MyPlexSubscription { get; set; } @@ -96,14 +127,14 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public string? MyPlexUsername { get; set; } [JsonProperty("offlineTranscode")] - public double? OfflineTranscode { get; set; } + public object? OfflineTranscode { get; set; } + /// + /// A comma-separated list of features which are enabled for the server owner + /// [JsonProperty("ownerFeatures")] public string? OwnerFeatures { get; set; } - [JsonProperty("photoAutoTag")] - public bool? PhotoAutoTag { get; set; } - [JsonProperty("platform")] public string? Platform { get; set; } @@ -120,16 +151,16 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public bool? ReadOnlyLibraries { get; set; } [JsonProperty("streamingBrainABRVersion")] - public double? StreamingBrainABRVersion { get; set; } + public long? StreamingBrainABRVersion { get; set; } [JsonProperty("streamingBrainVersion")] - public double? StreamingBrainVersion { get; set; } + public long? StreamingBrainVersion { get; set; } [JsonProperty("sync")] public bool? Sync { get; set; } [JsonProperty("transcoderActiveVideoSessions")] - public double? TranscoderActiveVideoSessions { get; set; } + public long? TranscoderActiveVideoSessions { get; set; } [JsonProperty("transcoderAudio")] public bool? TranscoderAudio { get; set; } @@ -146,17 +177,23 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests [JsonProperty("transcoderVideo")] public bool? TranscoderVideo { get; set; } + /// + /// The suggested video quality bitrates to present to the user + /// [JsonProperty("transcoderVideoBitrates")] - public string? TranscoderVideoBitrates { get; set; } + public object? TranscoderVideoBitrates { get; set; } [JsonProperty("transcoderVideoQualities")] public string? TranscoderVideoQualities { get; set; } + /// + /// The suggested video resolutions to the above quality bitrates + /// [JsonProperty("transcoderVideoResolutions")] - public string? TranscoderVideoResolutions { get; set; } + public object? TranscoderVideoResolutions { get; set; } [JsonProperty("updatedAt")] - public double? UpdatedAt { get; set; } + public long? UpdatedAt { get; set; } [JsonProperty("updater")] public bool? Updater { get; set; } @@ -167,7 +204,22 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests [JsonProperty("voiceSearch")] public bool? VoiceSearch { get; set; } - [JsonProperty("Directory")] - public List? Directory { get; set; } + /// + /// A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth + /// + [JsonProperty("Bandwidths")] + public Bandwidths? Bandwidths { get; set; } + + /// + /// A code describing why the session was terminated by the server. + /// + [JsonProperty("terminationCode")] + public long? TerminationCode { get; set; } + + /// + /// A user friendly and localized text describing why the session was terminated by the server. + /// + [JsonProperty("terminationText")] + public string? TerminationText { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MediaGrabber.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MediaGrabber.cs new file mode 100644 index 0000000..346ea3c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MediaGrabber.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class MediaGrabber + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + [JsonProperty("protocol")] + public string? Protocol { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MediaProvider.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MediaProvider.cs deleted file mode 100644 index 3500d7d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/MediaProvider.cs +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class MediaProvider - { - - [JsonProperty("identifier")] - public string? Identifier { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("types")] - public string? Types { get; set; } - - [JsonProperty("protocols")] - public string? Protocols { get; set; } - - [JsonProperty("Feature")] - public List? Feature { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MediaReviewsVisibility.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MediaReviewsVisibility.cs deleted file mode 100644 index 6129963..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/MediaReviewsVisibility.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Whether or not the account has media reviews visibility enabled - /// - public enum MediaReviewsVisibility - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MediaSettings.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MediaSettings.cs new file mode 100644 index 0000000..7379ff0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MediaSettings.cs @@ -0,0 +1,79 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class MediaSettings + { + + [JsonProperty("advancedSubtitles")] + public Models.Requests.AdvancedSubtitles? AdvancedSubtitles { get; set; } + + [JsonProperty("audioBoost")] + public long? AudioBoost { get; set; } + + [JsonProperty("audioChannelCount")] + public long? AudioChannelCount { get; set; } + + [JsonProperty("autoAdjustQuality")] + public bool? AutoAdjustQuality { get; set; } + + [JsonProperty("autoAdjustSubtitle")] + public bool? AutoAdjustSubtitle { get; set; } + + [JsonProperty("directPlay")] + public bool? DirectPlay { get; set; } + + [JsonProperty("directStream")] + public bool? DirectStream { get; set; } + + [JsonProperty("directStreamAudio")] + public bool? DirectStreamAudio { get; set; } + + [JsonProperty("disableResolutionRotation")] + public bool? DisableResolutionRotation { get; set; } + + [JsonProperty("maxVideoBitrate")] + public long? MaxVideoBitrate { get; set; } + + [JsonProperty("musicBitrate")] + public long? MusicBitrate { get; set; } + + [JsonProperty("peakBitrate")] + public long? PeakBitrate { get; set; } + + [JsonProperty("photoQuality")] + public long? PhotoQuality { get; set; } + + [JsonProperty("photoResolution")] + public string? PhotoResolution { get; set; } + + [JsonProperty("secondsPerSegment")] + public long? SecondsPerSegment { get; set; } + + [JsonProperty("subtitles")] + public GetPlaylistGeneratorSubtitles? Subtitles { get; set; } + + [JsonProperty("subtitleSize")] + public long? SubtitleSize { get; set; } + + [JsonProperty("videoBitrate")] + public long? VideoBitrate { get; set; } + + [JsonProperty("videoQuality")] + public long? VideoQuality { get; set; } + + [JsonProperty("videoResolution")] + public string? VideoResolution { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MediaSubscription.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MediaSubscription.cs new file mode 100644 index 0000000..4ed3c6f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MediaSubscription.cs @@ -0,0 +1,111 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// A media subscription contains a representation of metadata desired to be recorded
+ /// + /// + /// + /// + ///
+ public class MediaSubscription + { + + /// + /// The title of this subscription type + /// + [JsonProperty("title")] + public string? Title { get; set; } + + /// + /// Metadata type number + /// + [JsonProperty("type")] + public long? Type { get; set; } + + [JsonProperty("airingsType")] + public string? AiringsType { get; set; } + + [JsonProperty("createdAt")] + public long? CreatedAt { get; set; } + + /// + /// Media Matching Hints + /// + [JsonProperty("Directory")] + public Dictionary? Directory { get; set; } + + /// + /// Only included if `includeStorage` is specified + /// + [JsonProperty("durationTotal")] + public long? DurationTotal { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("librarySectionTitle")] + public string? LibrarySectionTitle { get; set; } + + [JsonProperty("locationPath")] + public string? LocationPath { get; set; } + + [JsonProperty("MediaGrabOperation")] + public List? MediaGrabOperation { get; set; } + + /// + /// Media Matching Hints + /// + [JsonProperty("Playlist")] + public Dictionary? Playlist { get; set; } + + [JsonProperty("Setting")] + public List? Setting { get; set; } + + /// + /// Only included if `includeStorage` is specified + /// + [JsonProperty("storageTotal")] + public long? StorageTotal { get; set; } + + /// + /// Where this subscription will record to + /// + [JsonProperty("targetLibrarySectionID")] + public long? TargetLibrarySectionID { get; set; } + + /// + /// The library section location id for where the item is to be recorded + /// + [JsonProperty("targetSectionLocationID")] + public long? TargetSectionLocationID { get; set; } + + /// + /// Media Matching Hints + /// + [JsonProperty("Video")] + public Dictionary? Video { get; set; } + + /// + /// Parameter string for creating this subscription + /// + [JsonProperty("parameters")] + public string? Parameters { get; set; } + + [JsonProperty("selected")] + public bool? Selected { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MergeItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MergeItemsRequest.cs new file mode 100644 index 0000000..85c1141 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MergeItemsRequest.cs @@ -0,0 +1,91 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class MergeItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string IdsPathParameter { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=false,name=ids")] + public List? IdsQueryParameter { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MergeItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MergeItemsResponse.cs new file mode 100644 index 0000000..1d654fe --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MergeItemsResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class MergeItemsResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Meta.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Meta.cs deleted file mode 100644 index 270a4c6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Meta.cs +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - /// - /// The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
- /// - /// - /// - /// - ///
- public class Meta - { - - [JsonProperty("Type")] - public List? Type { get; set; } - - [JsonProperty("FieldType")] - public List? FieldType { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Metadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Metadata.cs index 80764f9..c1944c9 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Metadata.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Metadata.cs @@ -9,118 +9,416 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; - using NodaTime; using System.Collections.Generic; + /// + /// Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.
+ /// + /// + ///
+ /// Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items.
+ ///
+ /// Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
+ /// + ///
+ ///
public class Metadata { - [JsonProperty("art")] - public string? Art { get; set; } + /// + /// Information about the player being used for playback + /// + [JsonProperty("Player")] + public Player? Player { get; set; } - [JsonProperty("guid")] - public string? Guid { get; set; } + /// + /// Information about the playback session + /// + [JsonProperty("Session")] + public Session? Session { get; set; } - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("ratingKey")] - public string? RatingKey { get; set; } - - [JsonProperty("studio")] - public string? Studio { get; set; } - - [JsonProperty("tagline")] - public string? Tagline { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - [JsonProperty("addedAt")] - public int? AddedAt { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("publicPagesURL")] - public string? PublicPagesURL { get; set; } - - [JsonProperty("slug")] - public string? Slug { get; set; } - - [JsonProperty("userState")] - public bool? UserState { get; set; } + /// + /// The user playing the content + /// + [JsonProperty("User")] + public User? User { get; set; } + /// + /// The title of the item (e.g. “300” or “The Simpsons”) + /// [JsonProperty("title")] - public string? Title { get; set; } + public object? Title { get; set; } + /// + /// The type of the video item, such as `movie`, `episode`, or `clip`. + /// + [JsonProperty("type")] + public object? Type { get; set; } + + /// + /// When present, contains the disc number for a track on multi-disc albums. + /// + [JsonProperty("absoluteIndex")] + public long? AbsoluteIndex { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was added to the library. + /// + [JsonProperty("addedAt")] + public long? AddedAt { get; set; } + + /// + /// When present, the URL for the background artwork for the item. + /// + [JsonProperty("art")] + public object? Art { get; set; } + + /// + /// Some rating systems separate reviewer ratings from audience ratings + /// + [JsonProperty("audienceRating")] + public double? AudienceRating { get; set; } + + /// + /// A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). + /// + [JsonProperty("audienceRatingImage")] + public object? AudienceRatingImage { get; set; } + + [JsonProperty("Autotag")] + public List? Autotag { get; set; } + + /// + /// When present, the URL for a banner graphic for the item. + /// + [JsonProperty("banner")] + public object? Banner { get; set; } + + /// + /// When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). + /// + [JsonProperty("chapterSource")] + public object? ChapterSource { get; set; } + + /// + /// When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). + /// + [JsonProperty("composite")] + public object? Composite { get; set; } + + /// + /// If known, the content rating (e.g. MPAA) for an item. + /// [JsonProperty("contentRating")] - public string? ContentRating { get; set; } + public object? ContentRating { get; set; } - [JsonProperty("originallyAvailableAt")] - public LocalDate? OriginallyAvailableAt { get; set; } + [JsonProperty("Country")] + public List? Country { get; set; } - [JsonProperty("year")] - public int? Year { get; set; } + [JsonProperty("Director")] + public List? Director { get; set; } + + /// + /// When present, the duration for the item, in units of milliseconds. + /// + [JsonProperty("duration")] + public long? Duration { get; set; } + + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Filter")] + public List? Filter { get; set; } + + [JsonProperty("Genre")] + public List? Genre { get; set; } + + /// + /// The `art` of the grandparent + /// + [JsonProperty("grandparentArt")] + public string? GrandparentArt { get; set; } + + /// + /// The `hero` of the grandparent + /// + [JsonProperty("grandparentHero")] + public string? GrandparentHero { get; set; } + + /// + /// The `key` of the grandparent + /// + [JsonProperty("grandparentKey")] + public string? GrandparentKey { get; set; } + + /// + /// The `ratingKey` of the grandparent + /// + [JsonProperty("grandparentRatingKey")] + public string? GrandparentRatingKey { get; set; } + + /// + /// The `theme` of the grandparent + /// + [JsonProperty("grandparentTheme")] + public string? GrandparentTheme { get; set; } + + /// + /// The `thumb` of the grandparent + /// + [JsonProperty("grandparentThumb")] + public string? GrandparentThumb { get; set; } + + /// + /// The `title` of the grandparent + /// + [JsonProperty("grandparentTitle")] + public string? GrandparentTitle { get; set; } + + [JsonProperty("Guid")] + public List? Guid { get; set; } + + /// + /// When present, the URL for a hero image for the item. + /// + [JsonProperty("hero")] + public object? Hero { get; set; } [JsonProperty("Image")] public List? Image { get; set; } - [JsonProperty("banner")] - public string? Banner { get; set; } + /// + /// When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. + /// + [JsonProperty("index")] + public long? Index { get; set; } + /// + /// The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. + /// + [JsonProperty("key")] + public object? Key { get; set; } + + /// + /// When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. + /// + [JsonProperty("lastViewedAt")] + public long? LastViewedAt { get; set; } + + /// + /// For shows and seasons, contains the number of total episodes. + /// + [JsonProperty("leafCount")] + public long? LeafCount { get; set; } + + [JsonProperty("Media")] + public List? Media { get; set; } + + /// + /// When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. + /// + [JsonProperty("originallyAvailableAt")] + public object? OriginallyAvailableAt { get; set; } + + /// + /// When present, used to indicate an item's original title, e.g. a movie's foreign title. + /// + [JsonProperty("originalTitle")] + public object? OriginalTitle { get; set; } + + /// + /// The `hero` of the parent + /// + [JsonProperty("parentHero")] + public string? ParentHero { get; set; } + + /// + /// The `index` of the parent + /// + [JsonProperty("parentIndex")] + public long? ParentIndex { get; set; } + + /// + /// The `key` of the parent + /// + [JsonProperty("parentKey")] + public string? ParentKey { get; set; } + + /// + /// The `ratingKey` of the parent + /// + [JsonProperty("parentRatingKey")] + public string? ParentRatingKey { get; set; } + + /// + /// The `thumb` of the parent + /// + [JsonProperty("parentThumb")] + public string? ParentThumb { get; set; } + + /// + /// The `title` of the parent + /// + [JsonProperty("parentTitle")] + public string? ParentTitle { get; set; } + + /// + /// Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. + /// + [JsonProperty("primaryExtraKey")] + public object? PrimaryExtraKey { get; set; } + + /// + /// Prompt to give the user for this directory (such as `Search Movies`) + /// + [JsonProperty("prompt")] + public string? Prompt { get; set; } + + /// + /// When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. + /// [JsonProperty("rating")] public double? Rating { get; set; } - [JsonProperty("expiresAt")] - public int? ExpiresAt { get; set; } + [JsonProperty("Rating")] + public List? RatingArray { get; set; } - [JsonProperty("originalTitle")] - public string? OriginalTitle { get; set; } - - [JsonProperty("audienceRating")] - public double? AudienceRating { get; set; } - - [JsonProperty("audienceRatingImage")] - public string? AudienceRatingImage { get; set; } + /// + /// Number of ratings under this metadata + /// + [JsonProperty("ratingCount")] + public long? RatingCount { get; set; } + /// + /// When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. + /// [JsonProperty("ratingImage")] - public string? RatingImage { get; set; } + public object? RatingImage { get; set; } - [JsonProperty("imdbRatingCount")] - public int? ImdbRatingCount { get; set; } + /// + /// This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. + /// + [JsonProperty("ratingKey")] + public object? RatingKey { get; set; } - [JsonProperty("subtype")] - public string? Subtype { get; set; } + [JsonProperty("Role")] + public List? Role { get; set; } - [JsonProperty("theme")] - public string? Theme { get; set; } + /// + /// Indicates this is a search directory + /// + [JsonProperty("search")] + public bool? Search { get; set; } - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - [JsonProperty("childCount")] - public int? ChildCount { get; set; } - - [JsonProperty("isContinuingSeries")] - public bool? IsContinuingSeries { get; set; } + /// + /// Used by old clients to provide nested menus allowing for primative (but structured) navigation. + /// + [JsonProperty("secondary")] + public bool? Secondary { get; set; } + /// + /// When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. + /// [JsonProperty("skipChildren")] public bool? SkipChildren { get; set; } - [JsonProperty("availabilityId")] - public string? AvailabilityId { get; set; } + /// + /// When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). + /// + [JsonProperty("skipParent")] + public bool? SkipParent { get; set; } - [JsonProperty("streamingMediaId")] - public string? StreamingMediaId { get; set; } + /// + /// Typically only seen in metadata at a library's top level + /// + [JsonProperty("Sort")] + public List? Sort { get; set; } - [JsonProperty("playableKey")] - public string? PlayableKey { get; set; } + /// + /// When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). + /// + [JsonProperty("studio")] + public object? Studio { get; set; } + + /// + /// The subtype of the video item, such as `photo` when the video item is in a photo library + /// + [JsonProperty("subtype")] + public object? Subtype { get; set; } + + /// + /// When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). + /// + [JsonProperty("summary")] + public object? Summary { get; set; } + + /// + /// When present, a pithy one-liner about the item (usually only seen for movies). + /// + [JsonProperty("tagline")] + public object? Tagline { get; set; } + + /// + /// When present, the URL for theme music for the item (usually only for TV shows). + /// + [JsonProperty("theme")] + public object? Theme { get; set; } + + /// + /// When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. + /// + [JsonProperty("thumb")] + public object? Thumb { get; set; } + + /// + /// Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). + /// + [JsonProperty("titleSort")] + public object? TitleSort { get; set; } + + /// + /// In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). + /// + [JsonProperty("updatedAt")] + public long? UpdatedAt { get; set; } + + /// + /// When the user has rated an item, this contains the user rating + /// + [JsonProperty("userRating")] + public double? UserRating { get; set; } + + /// + /// When a users has completed watched or listened to an item, this attribute contains the number of consumptions. + /// + [JsonProperty("viewCount")] + public long? ViewCount { get; set; } + + /// + /// For shows and seasons, contains the number of viewed episodes. + /// + [JsonProperty("viewedLeafCount")] + public long? ViewedLeafCount { get; set; } + + /// + /// When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. + /// + [JsonProperty("viewOffset")] + public long? ViewOffset { get; set; } + + [JsonProperty("Writer")] + public List? Writer { get; set; } + + /// + /// When present, the year associated with the item's release (e.g. release year for a movie). + /// + [JsonProperty("year")] + public long? Year { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MinSize.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MinSize.cs deleted file mode 100644 index 555636a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/MinSize.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// 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/LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceMediaContainer.cs new file mode 100644 index 0000000..219f6a6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceMediaContainer.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class ModifyDeviceMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public long? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceRequest.cs new file mode 100644 index 0000000..3327adf --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ModifyDeviceRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the device. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=deviceId")] + public long DeviceId { get; set; } = default!; + + /// + /// Whether to enable the device + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=enabled")] + public BoolInt? Enabled { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceResponse.cs new file mode 100644 index 0000000..cf68257 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ModifyDeviceResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public ModifyDeviceResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceResponseBody.cs new file mode 100644 index 0000000..43406b6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ModifyDeviceResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class ModifyDeviceResponseBody + { + + [JsonProperty("MediaContainer")] + public ModifyDeviceMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MoveCollectionItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MoveCollectionItemRequest.cs new file mode 100644 index 0000000..75ef68f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MoveCollectionItemRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class MoveCollectionItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The collection id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=collectionId")] + public long CollectionId { get; set; } = default!; + + /// + /// The item to move + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=itemId")] + public long ItemId { get; set; } = default!; + + /// + /// The item to move this item after. If not provided, this item will be moved to the beginning + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=after")] + public long? After { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MoveCollectionItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MoveCollectionItemResponse.cs new file mode 100644 index 0000000..1410223 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MoveCollectionItemResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class MoveCollectionItemResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MoveHubRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MoveHubRequest.cs new file mode 100644 index 0000000..25a2d28 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MoveHubRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class MoveHubRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The section ID for the hubs to reorder + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// The identifier of the hub to move + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=identifier")] + public string Identifier { get; set; } = default!; + + /// + /// The identifier of the hub to order this hub after (or empty/missing to put this hub first) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=after")] + public string? After { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MoveHubResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MoveHubResponse.cs new file mode 100644 index 0000000..de5b809 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MoveHubResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class MoveHubResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public GetResponses200? GetResponses200 { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MovePlayQueueItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MovePlayQueueItemRequest.cs new file mode 100644 index 0000000..1fbbf04 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MovePlayQueueItemRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class MovePlayQueueItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the play queue. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playQueueId")] + public long PlayQueueId { get; set; } = default!; + + /// + /// The play queue item ID to delete. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playQueueItemId")] + public long PlayQueueItemId { get; set; } = default!; + + /// + /// The play queue item ID to insert the new item after. If not present, moves to the beginning. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=after")] + public long? After { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MovePlayQueueItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MovePlayQueueItemResponse.cs new file mode 100644 index 0000000..f175d8f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MovePlayQueueItemResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class MovePlayQueueItemResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MovePlaylistItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MovePlaylistItemRequest.cs new file mode 100644 index 0000000..02a1e75 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MovePlaylistItemRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class MovePlaylistItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistId")] + public long PlaylistId { get; set; } = default!; + + /// + /// The playlist item ID to move. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistItemId")] + public long PlaylistItemId { get; set; } = default!; + + /// + /// The playlist item ID to insert the new item after. If not provided, item is moved to beginning of playlist + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=after")] + public long? After { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MovePlaylistItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MovePlaylistItemResponse.cs new file mode 100644 index 0000000..7d38ef9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/MovePlaylistItemResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class MovePlaylistItemResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/MyPlex.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/MyPlex.cs deleted file mode 100644 index 3ae88e4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/MyPlex.cs +++ /dev/null @@ -1,54 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/One.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/One.cs deleted file mode 100644 index 293bd67..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/One.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum One - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/OnlyTransient.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/OnlyTransient.cs deleted file mode 100644 index 1304517..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/OnlyTransient.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// 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/LukeHagar/PlexAPI/SDK/Models/Requests/Operator.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Operator.cs deleted file mode 100644 index 490986e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Operator.cs +++ /dev/null @@ -1,24 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Operator - { - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizeDatabaseRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizeDatabaseRequest.cs new file mode 100644 index 0000000..57cc97e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizeDatabaseRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class OptimizeDatabaseRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// If set, don't wait for completion but return an activity + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=async")] + public BoolInt? Async { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizeDatabaseResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizeDatabaseResponse.cs new file mode 100644 index 0000000..747173c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizeDatabaseResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class OptimizeDatabaseResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming.cs deleted file mode 100644 index dc2ee5d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming.cs +++ /dev/null @@ -1,203 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using Newtonsoft.Json.Linq; - using System; - using System.Collections.Generic; - using System.Numerics; - using System.Reflection; - - public class OptimizedForStreamingType - { - private OptimizedForStreamingType(string value) { Value = value; } - - public string Value { get; private set; } - - public static OptimizedForStreamingType One { get { return new OptimizedForStreamingType("1"); } } - - public static OptimizedForStreamingType Boolean { get { return new OptimizedForStreamingType("boolean"); } } - - public static OptimizedForStreamingType Null { get { return new OptimizedForStreamingType("null"); } } - - public override string ToString() { return Value; } - public static implicit operator String(OptimizedForStreamingType v) { return v.Value; } - public static OptimizedForStreamingType FromString(string v) { - switch(v) { - case "1": return One; - case "boolean": return Boolean; - case "null": return Null; - default: throw new ArgumentException("Invalid value for OptimizedForStreamingType"); - } - } - public override bool Equals(object? obj) - { - if (obj == null || GetType() != obj.GetType()) - { - return false; - } - return Value.Equals(((OptimizedForStreamingType)obj).Value); - } - - public override int GetHashCode() - { - return Value.GetHashCode(); - } - } - - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonConverter(typeof(OptimizedForStreaming.OptimizedForStreamingConverter))] - public class OptimizedForStreaming - { - public OptimizedForStreaming(OptimizedForStreamingType type) - { - Type = type; - } - - [SpeakeasyMetadata("form:explode=true")] - public One? One { get; set; } - - [SpeakeasyMetadata("form:explode=true")] - public bool? Boolean { get; set; } - - public OptimizedForStreamingType Type { get; set; } - public static OptimizedForStreaming CreateOne(One one) - { - OptimizedForStreamingType typ = OptimizedForStreamingType.One; - - OptimizedForStreaming res = new OptimizedForStreaming(typ); - res.One = one; - return res; - } - public static OptimizedForStreaming CreateBoolean(bool boolean) - { - OptimizedForStreamingType typ = OptimizedForStreamingType.Boolean; - - OptimizedForStreaming res = new OptimizedForStreaming(typ); - res.Boolean = boolean; - return res; - } - - public static OptimizedForStreaming CreateNull() - { - OptimizedForStreamingType typ = OptimizedForStreamingType.Null; - return new OptimizedForStreaming(typ); - } - - public class OptimizedForStreamingConverter : JsonConverter - { - - public override bool CanConvert(System.Type objectType) => objectType == typeof(OptimizedForStreaming); - - public override bool CanRead => true; - - public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) - { - var json = JRaw.Create(reader).ToString(); - if (json == "null") - { - return null; - } - - var fallbackCandidates = new List<(System.Type, object, string)>(); - - try - { - return new OptimizedForStreaming(OptimizedForStreamingType.One) - { - One = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) - }; - } - catch (ResponseBodyDeserializer.MissingMemberException) - { - fallbackCandidates.Add((typeof(One), new OptimizedForStreaming(OptimizedForStreamingType.One), "One")); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next option - } - catch (Exception) - { - throw; - } - - try - { - var converted = Convert.ToBoolean(json); - return new OptimizedForStreaming(OptimizedForStreamingType.Boolean) - { - Boolean = converted - }; - } - catch (System.FormatException) - { - // try next option - } - - if (fallbackCandidates.Count > 0) - { - fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); - foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) - { - try - { - return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); - } - catch (ResponseBodyDeserializer.DeserializationException) - { - // try next fallback option - } - catch (Exception) - { - throw; - } - } - } - - throw new InvalidOperationException("Could not deserialize into any supported types."); - } - - public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) - { - if (value == null) { - writer.WriteRawValue("null"); - return; - } - - OptimizedForStreaming res = (OptimizedForStreaming)value; - if (OptimizedForStreamingType.FromString(res.Type).Equals(OptimizedForStreamingType.Null)) - { - writer.WriteRawValue("null"); - return; - } - - if (res.One != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.One)); - return; - } - - if (res.Boolean != null) - { - writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); - return; - } - } - - } - - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming1.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming1.cs deleted file mode 100644 index 85e5bab..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming1.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum OptimizedForStreaming1 - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Owned.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Owned.cs deleted file mode 100644 index 6b08368..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Owned.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Indicates if the user owns the server. - /// - public enum Owned - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Params.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Params.cs new file mode 100644 index 0000000..c87019a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Params.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// Subscription parameters.
+ /// + /// + /// - `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into
+ /// - `source`: Required for downloads to indicate the source of the downloaded content.
+ /// + ///
+ ///
+ public class Params + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Part.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Part.cs deleted file mode 100644 index c65a24b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Part.cs +++ /dev/null @@ -1,105 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class Part - { - - /// - /// Indicates if the part is accessible. - /// - [JsonProperty("accessible")] - public bool? Accessible { get; set; } - - /// - /// Indicates if the part exists. - /// - [JsonProperty("exists")] - public bool? Exists { get; set; } - - /// - /// Unique part identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Key to access this part. - /// - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("indexes")] - public string? Indexes { get; set; } - - /// - /// Duration of the part in milliseconds. - /// - [JsonProperty("duration")] - public int? Duration { get; set; } - - /// - /// File path for the part. - /// - [JsonProperty("file")] - public string File { get; set; } = default!; - - /// - /// File size in bytes. - /// - [JsonProperty("size")] - public long Size { get; set; } = default!; - - [JsonProperty("packetLength")] - public int? PacketLength { get; set; } - - /// - /// Container format of the part. - /// - [JsonProperty("container")] - public string? Container { get; set; } - - /// - /// Video profile for the part. - /// - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - /// - /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). - /// - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - [JsonProperty("has64bitOffsets")] - public bool? Has64bitOffsets { get; set; } - - /// - /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - /// - [JsonProperty("optimizedForStreaming")] - public GetRecentlyAddedOptimizedForStreaming? OptimizedForStreaming { get; set; } - - [JsonProperty("hasThumbnail")] - public HasThumbnail? HasThumbnail { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.HasThumbnail.False; - - /// - /// An array of streams for this part. - /// - [JsonProperty("Stream")] - public List? Stream { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PastSubscription.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PastSubscription.cs deleted file mode 100644 index 11c30e5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PastSubscription.cs +++ /dev/null @@ -1,68 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class PastSubscription - { - - [JsonProperty("id", NullValueHandling = NullValueHandling.Include)] - public string? Id { get; set; } - - [JsonProperty("mode", NullValueHandling = NullValueHandling.Include)] - public string? Mode { get; set; } - - [JsonProperty("renewsAt", NullValueHandling = NullValueHandling.Include)] - public long? RenewsAt { get; set; } - - [JsonProperty("endsAt", NullValueHandling = NullValueHandling.Include)] - public long? EndsAt { get; set; } - - [JsonProperty("canceled")] - public bool? Canceled { get; set; } = false; - - [JsonProperty("gracePeriod")] - public bool? GracePeriod { get; set; } = false; - - [JsonProperty("onHold")] - public bool? OnHold { get; set; } = false; - - [JsonProperty("canReactivate")] - public bool? CanReactivate { get; set; } = false; - - [JsonProperty("canUpgrade")] - public bool? CanUpgrade { get; set; } = false; - - [JsonProperty("canDowngrade")] - public bool? CanDowngrade { get; set; } = false; - - [JsonProperty("canConvert")] - public bool? CanConvert { get; set; } = false; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - - [JsonProperty("transfer", NullValueHandling = NullValueHandling.Include)] - public string? Transfer { get; set; } - - [JsonProperty("state")] - public PostUsersSignInDataState State { get; set; } = default!; - - [JsonProperty("billing")] - public Billing Billing { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PathParamElement.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PathParamElement.cs new file mode 100644 index 0000000..eca022f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/PathParamElement.cs @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + public enum PathParamElement + { + [JsonProperty("thumb")] + Thumb, + [JsonProperty("art")] + Art, + [JsonProperty("clearLogo")] + ClearLogo, + [JsonProperty("banner")] + Banner, + [JsonProperty("poster")] + Poster, + [JsonProperty("theme")] + Theme, + } + + public static class PathParamElementExtension + { + public static string Value(this PathParamElement value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static PathParamElement ToEnum(this string value) + { + foreach(var field in typeof(PathParamElement).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 PathParamElement) + { + return (PathParamElement)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum PathParamElement"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PathParamIndex.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PathParamIndex.cs new file mode 100644 index 0000000..4d6c054 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/PathParamIndex.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The type of index to grab. + /// + public enum PathParamIndex + { + [JsonProperty("sd")] + Sd, + } + + public static class PathParamIndexExtension + { + public static string Value(this PathParamIndex value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static PathParamIndex ToEnum(this string value) + { + foreach(var field in typeof(PathParamIndex).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 PathParamIndex) + { + return (PathParamIndex)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum PathParamIndex"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PathParamTask.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PathParamTask.cs new file mode 100644 index 0000000..f991a5b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/PathParamTask.cs @@ -0,0 +1,100 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The task name + /// + public enum PathParamTask + { + [JsonProperty("AutomaticUpdates")] + AutomaticUpdates, + [JsonProperty("BackupDatabase")] + BackupDatabase, + [JsonProperty("ButlerTaskGenerateAdMarkers")] + ButlerTaskGenerateAdMarkers, + [JsonProperty("ButlerTaskGenerateCreditsMarkers")] + ButlerTaskGenerateCreditsMarkers, + [JsonProperty("ButlerTaskGenerateIntroMarkers")] + ButlerTaskGenerateIntroMarkers, + [JsonProperty("ButlerTaskGenerateVoiceActivity")] + ButlerTaskGenerateVoiceActivity, + [JsonProperty("CleanOldBundles")] + CleanOldBundles, + [JsonProperty("CleanOldCacheFiles")] + CleanOldCacheFiles, + [JsonProperty("DeepMediaAnalysis")] + DeepMediaAnalysis, + [JsonProperty("GarbageCollectBlobs")] + GarbageCollectBlobs, + [JsonProperty("GarbageCollectLibraryMedia")] + GarbageCollectLibraryMedia, + [JsonProperty("GenerateBlurHashes")] + GenerateBlurHashes, + [JsonProperty("GenerateChapterThumbs")] + GenerateChapterThumbs, + [JsonProperty("GenerateMediaIndexFiles")] + GenerateMediaIndexFiles, + [JsonProperty("LoudnessAnalysis")] + LoudnessAnalysis, + [JsonProperty("MusicAnalysis")] + MusicAnalysis, + [JsonProperty("OptimizeDatabase")] + OptimizeDatabase, + [JsonProperty("RefreshEpgGuides")] + RefreshEpgGuides, + [JsonProperty("RefreshLibraries")] + RefreshLibraries, + [JsonProperty("RefreshLocalMedia")] + RefreshLocalMedia, + [JsonProperty("RefreshPeriodicMetadata")] + RefreshPeriodicMetadata, + [JsonProperty("UpgradeMediaAnalysis")] + UpgradeMediaAnalysis, + } + + public static class PathParamTaskExtension + { + public static string Value(this PathParamTask value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static PathParamTask ToEnum(this string value) + { + foreach(var field in typeof(PathParamTask).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 PathParamTask) + { + return (PathParamTask)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum PathParamTask"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PathParamTaskName.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PathParamTaskName.cs deleted file mode 100644 index 3673857..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PathParamTaskName.cs +++ /dev/null @@ -1,102 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// The name of the task to be started. - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class PathParamTaskName : IEquatable - { - public static readonly PathParamTaskName BackupDatabase = new PathParamTaskName("BackupDatabase"); - public static readonly PathParamTaskName BuildGracenoteCollections = new PathParamTaskName("BuildGracenoteCollections"); - public static readonly PathParamTaskName CheckForUpdates = new PathParamTaskName("CheckForUpdates"); - public static readonly PathParamTaskName CleanOldBundles = new PathParamTaskName("CleanOldBundles"); - public static readonly PathParamTaskName CleanOldCacheFiles = new PathParamTaskName("CleanOldCacheFiles"); - public static readonly PathParamTaskName DeepMediaAnalysis = new PathParamTaskName("DeepMediaAnalysis"); - public static readonly PathParamTaskName GenerateAutoTags = new PathParamTaskName("GenerateAutoTags"); - public static readonly PathParamTaskName GenerateChapterThumbs = new PathParamTaskName("GenerateChapterThumbs"); - public static readonly PathParamTaskName GenerateMediaIndexFiles = new PathParamTaskName("GenerateMediaIndexFiles"); - public static readonly PathParamTaskName OptimizeDatabase = new PathParamTaskName("OptimizeDatabase"); - public static readonly PathParamTaskName RefreshLibraries = new PathParamTaskName("RefreshLibraries"); - public static readonly PathParamTaskName RefreshLocalMedia = new PathParamTaskName("RefreshLocalMedia"); - public static readonly PathParamTaskName RefreshPeriodicMetadata = new PathParamTaskName("RefreshPeriodicMetadata"); - public static readonly PathParamTaskName UpgradeMediaAnalysis = new PathParamTaskName("UpgradeMediaAnalysis"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["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 - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private PathParamTaskName(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static PathParamTaskName Of(string value) - { - return _values.GetOrAdd(value, _ => new PathParamTaskName(value)); - } - - public static implicit operator PathParamTaskName(string value) => Of(value); - public static implicit operator string(PathParamTaskName pathparamtaskname) => pathparamtaskname.Value; - - public static PathParamTaskName[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as PathParamTaskName); - - public bool Equals(PathParamTaskName? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Pending.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Pending.cs deleted file mode 100644 index 494ee94..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Pending.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Indicates if the server is pending approval. - /// - public enum Pending - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PerformSearchRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PerformSearchRequest.cs deleted file mode 100644 index 09649bb..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PerformSearchRequest.cs +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.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; } = 3D; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PerformSearchResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PerformSearchResponse.cs deleted file mode 100644 index 98f7e10..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PerformSearchResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PerformVoiceSearchRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PerformVoiceSearchRequest.cs deleted file mode 100644 index cd5864b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PerformVoiceSearchRequest.cs +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.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; } = 3D; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PerformVoiceSearchResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PerformVoiceSearchResponse.cs deleted file mode 100644 index d278e24..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PerformVoiceSearchResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PlayQueueGenerator.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PlayQueueGenerator.cs new file mode 100644 index 0000000..bdbf4af --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/PlayQueueGenerator.cs @@ -0,0 +1,53 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class PlayQueueGenerator + { + + [JsonProperty("changedAt")] + public long? ChangedAt { get; set; } + + [JsonProperty("createdAt")] + public long? CreatedAt { get; set; } + + [JsonProperty("id")] + public long? Id { get; set; } + + [JsonProperty("playlistID")] + public long? PlaylistID { get; set; } + + /// + /// The type of playlist generator.
+ /// + /// + ///
+ /// - -1: A smart playlist generator
+ /// - 42: A optimized version generator
+ /// + ///
+ ///
+ [JsonProperty("type")] + public GetPlaylistGeneratorsType? Type { get; set; } + + [JsonProperty("updatedAt")] + public long? UpdatedAt { get; set; } + + /// + /// The URI indicating the search for this generator + /// + [JsonProperty("uri")] + public string? Uri { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Player.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Player.cs deleted file mode 100644 index ad26c5f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Player.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Player - { - - [JsonProperty("address")] - public string? Address { get; set; } - - [JsonProperty("machineIdentifier")] - public string? MachineIdentifier { get; set; } - - [JsonProperty("model")] - public string? Model { get; set; } - - [JsonProperty("platform")] - public string? Platform { get; set; } - - [JsonProperty("platformVersion")] - public string? PlatformVersion { get; set; } - - [JsonProperty("product")] - public string? Product { get; set; } - - [JsonProperty("profile")] - public string? Profile { get; set; } - - [JsonProperty("remotePublicAddress")] - public string? RemotePublicAddress { get; set; } - - [JsonProperty("state")] - public string? State { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("version")] - public string? Version { get; set; } - - [JsonProperty("local")] - public bool? Local { get; set; } - - [JsonProperty("relayed")] - public bool? Relayed { get; set; } - - [JsonProperty("secure")] - public bool? Secure { get; set; } - - [JsonProperty("userID")] - public int? UserID { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PlaylistType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PlaylistType.cs index 7aa60ff..9f82944 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PlaylistType.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/PlaylistType.cs @@ -12,69 +12,51 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; /// - /// limit to a type of playlist. + /// Limit to a type of playlist /// - [JsonConverter(typeof(OpenEnumConverter))] - public class PlaylistType : IEquatable + public enum PlaylistType { - public static readonly PlaylistType Audio = new PlaylistType("audio"); - public static readonly PlaylistType Video = new PlaylistType("video"); - public static readonly PlaylistType Photo = new PlaylistType("photo"); + [JsonProperty("audio")] + Audio, + [JsonProperty("video")] + Video, + [JsonProperty("photo")] + Photo, + } - private static readonly Dictionary _knownValues = - new Dictionary () + 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()) { - ["audio"] = Audio, - ["video"] = Video, - ["photo"] = Photo - }; + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); - private PlaylistType(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; + if (enumVal is PlaylistType) + { + return (PlaylistType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum PlaylistType"); } - - public string Value { get; } - - public static PlaylistType Of(string value) - { - return _values.GetOrAdd(value, _ => new PlaylistType(value)); - } - - public static implicit operator PlaylistType(string value) => Of(value); - public static implicit operator string(PlaylistType playlisttype) => playlisttype.Value; - - public static PlaylistType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as PlaylistType); - - public bool Equals(PlaylistType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PlexDevice.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PlexDevice.cs deleted file mode 100644 index 8dc85ed..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PlexDevice.cs +++ /dev/null @@ -1,96 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - - public class PlexDevice - { - - [JsonProperty("name")] - public string Name { get; set; } = default!; - - [JsonProperty("product")] - public string Product { get; set; } = default!; - - [JsonProperty("productVersion")] - public string ProductVersion { get; set; } = default!; - - [JsonProperty("platform", NullValueHandling = NullValueHandling.Include)] - public string? Platform { get; set; } - - [JsonProperty("platformVersion", NullValueHandling = NullValueHandling.Include)] - public string? PlatformVersion { get; set; } - - [JsonProperty("device", NullValueHandling = NullValueHandling.Include)] - public string? Device { get; set; } - - [JsonProperty("clientIdentifier")] - public string ClientIdentifier { get; set; } = default!; - - [JsonProperty("createdAt")] - public DateTime CreatedAt { get; set; } = default!; - - [JsonProperty("lastSeenAt")] - public DateTime LastSeenAt { get; set; } = default!; - - [JsonProperty("provides")] - public string Provides { get; set; } = default!; - - /// - /// ownerId is null when the device is owned by the token used to send the request - /// - [JsonProperty("ownerId", NullValueHandling = NullValueHandling.Include)] - public long? OwnerId { get; set; } - - [JsonProperty("sourceTitle", NullValueHandling = NullValueHandling.Include)] - public string? SourceTitle { get; set; } - - [JsonProperty("publicAddress")] - public string PublicAddress { get; set; } = default!; - - [JsonProperty("accessToken")] - public string AccessToken { get; set; } = default!; - - [JsonProperty("owned")] - public bool Owned { get; set; } = default!; - - [JsonProperty("home")] - public bool Home { get; set; } = default!; - - [JsonProperty("synced")] - public bool Synced { get; set; } = default!; - - [JsonProperty("relay")] - public bool Relay { get; set; } = default!; - - [JsonProperty("presence")] - public bool Presence { get; set; } = default!; - - [JsonProperty("httpsRequired")] - public bool HttpsRequired { get; set; } = default!; - - [JsonProperty("publicAddressMatches")] - public bool PublicAddressMatches { get; set; } = default!; - - [JsonProperty("dnsRebindingProtection")] - public bool DnsRebindingProtection { get; set; } = default!; - - [JsonProperty("natLoopbackSupported")] - public bool NatLoopbackSupported { get; set; } = default!; - - [JsonProperty("connections")] - public List Connections { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Policy.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Policy.cs new file mode 100644 index 0000000..5e03e14 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Policy.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class Policy + { + + [JsonProperty("scope")] + public GetPlaylistGeneratorScope? Scope { get; set; } + + /// + /// True if only unwatched items are optimized + /// + [JsonProperty("unwatched")] + public bool? Unwatched { get; set; } + + /// + /// If the scope is count, the number of items to optimize + /// + [JsonProperty("value")] + public long? Value { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaArtsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaArtsRequest.cs deleted file mode 100644 index 5f9c41e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaArtsRequest.cs +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class PostMediaArtsRequest - { - - /// - /// the id of the library item to return the posters of. - /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")] - public long RatingKey { get; set; } = default!; - - /// - /// The URL of the image, if uploading a remote image - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] - public string? Url { get; set; } - - /// - /// The contents of the image, if uploading a local file - /// - [SpeakeasyMetadata("request:mediaType=image/*")] - public byte[]? RequestBody { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaArtsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaArtsResponse.cs deleted file mode 100644 index 816462e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaArtsResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class PostMediaArtsResponse - { - - /// - /// 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaPosterRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaPosterRequest.cs deleted file mode 100644 index 0ff3270..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaPosterRequest.cs +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class PostMediaPosterRequest - { - - /// - /// the id of the library item to return the posters of. - /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ratingKey")] - public long RatingKey { get; set; } = default!; - - /// - /// The URL of the image, if uploading a remote image - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] - public string? Url { get; set; } - - /// - /// The contents of the image, if uploading a local file - /// - [SpeakeasyMetadata("request:mediaType=image/*")] - public byte[]? RequestBody { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaPosterResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaPosterResponse.cs deleted file mode 100644 index 64a0422..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostMediaPosterResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class PostMediaPosterResponse - { - - /// - /// 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationResponseStatus.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationResponseStatus.cs deleted file mode 100644 index f57c2ed..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationResponseStatus.cs +++ /dev/null @@ -1,78 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// String representation of subscriptionActive - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class PostUsersSignInDataAuthenticationResponseStatus : IEquatable - { - public static readonly PostUsersSignInDataAuthenticationResponseStatus Inactive = new PostUsersSignInDataAuthenticationResponseStatus("Inactive"); - public static readonly PostUsersSignInDataAuthenticationResponseStatus Active = new PostUsersSignInDataAuthenticationResponseStatus("Active"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["Inactive"] = Inactive, - ["Active"] = Active - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private PostUsersSignInDataAuthenticationResponseStatus(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static PostUsersSignInDataAuthenticationResponseStatus Of(string value) - { - return _values.GetOrAdd(value, _ => new PostUsersSignInDataAuthenticationResponseStatus(value)); - } - - public static implicit operator PostUsersSignInDataAuthenticationResponseStatus(string value) => Of(value); - public static implicit operator string(PostUsersSignInDataAuthenticationResponseStatus postuserssignindataauthenticationresponsestatus) => postuserssignindataauthenticationresponsestatus.Value; - - public static PostUsersSignInDataAuthenticationResponseStatus[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as PostUsersSignInDataAuthenticationResponseStatus); - - public bool Equals(PostUsersSignInDataAuthenticationResponseStatus? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationStatus.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationStatus.cs deleted file mode 100644 index 759c94b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationStatus.cs +++ /dev/null @@ -1,78 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// String representation of subscriptionActive - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class PostUsersSignInDataAuthenticationStatus : IEquatable - { - public static readonly PostUsersSignInDataAuthenticationStatus Inactive = new PostUsersSignInDataAuthenticationStatus("Inactive"); - public static readonly PostUsersSignInDataAuthenticationStatus Active = new PostUsersSignInDataAuthenticationStatus("Active"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["Inactive"] = Inactive, - ["Active"] = Active - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private PostUsersSignInDataAuthenticationStatus(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static PostUsersSignInDataAuthenticationStatus Of(string value) - { - return _values.GetOrAdd(value, _ => new PostUsersSignInDataAuthenticationStatus(value)); - } - - public static implicit operator PostUsersSignInDataAuthenticationStatus(string value) => Of(value); - public static implicit operator string(PostUsersSignInDataAuthenticationStatus postuserssignindataauthenticationstatus) => postuserssignindataauthenticationstatus.Value; - - public static PostUsersSignInDataAuthenticationStatus[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as PostUsersSignInDataAuthenticationStatus); - - public bool Equals(PostUsersSignInDataAuthenticationStatus? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationSubscription.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationSubscription.cs deleted file mode 100644 index c9c60d6..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAuthenticationSubscription.cs +++ /dev/null @@ -1,59 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class PostUsersSignInDataAuthenticationSubscription - { - - /// - /// List of features allowed on your Plex Pass subscription - /// - [JsonProperty("features")] - public List? Features { get; set; } - - /// - /// If the account's Plex Pass subscription is active - /// - [JsonProperty("active")] - public bool? Active { get; set; } - - /// - /// Date the account subscribed to Plex Pass - /// - [JsonProperty("subscribedAt")] - public string? SubscribedAt { get; set; } = null; - - /// - /// String representation of subscriptionActive - /// - [JsonProperty("status")] - public PostUsersSignInDataAuthenticationResponseStatus? Status { get; set; } - - /// - /// Payment service used for your Plex Pass subscription - /// - [JsonProperty("paymentService")] - public string? PaymentService { get; set; } = null; - - /// - /// Name of Plex Pass subscription plan - /// - [JsonProperty("plan")] - public string? Plan { get; set; } = null; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAutoSelectSubtitle.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAutoSelectSubtitle.cs deleted file mode 100644 index 1895510..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataAutoSelectSubtitle.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled) - /// - public enum PostUsersSignInDataAutoSelectSubtitle - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataDefaultSubtitleAccessibility.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataDefaultSubtitleAccessibility.cs deleted file mode 100644 index 03ecfac..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataDefaultSubtitleAccessibility.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles) - /// - public enum PostUsersSignInDataDefaultSubtitleAccessibility - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataDefaultSubtitleForced.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataDefaultSubtitleForced.cs deleted file mode 100644 index 0e552c3..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataDefaultSubtitleForced.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles) - /// - public enum PostUsersSignInDataDefaultSubtitleForced - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataMailingListStatus.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataMailingListStatus.cs deleted file mode 100644 index a9edd48..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataMailingListStatus.cs +++ /dev/null @@ -1,78 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Your current mailing list status (active or unsubscribed) - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class PostUsersSignInDataMailingListStatus : IEquatable - { - public static readonly PostUsersSignInDataMailingListStatus Active = new PostUsersSignInDataMailingListStatus("active"); - public static readonly PostUsersSignInDataMailingListStatus Unsubscribed = new PostUsersSignInDataMailingListStatus("unsubscribed"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["active"] = Active, - ["unsubscribed"] = Unsubscribed - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private PostUsersSignInDataMailingListStatus(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static PostUsersSignInDataMailingListStatus Of(string value) - { - return _values.GetOrAdd(value, _ => new PostUsersSignInDataMailingListStatus(value)); - } - - public static implicit operator PostUsersSignInDataMailingListStatus(string value) => Of(value); - public static implicit operator string(PostUsersSignInDataMailingListStatus postuserssignindatamailingliststatus) => postuserssignindatamailingliststatus.Value; - - public static PostUsersSignInDataMailingListStatus[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as PostUsersSignInDataMailingListStatus); - - public bool Equals(PostUsersSignInDataMailingListStatus? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataMediaReviewsVisibility.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataMediaReviewsVisibility.cs deleted file mode 100644 index e32a1f5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataMediaReviewsVisibility.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Whether or not the account has media reviews visibility enabled - /// - public enum PostUsersSignInDataMediaReviewsVisibility - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataRequest.cs deleted file mode 100644 index cd3402f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataRequest.cs +++ /dev/null @@ -1,54 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - - public class PostUsersSignInDataRequest - { - - /// - /// An opaque identifier unique to the client (UUID, serial number, or other unique device ID) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] - public string ClientID { get; set; } = default!; - - /// - /// The name of the client application. (Plex Web, Plex Media Server, etc.) - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] - public string? ClientName { get; set; } - - /// - /// A relatively friendly name for the client device - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] - public string? DeviceNickname { get; set; } - - /// - /// The version of the client application. - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] - public string? ClientVersion { get; set; } - - /// - /// The platform of the client application. - /// - [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] - public string? Platform { get; set; } - - /// - /// Login credentials - /// - [SpeakeasyMetadata("request:mediaType=application/x-www-form-urlencoded")] - public PostUsersSignInDataRequestBody? RequestBody { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataRequestBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataRequestBody.cs deleted file mode 100644 index 5532b21..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataRequestBody.cs +++ /dev/null @@ -1,32 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Login credentials - /// - public class PostUsersSignInDataRequestBody - { - - [SpeakeasyMetadata("form:name=login")] - public string Login { get; set; } = default!; - - [SpeakeasyMetadata("form:name=password")] - public string Password { get; set; } = default!; - - [SpeakeasyMetadata("form:name=rememberMe")] - public bool? RememberMe { get; set; } = false; - - [SpeakeasyMetadata("form:name=verificationCode")] - public string? VerificationCode { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataResponse.cs deleted file mode 100644 index 44c676f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataResponse.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - public class PostUsersSignInDataResponse - { - - /// - /// 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!; - - /// - /// Returns the user account data with a valid auth token - /// - public PostUsersSignInDataUserPlexAccount? UserPlexAccount { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataServices.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataServices.cs deleted file mode 100644 index 486200c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataServices.cs +++ /dev/null @@ -1,38 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class PostUsersSignInDataServices - { - - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - [JsonProperty("endpoint")] - public string Endpoint { get; set; } = default!; - - [JsonProperty("token", NullValueHandling = NullValueHandling.Include)] - public string? Token { get; set; } - - [JsonProperty("secret", NullValueHandling = NullValueHandling.Include)] - public string? Secret { get; set; } - - [JsonProperty("status")] - public PostUsersSignInDataStatus Status { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataState.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataState.cs deleted file mode 100644 index 082104e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataState.cs +++ /dev/null @@ -1,73 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - [JsonConverter(typeof(OpenEnumConverter))] - public class PostUsersSignInDataState : IEquatable - { - public static readonly PostUsersSignInDataState Ended = new PostUsersSignInDataState("ended"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["ended"] = Ended - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private PostUsersSignInDataState(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static PostUsersSignInDataState Of(string value) - { - return _values.GetOrAdd(value, _ => new PostUsersSignInDataState(value)); - } - - public static implicit operator PostUsersSignInDataState(string value) => Of(value); - public static implicit operator string(PostUsersSignInDataState postuserssignindatastate) => postuserssignindatastate.Value; - - public static PostUsersSignInDataState[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as PostUsersSignInDataState); - - public bool Equals(PostUsersSignInDataState? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataStatus.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataStatus.cs deleted file mode 100644 index b5b6700..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataStatus.cs +++ /dev/null @@ -1,75 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - [JsonConverter(typeof(OpenEnumConverter))] - public class PostUsersSignInDataStatus : IEquatable - { - public static readonly PostUsersSignInDataStatus Online = new PostUsersSignInDataStatus("online"); - public static readonly PostUsersSignInDataStatus Offline = new PostUsersSignInDataStatus("offline"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["online"] = Online, - ["offline"] = Offline - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private PostUsersSignInDataStatus(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static PostUsersSignInDataStatus Of(string value) - { - return _values.GetOrAdd(value, _ => new PostUsersSignInDataStatus(value)); - } - - public static implicit operator PostUsersSignInDataStatus(string value) => Of(value); - public static implicit operator string(PostUsersSignInDataStatus postuserssignindatastatus) => postuserssignindatastatus.Value; - - public static PostUsersSignInDataStatus[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as PostUsersSignInDataStatus); - - public bool Equals(PostUsersSignInDataStatus? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataSubscription.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataSubscription.cs deleted file mode 100644 index 04e0d9d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataSubscription.cs +++ /dev/null @@ -1,62 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// If the account’s Plex Pass subscription is active - /// - public class PostUsersSignInDataSubscription - { - - /// - /// List of features allowed on your Plex Pass subscription - /// - [JsonProperty("features")] - public List? Features { get; set; } - - /// - /// If the account's Plex Pass subscription is active - /// - [JsonProperty("active")] - public bool? Active { get; set; } - - /// - /// Date the account subscribed to Plex Pass - /// - [JsonProperty("subscribedAt")] - public string? SubscribedAt { get; set; } = null; - - /// - /// String representation of subscriptionActive - /// - [JsonProperty("status")] - public PostUsersSignInDataAuthenticationStatus? Status { get; set; } - - /// - /// Payment service used for your Plex Pass subscription - /// - [JsonProperty("paymentService")] - public string? PaymentService { get; set; } = null; - - /// - /// Name of Plex Pass subscription plan - /// - [JsonProperty("plan")] - public string? Plan { get; set; } = null; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataUserPlexAccount.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataUserPlexAccount.cs deleted file mode 100644 index 3fba9f8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataUserPlexAccount.cs +++ /dev/null @@ -1,261 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Returns the user account data with a valid auth token - /// - public class PostUsersSignInDataUserPlexAccount - { - - /// - /// Unknown - /// - [JsonProperty("adsConsent", NullValueHandling = NullValueHandling.Include)] - public bool? AdsConsent { get; set; } - - [JsonProperty("adsConsentReminderAt", NullValueHandling = NullValueHandling.Include)] - public long? AdsConsentReminderAt { get; set; } - - [JsonProperty("adsConsentSetAt", NullValueHandling = NullValueHandling.Include)] - public long? AdsConsentSetAt { get; set; } - - /// - /// Unknown - /// - [JsonProperty("anonymous")] - public bool? Anonymous { get; set; } = false; - - /// - /// The account token - /// - [JsonProperty("authToken")] - public string AuthToken { get; set; } = default!; - - /// - /// If the two-factor authentication backup codes have been created - /// - [JsonProperty("backupCodesCreated")] - public bool? BackupCodesCreated { get; set; } = false; - - /// - /// If the account has been confirmed - /// - [JsonProperty("confirmed")] - public bool? Confirmed { get; set; } = false; - - /// - /// The account country - /// - [JsonProperty("country")] - public string Country { get; set; } = default!; - - /// - /// The account email address - /// - [JsonProperty("email")] - public string Email { get; set; } = default!; - - /// - /// If login with email only is enabled - /// - [JsonProperty("emailOnlyAuth")] - public bool? EmailOnlyAuth { get; set; } = false; - - /// - /// If experimental features are enabled - /// - [JsonProperty("experimentalFeatures")] - public bool? ExperimentalFeatures { get; set; } = false; - - /// - /// Your account full name - /// - [JsonProperty("friendlyName")] - public string FriendlyName { get; set; } = default!; - - /// - /// List of devices your allowed to use with this account - /// - [JsonProperty("entitlements")] - public List Entitlements { get; set; } = default!; - - /// - /// If the account is a Plex Home guest user - /// - [JsonProperty("guest")] - public bool? Guest { get; set; } = false; - - /// - /// If the account has a password - /// - [JsonProperty("hasPassword")] - public bool? HasPassword { get; set; } = true; - - /// - /// If the account is a Plex Home user - /// - [JsonProperty("home")] - public bool? Home { get; set; } = false; - - /// - /// If the account is the Plex Home admin - /// - [JsonProperty("homeAdmin")] - public bool? HomeAdmin { get; set; } = false; - - /// - /// The number of accounts in the Plex Home - /// - [JsonProperty("homeSize")] - public int HomeSize { get; set; } = default!; - - /// - /// The Plex account ID - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// Unix epoch datetime in seconds - /// - [JsonProperty("joinedAt")] - public long JoinedAt { get; set; } = default!; - - /// - /// The account locale - /// - [JsonProperty("locale", NullValueHandling = NullValueHandling.Include)] - public string? Locale { get; set; } - - /// - /// If you are subscribed to the Plex newsletter - /// - [JsonProperty("mailingListActive")] - public bool? MailingListActive { get; set; } = false; - - /// - /// Your current mailing list status (active or unsubscribed) - /// - [JsonProperty("mailingListStatus")] - public PostUsersSignInDataMailingListStatus MailingListStatus { get; set; } = default!; - - /// - /// The maximum number of accounts allowed in the Plex Home - /// - [JsonProperty("maxHomeSize")] - public int MaxHomeSize { get; set; } = default!; - - /// - /// [Might be removed] The hashed Plex Home PIN - /// - [Obsolete("This field will be removed in a future release, please migrate away from it as soon as possible")] - [JsonProperty("pin")] - public string? Pin { get; set; } - - [JsonProperty("profile")] - public PostUsersSignInDataUserProfile Profile { get; set; } = default!; - - /// - /// If the account has a Plex Home PIN enabled - /// - [JsonProperty("protected")] - public bool? Protected { get; set; } = false; - - /// - /// Unix epoch datetime in seconds - /// - [JsonProperty("rememberExpiresAt")] - public long RememberExpiresAt { get; set; } = default!; - - /// - /// If the account is a Plex Home managed user - /// - [JsonProperty("restricted")] - public bool? Restricted { get; set; } = false; - - /// - /// [Might be removed] List of account roles. Plexpass membership listed here - /// - [JsonProperty("roles")] - public List? Roles { get; set; } - - /// - /// Unknown - /// - [JsonProperty("scrobbleTypes")] - public string ScrobbleTypes { get; set; } = default!; - - [JsonProperty("services")] - public List Services { get; set; } = default!; - - /// - /// If the account’s Plex Pass subscription is active - /// - [JsonProperty("subscription")] - public PostUsersSignInDataSubscription Subscription { get; set; } = default!; - - /// - /// Description of the Plex Pass subscription - /// - [JsonProperty("subscriptionDescription", NullValueHandling = NullValueHandling.Include)] - public string? SubscriptionDescription { get; set; } - - [JsonProperty("subscriptions")] - public List? Subscriptions { get; set; } - - /// - /// URL of the account thumbnail - /// - [JsonProperty("thumb")] - public string Thumb { get; set; } = default!; - - /// - /// The title of the account (username or friendly name) - /// - [JsonProperty("title")] - public string Title { get; set; } = default!; - - /// - /// If two-factor authentication is enabled - /// - [JsonProperty("twoFactorEnabled")] - public bool? TwoFactorEnabled { get; set; } = false; - - /// - /// The account username - /// - [JsonProperty("username")] - public string Username { get; set; } = default!; - - /// - /// The account UUID - /// - [JsonProperty("uuid")] - public string Uuid { get; set; } = default!; - - [JsonProperty("attributionPartner", NullValueHandling = NullValueHandling.Include)] - public string? AttributionPartner { get; set; } - - [JsonProperty("pastSubscriptions")] - public List PastSubscriptions { get; set; } = default!; - - [JsonProperty("trials")] - public List Trials { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataUserProfile.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataUserProfile.cs deleted file mode 100644 index f4ff31c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataUserProfile.cs +++ /dev/null @@ -1,52 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class PostUsersSignInDataUserProfile - { - - /// - /// If the account has automatically select audio and subtitle tracks enabled - /// - [JsonProperty("autoSelectAudio")] - public bool? AutoSelectAudio { get; set; } = true; - - /// - /// The preferred audio language for the account - /// - [JsonProperty("defaultAudioLanguage", NullValueHandling = NullValueHandling.Include)] - public string? DefaultAudioLanguage { get; set; } - - /// - /// The preferred subtitle language for the account - /// - [JsonProperty("defaultSubtitleLanguage", NullValueHandling = NullValueHandling.Include)] - public string? DefaultSubtitleLanguage { get; set; } - - [JsonProperty("autoSelectSubtitle")] - public PostUsersSignInDataAutoSelectSubtitle? AutoSelectSubtitle { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.PostUsersSignInDataAutoSelectSubtitle.Disable; - - [JsonProperty("defaultSubtitleAccessibility")] - public PostUsersSignInDataDefaultSubtitleAccessibility? DefaultSubtitleAccessibility { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.PostUsersSignInDataDefaultSubtitleAccessibility.Disable; - - [JsonProperty("defaultSubtitleForced")] - public PostUsersSignInDataDefaultSubtitleForced? DefaultSubtitleForced { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.PostUsersSignInDataDefaultSubtitleForced.Disable; - - [JsonProperty("watchedIndicator")] - public PostUsersSignInDataWatchedIndicator? WatchedIndicator { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.PostUsersSignInDataWatchedIndicator.Disable; - - [JsonProperty("mediaReviewsVisibility")] - public PostUsersSignInDataMediaReviewsVisibility? MediaReviewsVisibility { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.PostUsersSignInDataMediaReviewsVisibility.Disable; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataWatchedIndicator.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataWatchedIndicator.cs deleted file mode 100644 index 279de5e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/PostUsersSignInDataWatchedIndicator.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Whether or not media watched indicators are enabled (little orange dot on media) - /// - public enum PostUsersSignInDataWatchedIndicator - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Prefs.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Prefs.cs new file mode 100644 index 0000000..f286b40 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Prefs.cs @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + public class Prefs + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ProcessSubscriptionsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ProcessSubscriptionsResponse.cs new file mode 100644 index 0000000..29e84de --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ProcessSubscriptionsResponse.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ProcessSubscriptionsResponse + { + + /// + /// 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!; + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ProcessingState.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ProcessingState.cs new file mode 100644 index 0000000..497f28f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ProcessingState.cs @@ -0,0 +1,68 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The state of processing if this generator is part of an optimizer playlist + /// + public enum ProcessingState + { + [JsonProperty("processed")] + Processed, + [JsonProperty("completed")] + Completed, + [JsonProperty("tombstoned")] + Tombstoned, + [JsonProperty("disabled")] + Disabled, + [JsonProperty("error")] + Error, + [JsonProperty("pending")] + Pending, + } + + public static class ProcessingStateExtension + { + public static string Value(this ProcessingState value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static ProcessingState ToEnum(this string value) + { + foreach(var field in typeof(ProcessingState).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 ProcessingState) + { + return (ProcessingState)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum ProcessingState"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ProcessingStateContext.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ProcessingStateContext.cs new file mode 100644 index 0000000..bb1d1e2 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ProcessingStateContext.cs @@ -0,0 +1,80 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The error which could have occurred (or `good`) + /// + public enum ProcessingStateContext + { + [JsonProperty("good")] + Good, + [JsonProperty("sourceFileUnavailable")] + SourceFileUnavailable, + [JsonProperty("sourceFileMetadataError")] + SourceFileMetadataError, + [JsonProperty("clientProfileError")] + ClientProfileError, + [JsonProperty("ioError")] + IoError, + [JsonProperty("transcoderError")] + TranscoderError, + [JsonProperty("unknownError")] + UnknownError, + [JsonProperty("mediaAnalysisError")] + MediaAnalysisError, + [JsonProperty("downloadFailed")] + DownloadFailed, + [JsonProperty("accessDenied")] + AccessDenied, + [JsonProperty("cannotTranscode")] + CannotTranscode, + [JsonProperty("codecInstallError")] + CodecInstallError, + } + + public static class ProcessingStateContextExtension + { + public static string Value(this ProcessingStateContext value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static ProcessingStateContext ToEnum(this string value) + { + foreach(var field in typeof(ProcessingStateContext).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 ProcessingStateContext) + { + return (ProcessingStateContext)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum ProcessingStateContext"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Producer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Producer.cs deleted file mode 100644 index 56f553f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Producer.cs +++ /dev/null @@ -1,52 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Producer - { - - /// - /// Unique identifier for the producer. - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The filter string used to query this producer. - /// - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - /// - /// The name of the producer - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// A 24-character hexadecimal unique key associated with the producer's tag, used for internal identification.
- /// - /// - /// - /// - ///
- [JsonProperty("tagKey")] - public string TagKey { get; set; } = default!; - - /// - /// The absolute URL of the thumbnail image for the producer. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Protected.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Protected.cs deleted file mode 100644 index a8e3e7a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Protected.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Indicates whether the account is protected. - /// - public enum Protected - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Protocol.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Protocol.cs index 5156355..94e1d2f 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Protocol.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Protocol.cs @@ -14,14 +14,20 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using System; /// - /// The protocol used for the connection (http, https, etc) + /// Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
+ /// + /// + /// + /// ///
public enum Protocol { [JsonProperty("http")] Http, - [JsonProperty("https")] - Https, + [JsonProperty("hls")] + Hls, + [JsonProperty("dash")] + Dash, } public static class ProtocolExtension diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Provider.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Provider.cs deleted file mode 100644 index ad7773b..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Provider.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamArgs.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamArgs.cs new file mode 100644 index 0000000..9cc5933 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamArgs.cs @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + public class QueryParamArgs + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamAttributes.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamAttributes.cs new file mode 100644 index 0000000..d238c09 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamAttributes.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// The attributes to assign to this marker + /// + public class QueryParamAttributes + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamFilter.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamFilter.cs deleted file mode 100644 index 73d41f2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamFilter.cs +++ /dev/null @@ -1,25 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Filters content by field and direction/equality
- /// - /// - /// (Unknown if viewedAt is the only supported column)
- /// - ///
- ///
- public class QueryParamFilter - { - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamForce.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamForce.cs deleted file mode 100644 index debe76d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamForce.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// 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 QueryParamForce - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeCollections.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeCollections.cs deleted file mode 100644 index 3589e52..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeCollections.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum QueryParamIncludeCollections - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeExternalMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeExternalMedia.cs deleted file mode 100644 index 152e744..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeExternalMedia.cs +++ /dev/null @@ -1,20 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public enum QueryParamIncludeExternalMedia - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeGuids.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeGuids.cs deleted file mode 100644 index 4f79bba..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeGuids.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Adds the Guid object to the response
- /// - /// - /// - /// - ///
- public enum QueryParamIncludeGuids - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeMeta.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeMeta.cs deleted file mode 100644 index 7d168ca..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamIncludeMeta.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Adds the Meta object to the response
- /// - /// - /// - /// - ///
- public enum QueryParamIncludeMeta - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamLocation.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamLocation.cs new file mode 100644 index 0000000..7b760dd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamLocation.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// Network type of the client, can be used to help determine target bitrate. + /// + public enum QueryParamLocation + { + [JsonProperty("lan")] + Lan, + [JsonProperty("wan")] + Wan, + [JsonProperty("cellular")] + Cellular, + } + + public static class QueryParamLocationExtension + { + public static string Value(this QueryParamLocation value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static QueryParamLocation ToEnum(this string value) + { + foreach(var field in typeof(QueryParamLocation).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 QueryParamLocation) + { + return (QueryParamLocation)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum QueryParamLocation"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamOnlyTransient.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamOnlyTransient.cs deleted file mode 100644 index 7381dd1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamOnlyTransient.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// 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/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamPrefs.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamPrefs.cs new file mode 100644 index 0000000..3f7d3f7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamPrefs.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// The preferences for this section + /// + public class QueryParamPrefs + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamProtocol.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamProtocol.cs new file mode 100644 index 0000000..906e3f8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamProtocol.cs @@ -0,0 +1,66 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
+ /// + /// + /// + /// + ///
+ public enum QueryParamProtocol + { + [JsonProperty("http")] + Http, + [JsonProperty("hls")] + Hls, + [JsonProperty("dash")] + Dash, + } + + public static class QueryParamProtocolExtension + { + public static string Value(this QueryParamProtocol value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static QueryParamProtocol ToEnum(this string value) + { + foreach(var field in typeof(QueryParamProtocol).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 QueryParamProtocol) + { + return (QueryParamProtocol)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum QueryParamProtocol"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamSmart.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamSmart.cs deleted file mode 100644 index 5ea201a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamSmart.cs +++ /dev/null @@ -1,77 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// type of playlists to return (default is all). - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class QueryParamSmart : IEquatable - { - public static readonly QueryParamSmart Zero = new QueryParamSmart(0); - public static readonly QueryParamSmart One = new QueryParamSmart(1); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - [0] = Zero, - [1] = One - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private QueryParamSmart(long value) - { - Value = value; - } - - public long Value { get; } - - public static QueryParamSmart Of(long value) - { - return _values.GetOrAdd(value, _ => new QueryParamSmart(value)); - } - - public static implicit operator QueryParamSmart(long value) => Of(value); - public static implicit operator long(QueryParamSmart queryparamsmart) => queryparamsmart.Value; - - public static QueryParamSmart[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as QueryParamSmart); - - public bool Equals(QueryParamSmart? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamSubtitles.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamSubtitles.cs new file mode 100644 index 0000000..1fccb16 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamSubtitles.cs @@ -0,0 +1,74 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
+ /// + /// + /// + /// + ///
+ public enum QueryParamSubtitles + { + [JsonProperty("auto")] + Auto, + [JsonProperty("burn")] + Burn, + [JsonProperty("none")] + None, + [JsonProperty("sidecar")] + Sidecar, + [JsonProperty("embedded")] + Embedded, + [JsonProperty("segmented")] + Segmented, + [JsonProperty("unknown")] + Unknown, + } + + public static class QueryParamSubtitlesExtension + { + public static string Value(this QueryParamSubtitles value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static QueryParamSubtitles ToEnum(this string value) + { + foreach(var field in typeof(QueryParamSubtitles).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 QueryParamSubtitles) + { + return (QueryParamSubtitles)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum QueryParamSubtitles"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamType.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamType.cs index 8105c45..e6d6d4b 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamType.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamType.cs @@ -12,89 +12,47 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
+ /// The value `delegation` is the only supported `type` parameter. ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class QueryParamType : IEquatable + public enum QueryParamType { - public static readonly QueryParamType Movie = new QueryParamType(1); - public static readonly QueryParamType TvShow = new QueryParamType(2); - public static readonly QueryParamType Season = new QueryParamType(3); - public static readonly QueryParamType Episode = new QueryParamType(4); - public static readonly QueryParamType Artist = new QueryParamType(5); - public static readonly QueryParamType Album = new QueryParamType(6); - public static readonly QueryParamType Track = new QueryParamType(7); - public static readonly QueryParamType PhotoAlbum = new QueryParamType(8); - public static readonly QueryParamType Photo = new QueryParamType(9); + [JsonProperty("delegation")] + Delegation, + } - private static readonly Dictionary _knownValues = - new Dictionary () + 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()) { - [1] = Movie, - [2] = TvShow, - [3] = Season, - [4] = Episode, - [5] = Artist, - [6] = Album, - [7] = Track, - [8] = PhotoAlbum, - [9] = Photo - }; + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); - private QueryParamType(long value) - { - Value = value; + if (enumVal is QueryParamType) + { + return (QueryParamType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum QueryParamType"); } - - public long Value { get; } - - public static QueryParamType Of(long value) - { - return _values.GetOrAdd(value, _ => new QueryParamType(value)); - } - - public static implicit operator QueryParamType(long value) => Of(value); - public static implicit operator long(QueryParamType queryparamtype) => queryparamtype.Value; - - public static QueryParamType[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as QueryParamType); - - public bool Equals(QueryParamType? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Rating.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Rating.cs deleted file mode 100644 index 9070bcd..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Rating.cs +++ /dev/null @@ -1,33 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The type of rating, for example 'audience' or 'critic'. - /// - public class Rating - { - - /// - /// The URL for the rating image, for example from IMDb. - /// - [JsonProperty("image")] - public string Image { get; set; } = default!; - - [JsonProperty("value")] - public float Value { get; set; } = default!; - - [JsonProperty("type")] - public string Type { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Ratings.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Ratings.cs deleted file mode 100644 index a6159f5..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Ratings.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Ratings - { - - /// - /// The image or reference for the rating. - /// - [JsonProperty("image")] - public string Image { get; set; } = default!; - - /// - /// The rating value. - /// - [JsonProperty("value")] - public float Value { get; set; } = default!; - - /// - /// The type of rating (e.g., audience, critic). - /// - [JsonProperty("type")] - public string Type { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RecommendationsVisibility.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RecommendationsVisibility.cs new file mode 100644 index 0000000..be47cea --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RecommendationsVisibility.cs @@ -0,0 +1,72 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The visibility of this hub in recommendations:
+ /// + /// + /// - all: Visible to all users
+ /// - none: Visible to no users
+ /// - admin: Visible to only admin users
+ /// - shared: Visible to shared users
+ /// + ///
+ ///
+ public enum RecommendationsVisibility + { + [JsonProperty("all")] + All, + [JsonProperty("none")] + None, + [JsonProperty("admin")] + Admin, + [JsonProperty("shared")] + Shared, + } + + public static class RecommendationsVisibilityExtension + { + public static string Value(this RecommendationsVisibility value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static RecommendationsVisibility ToEnum(this string value) + { + foreach(var field in typeof(RecommendationsVisibility).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 RecommendationsVisibility) + { + return (RecommendationsVisibility)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum RecommendationsVisibility"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshItemsMetadataRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshItemsMetadataRequest.cs new file mode 100644 index 0000000..6500324 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshItemsMetadataRequest.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class RefreshItemsMetadataRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=agent")] + public string? Agent { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=markUpdated")] + public BoolInt? MarkUpdated { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshItemsMetadataResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshItemsMetadataResponse.cs new file mode 100644 index 0000000..92be968 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshItemsMetadataResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class RefreshItemsMetadataResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshPlaylistRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshPlaylistRequest.cs new file mode 100644 index 0000000..602f483 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshPlaylistRequest.cs @@ -0,0 +1,109 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class RefreshPlaylistRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistId")] + public long PlaylistId { get; set; } = default!; + + /// + /// The generator item ID to act on + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=generatorId")] + public long GeneratorId { get; set; } = default!; + + /// + /// The metadata item ID to act on + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=metadataId")] + public long MetadataId { get; set; } = default!; + + /// + /// The action to perform for this item on this optimizer queue + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=action")] + public Action Action { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshPlaylistResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshPlaylistResponse.cs new file mode 100644 index 0000000..97ad32d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshPlaylistResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class RefreshPlaylistResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshProvidersResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshProvidersResponse.cs new file mode 100644 index 0000000..4a271f8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshProvidersResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class RefreshProvidersResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionRequest.cs new file mode 100644 index 0000000..29e01b4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class RefreshSectionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// Whether the update of metadata and items should be performed even if modification dates indicate the items have not change + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")] + public BoolInt? Force { get; set; } + + /// + /// Restrict refresh to the specified path + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=path")] + public string? Path { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionResponse.cs new file mode 100644 index 0000000..d558711 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class RefreshSectionResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionsMetadataRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionsMetadataRequest.cs new file mode 100644 index 0000000..c10cf07 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionsMetadataRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class RefreshSectionsMetadataRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Force refresh of metadata + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")] + public bool? Force { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionsMetadataResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionsMetadataResponse.cs new file mode 100644 index 0000000..51091fa --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RefreshSectionsMetadataResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class RefreshSectionsMetadataResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Release.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Release.cs index cc8bd3f..bd655b7 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Release.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Release.cs @@ -9,28 +9,61 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; public class Release { - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("version")] - public string? Version { get; set; } - + /// + /// A list of what has been added in this version + /// [JsonProperty("added")] public string? Added { get; set; } - [JsonProperty("fixed")] - public string? Fixed { get; set; } - + /// + /// The URL of where this update is available + /// [JsonProperty("downloadURL")] public string? DownloadURL { get; set; } + /// + /// A list of what has been fixed in this version + /// + [JsonProperty("fixed")] + public string? Fixed { get; set; } + + /// + /// The URL key of the update + /// + [JsonProperty("key")] + public string? Key { get; set; } + + /// + /// The status of this update.
+ /// + /// + ///
+ /// - available - This release is available
+ /// - downloading - This release is downloading
+ /// - downloaded - This release has been downloaded
+ /// - installing - This release is installing
+ /// - tonight - This release will be installed tonight
+ /// - skipped - This release has been skipped
+ /// - error - This release has an error
+ /// - notify - This release is only notifying it is available (typically because it cannot be installed on this setup)
+ /// - done - This release is complete
+ /// + ///
+ ///
[JsonProperty("state")] - public string? State { get; set; } + public GetUpdatesStatusState? State { get; set; } + + /// + /// The version available + /// + [JsonProperty("version")] + public string? Version { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ReloadGuideRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ReloadGuideRequest.cs new file mode 100644 index 0000000..676f429 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ReloadGuideRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ReloadGuideRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the DVR. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=dvrId")] + public long DvrId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ReloadGuideResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ReloadGuideResponse.cs new file mode 100644 index 0000000..d982df9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ReloadGuideResponse.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ReloadGuideResponse + { + + /// + /// 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!; + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRDVR.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRDVR.cs new file mode 100644 index 0000000..5fc8d53 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRDVR.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class RemoveDeviceFromDVRDVR + { + + [JsonProperty("Device")] + public List? Device { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("language")] + public string? Language { get; set; } + + [JsonProperty("lineup")] + public string? Lineup { get; set; } + + [JsonProperty("uuid")] + public string? Uuid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRDVRsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRDVRsMediaContainer.cs new file mode 100644 index 0000000..cb90fe3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRDVRsMediaContainer.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class RemoveDeviceFromDVRDVRsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + /// + /// A status indicator. If present and non-zero, indicates an error + /// + [JsonProperty("status")] + public long? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRMediaContainer.cs new file mode 100644 index 0000000..c74f5ff --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRMediaContainer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class RemoveDeviceFromDVRMediaContainer + { + + [JsonProperty("MediaContainer")] + public RemoveDeviceFromDVRDVRsMediaContainer? MediaContainer { get; set; } + + [JsonProperty("DVR")] + public List? Dvr { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRRequest.cs new file mode 100644 index 0000000..05893cd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class RemoveDeviceFromDVRRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the DVR. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=dvrId")] + public long DvrId { get; set; } = default!; + + /// + /// The ID of the device to add. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=deviceId")] + public long DeviceId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRResponse.cs new file mode 100644 index 0000000..99bd614 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class RemoveDeviceFromDVRResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public RemoveDeviceFromDVRResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRResponseBody.cs new file mode 100644 index 0000000..bebc286 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceFromDVRResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class RemoveDeviceFromDVRResponseBody + { + + [JsonProperty("MediaContainer")] + public RemoveDeviceFromDVRMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceMediaContainer.cs new file mode 100644 index 0000000..499ff5e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceMediaContainer.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class RemoveDeviceMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("message")] + public string? Message { get; set; } + + [JsonProperty("status")] + public long? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceRequest.cs new file mode 100644 index 0000000..df171fe --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class RemoveDeviceRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the device. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=deviceId")] + public long DeviceId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceResponse.cs new file mode 100644 index 0000000..e2c1046 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class RemoveDeviceResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public RemoveDeviceResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceResponseBody.cs new file mode 100644 index 0000000..34813e3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDeviceResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class RemoveDeviceResponseBody + { + + [JsonProperty("MediaContainer")] + public RemoveDeviceMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDownloadQueueItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDownloadQueueItemsRequest.cs new file mode 100644 index 0000000..5fb7086 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDownloadQueueItemsRequest.cs @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class RemoveDownloadQueueItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The queue id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=queueId")] + public long QueueId { get; set; } = default!; + + /// + /// The item id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=itemId")] + public List ItemId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDownloadQueueItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDownloadQueueItemsResponse.cs new file mode 100644 index 0000000..c5f9b8d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RemoveDownloadQueueItemsResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class RemoveDownloadQueueItemsResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ReorderSubscriptionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ReorderSubscriptionRequest.cs new file mode 100644 index 0000000..d5040bc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ReorderSubscriptionRequest.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ReorderSubscriptionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriptionId")] + public long SubscriptionId { get; set; } = default!; + + /// + /// The subscription to move this sub after. If missing will insert at the beginning of the list + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=after")] + public long? After { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ReorderSubscriptionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ReorderSubscriptionResponse.cs new file mode 100644 index 0000000..4e5736e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ReorderSubscriptionResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ReorderSubscriptionResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithSubscription? MediaContainerWithSubscription { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ReportRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ReportRequest.cs new file mode 100644 index 0000000..c57c635 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ReportRequest.cs @@ -0,0 +1,175 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ReportRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The details key for the item. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=key")] + public string? Key { get; set; } + + /// + /// The rating key attribute for the item. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=ratingKey")] + public string? RatingKey { get; set; } + + /// + /// The current state of the media. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=state")] + public State? State { get; set; } + + /// + /// If playing media from a play queue, the play queue's ID. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=playQueueItemID")] + public string? PlayQueueItemID { get; set; } + + /// + /// The current time offset of playback in ms. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=time")] + public long? Time { get; set; } + + /// + /// The total duration of the item in ms. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=duration")] + public long? Duration { get; set; } + + /// + /// When state is `stopped`, a flag indicating whether or not the client is going to continue playing anothe item. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=continuing")] + public BoolInt? Continuing { get; set; } + + /// + /// Used when a sync client comes online and is syncing media timelines, holds the time at which the playback state was last updated. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=updated")] + public long? Updated { get; set; } + + /// + /// Also used by sync clients, used to indicate that a timeline is being synced from being offline, as opposed to being "live". + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=offline")] + public BoolInt? Offline { get; set; } + + /// + /// Time in seconds till first frame is displayed. Sent only on the first playing timeline request. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=timeToFirstFrame")] + public long? TimeToFirstFrame { get; set; } + + /// + /// Time in seconds spent buffering since last request. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=timeStalled")] + public long? TimeStalled { get; set; } + + /// + /// Bandwidth in kbps as estimated by the client. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=bandwidth")] + public long? Bandwidth { get; set; } + + /// + /// Amount of time in seconds buffered by client. Omit if computed by `bufferedSize` below. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=bufferedTime")] + public long? BufferedTime { get; set; } + + /// + /// Size in kilobytes of data buffered by client. Omit if computed by `bufferedTime` above + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=bufferedSize")] + public long? BufferedSize { get; set; } + + /// + /// Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Session-Identifier")] + public string? XPlexSessionIdentifier { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ReportResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ReportResponse.cs new file mode 100644 index 0000000..2649677 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ReportResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ReportResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public ReportResponseBody? Object { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ReportResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ReportResponseBody.cs new file mode 100644 index 0000000..c022bbb --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ReportResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class ReportResponseBody + { + + [JsonProperty("MediaContainer")] + public Models.Requests.MediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ResetPlayQueueRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ResetPlayQueueRequest.cs new file mode 100644 index 0000000..cdbaf17 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ResetPlayQueueRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ResetPlayQueueRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the play queue. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playQueueId")] + public long PlayQueueId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ResetPlayQueueResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ResetPlayQueueResponse.cs new file mode 100644 index 0000000..fa46c50 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ResetPlayQueueResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ResetPlayQueueResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ResetSectionDefaultsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ResetSectionDefaultsRequest.cs new file mode 100644 index 0000000..2f92d7a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ResetSectionDefaultsRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ResetSectionDefaultsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The section ID for the hubs to reorder + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ResetSectionDefaultsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ResetSectionDefaultsResponse.cs new file mode 100644 index 0000000..ccaae41 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ResetSectionDefaultsResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ResetSectionDefaultsResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ResponseBody.cs deleted file mode 100644 index 149a5b1..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/ResponseBody.cs +++ /dev/null @@ -1,39 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class ResponseBody - { - - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - [JsonProperty("baseURL")] - public string BaseURL { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("linkURL")] - public string LinkURL { get; set; } = default!; - - [JsonProperty("provides")] - public string Provides { get; set; } = default!; - - /// - /// The plex authtoken used to identify with - /// - [JsonProperty("token")] - public string Token { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RestartProcessingDownloadQueueItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RestartProcessingDownloadQueueItemsRequest.cs new file mode 100644 index 0000000..c4b36c5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RestartProcessingDownloadQueueItemsRequest.cs @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class RestartProcessingDownloadQueueItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The queue id + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=queueId")] + public long QueueId { get; set; } = default!; + + /// + /// The item ids + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=itemId")] + public List ItemId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/RestartProcessingDownloadQueueItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/RestartProcessingDownloadQueueItemsResponse.cs new file mode 100644 index 0000000..38765d6 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/RestartProcessingDownloadQueueItemsResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class RestartProcessingDownloadQueueItemsResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Restricted.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Restricted.cs deleted file mode 100644 index 5f2e5dd..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Restricted.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Indicates if the user has restricted access. - /// - public enum Restricted - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Role.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Role.cs deleted file mode 100644 index 25ff4ab..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Role.cs +++ /dev/null @@ -1,64 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Role - { - - /// - /// The unique identifier for the role.
- /// - /// - /// NOTE: This is different for each Plex server and is not globally unique.
- /// - ///
- ///
- [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. - /// - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - /// - /// The display tag for the actor (typically the actor's name). - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification.
- /// - /// - /// NOTE: This is globally unique across all Plex Servers.
- /// - ///
- ///
- [JsonProperty("tagKey")] - public string TagKey { get; set; } = default!; - - /// - /// The role played by the actor in the media item. - /// - [JsonProperty("role")] - public string? RoleValue { get; set; } - - /// - /// The absolute URL of the thumbnail image for the actor. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ScanRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ScanRequest.cs new file mode 100644 index 0000000..a1f1748 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ScanRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ScanRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the device. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=deviceId")] + public long DeviceId { get; set; } = default!; + + /// + /// A valid source for the scan + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=source")] + public string? Source { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ScanResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ScanResponse.cs new file mode 100644 index 0000000..45e2dd8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ScanResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class ScanResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithDevice? MediaContainerWithDevice { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Scope.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Scope.cs index c4b74ce..e24ea0b 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Scope.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Scope.cs @@ -14,7 +14,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using System; /// - /// `all` - This is the only supported `scope` parameter. + /// The value `all` is the only supported `scope` parameter. /// public enum Scope { diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsMediaContainer.cs new file mode 100644 index 0000000..6b0ce74 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class SearchHubsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Hub")] + public List? Hub { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsRequest.cs new file mode 100644 index 0000000..b93fa24 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class SearchHubsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// 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 long? SectionId { get; set; } + + /// + /// The number of items to return per hub. 3 if not specified + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=limit")] + public long? Limit { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsResponse.cs new file mode 100644 index 0000000..b9fb094 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class SearchHubsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public SearchHubsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsResponseBody.cs new file mode 100644 index 0000000..fc18635 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SearchHubsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class SearchHubsResponseBody + { + + [JsonProperty("MediaContainer")] + public SearchHubsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SearchResult.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SearchResult.cs deleted file mode 100644 index 0250645..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/SearchResult.cs +++ /dev/null @@ -1,31 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class SearchResult - { - - /// - /// The score of the search result, typically a float value between 0 and 1. - /// - [JsonProperty("score")] - public float Score { get; set; } = default!; - - [JsonProperty("Directory")] - public GetSearchAllLibrariesDirectory? Directory { get; set; } - - [JsonProperty("Metadata")] - public GetSearchAllLibrariesMetadata? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SearchTypes.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SearchTypes.cs deleted file mode 100644 index edd0019..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/SearchTypes.cs +++ /dev/null @@ -1,81 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - [JsonConverter(typeof(OpenEnumConverter))] - public class SearchTypes : IEquatable - { - public static readonly SearchTypes Movies = new SearchTypes("movies"); - public static readonly SearchTypes Music = new SearchTypes("music"); - public static readonly SearchTypes OtherVideos = new SearchTypes("otherVideos"); - public static readonly SearchTypes People = new SearchTypes("people"); - public static readonly SearchTypes Tv = new SearchTypes("tv"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["movies"] = Movies, - ["music"] = Music, - ["otherVideos"] = OtherVideos, - ["people"] = People, - ["tv"] = Tv - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private SearchTypes(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static SearchTypes Of(string value) - { - return _values.GetOrAdd(value, _ => new SearchTypes(value)); - } - - public static implicit operator SearchTypes(string value) => Of(value); - public static implicit operator string(SearchTypes searchtypes) => searchtypes.Value; - - public static SearchTypes[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as SearchTypes); - - public bool Equals(SearchTypes? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Server.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Server.cs deleted file mode 100644 index 89d09b2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Server.cs +++ /dev/null @@ -1,51 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - 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/LukeHagar/PlexAPI/SDK/Models/Requests/Services.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Services.cs deleted file mode 100644 index a2c496f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Services.cs +++ /dev/null @@ -1,38 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - public class Services - { - - [JsonProperty("identifier")] - public string Identifier { get; set; } = default!; - - [JsonProperty("endpoint")] - public string Endpoint { get; set; } = default!; - - [JsonProperty("token", NullValueHandling = NullValueHandling.Include)] - public string? Token { get; set; } - - [JsonProperty("secret", NullValueHandling = NullValueHandling.Include)] - public string? Secret { get; set; } - - [JsonProperty("status")] - public GetTokenDetailsStatus Status { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Session.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Session.cs deleted file mode 100644 index b0a5c44..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Session.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Session - { - - [JsonProperty("id")] - public string? Id { get; set; } - - [JsonProperty("bandwidth")] - public int? Bandwidth { get; set; } - - [JsonProperty("location")] - public string? Location { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetChannelmapRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetChannelmapRequest.cs new file mode 100644 index 0000000..9af5062 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetChannelmapRequest.cs @@ -0,0 +1,110 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System.Collections.Generic; + + public class SetChannelmapRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the device. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=deviceId")] + public long DeviceId { get; set; } = default!; + + /// + /// The mapping of changes, passed as a map of device channel to lineup VCN. + /// + [SpeakeasyMetadata("queryParam:style=deepObject,explode=true,name=channelMapping")] + public Models.Requests.ChannelMapping? ChannelMapping { get; set; } + + /// + /// The mapping of changes, passed as a map of device channel to lineup key. + /// + [SpeakeasyMetadata("queryParam:style=deepObject,explode=true,name=channelMappingByKey")] + public ChannelMappingByKey? ChannelMappingByKey { get; set; } + + /// + /// The channels which are enabled. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=channelsEnabled")] + public List? ChannelsEnabled { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetChannelmapResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetChannelmapResponse.cs new file mode 100644 index 0000000..6cc66d1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetChannelmapResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class SetChannelmapResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithDevice? MediaContainerWithDevice { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesDVR.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesDVR.cs new file mode 100644 index 0000000..dda318e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesDVR.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class SetDVRPreferencesDVR + { + + [JsonProperty("Device")] + public List? Device { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("language")] + public string? Language { get; set; } + + [JsonProperty("lineup")] + public string? Lineup { get; set; } + + [JsonProperty("uuid")] + public string? Uuid { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesDVRsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesDVRsMediaContainer.cs new file mode 100644 index 0000000..c9ed656 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesDVRsMediaContainer.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class SetDVRPreferencesDVRsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + /// + /// A status indicator. If present and non-zero, indicates an error + /// + [JsonProperty("status")] + public long? Status { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesMediaContainer.cs new file mode 100644 index 0000000..dcf28c9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesMediaContainer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class SetDVRPreferencesMediaContainer + { + + [JsonProperty("MediaContainer")] + public SetDVRPreferencesDVRsMediaContainer? MediaContainer { get; set; } + + [JsonProperty("DVR")] + public List? Dvr { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesRequest.cs new file mode 100644 index 0000000..642aa21 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class SetDVRPreferencesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the DVR. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=dvrId")] + public long DvrId { get; set; } = default!; + + /// + /// Set the `name` preference to the provided value + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=name")] + public string? Name { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesResponse.cs new file mode 100644 index 0000000..99462c3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class SetDVRPreferencesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public SetDVRPreferencesResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesResponseBody.cs new file mode 100644 index 0000000..e54ca23 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDVRPreferencesResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class SetDVRPreferencesResponseBody + { + + [JsonProperty("MediaContainer")] + public SetDVRPreferencesMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetDevicePreferencesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDevicePreferencesRequest.cs new file mode 100644 index 0000000..3e2914a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDevicePreferencesRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class SetDevicePreferencesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the device. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=deviceId")] + public long DeviceId { get; set; } = default!; + + /// + /// The preference names and values. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=name")] + public string? Name { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetDevicePreferencesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDevicePreferencesResponse.cs new file mode 100644 index 0000000..1e228e9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetDevicePreferencesResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class SetDevicePreferencesResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetItemArtworkRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetItemArtworkRequest.cs new file mode 100644 index 0000000..40497d9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetItemArtworkRequest.cs @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class SetItemArtworkRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=element")] + public Element Element { get; set; } = default!; + + /// + /// The url of the new asset. If not provided, the binary of the asset must be provided in the post body. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] + public string? Url { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetItemArtworkResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetItemArtworkResponse.cs new file mode 100644 index 0000000..399abb5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetItemArtworkResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class SetItemArtworkResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetItemPreferencesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetItemPreferencesRequest.cs new file mode 100644 index 0000000..6444002 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetItemPreferencesRequest.cs @@ -0,0 +1,91 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class SetItemPreferencesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=args")] + public QueryParamArgs? Args { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetItemPreferencesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetItemPreferencesResponse.cs new file mode 100644 index 0000000..fcce52a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetItemPreferencesResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class SetItemPreferencesResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetPreferencesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetPreferencesRequest.cs new file mode 100644 index 0000000..53131c5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetPreferencesRequest.cs @@ -0,0 +1,88 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class SetPreferencesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=prefs")] + public Prefs Prefs { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetPreferencesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetPreferencesResponse.cs new file mode 100644 index 0000000..d8da904 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetPreferencesResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class SetPreferencesResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetRatingRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetRatingRequest.cs new file mode 100644 index 0000000..207209d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetRatingRequest.cs @@ -0,0 +1,108 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class SetRatingRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library` + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=identifier")] + public string Identifier { get; set; } = default!; + + /// + /// The key of the item to rate. This is the `ratingKey` found in metadata items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=key")] + public string Key { get; set; } = default!; + + /// + /// The rating to give the item. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=rating")] + public double Rating { get; set; } = default!; + + /// + /// The time when the rating occurred. If not present, interpreted as now. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=ratedAt")] + public long? RatedAt { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetRatingResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetRatingResponse.cs new file mode 100644 index 0000000..c1cddc4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetRatingResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class SetRatingResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesQueryParamPrefs.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesQueryParamPrefs.cs new file mode 100644 index 0000000..0643e97 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesQueryParamPrefs.cs @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + public class SetSectionPreferencesQueryParamPrefs + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesRequest.cs new file mode 100644 index 0000000..c90d429 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesRequest.cs @@ -0,0 +1,94 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class SetSectionPreferencesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=prefs")] + public SetSectionPreferencesQueryParamPrefs Prefs { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesResponse.cs new file mode 100644 index 0000000..0b924b5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetSectionPreferencesResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class SetSectionPreferencesResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamOffsetRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamOffsetRequest.cs new file mode 100644 index 0000000..c83c319 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamOffsetRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class SetStreamOffsetRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The id of the stream + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=streamId")] + public long StreamId { get; set; } = default!; + + /// + /// This is not a part of this endpoint but documented here to satisfy OpenAPI + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ext")] + public string Ext { get; set; } = default!; + + /// + /// The offest in ms + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=offset")] + public long? Offset { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamOffsetResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamOffsetResponse.cs new file mode 100644 index 0000000..ca1bf39 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamOffsetResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class SetStreamOffsetResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamSelectionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamSelectionRequest.cs new file mode 100644 index 0000000..b2488d0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamSelectionRequest.cs @@ -0,0 +1,108 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class SetStreamSelectionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The id of the part to select streams on + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=partId")] + public long PartId { get; set; } = default!; + + /// + /// The id of the audio stream to select in this part + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=audioStreamID")] + public long? AudioStreamID { get; set; } + + /// + /// The id of the subtitle stream to select in this part. Specify 0 to select no subtitle + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subtitleStreamID")] + public long? SubtitleStreamID { get; set; } + + /// + /// Perform the same for all parts of this media selecting similar streams in each + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=allParts")] + public BoolInt? AllParts { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamSelectionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamSelectionResponse.cs new file mode 100644 index 0000000..5e5723f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SetStreamSelectionResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class SetStreamSelectionResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Setting.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Setting.cs deleted file mode 100644 index c2b5dec..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Setting.cs +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Setting - { - - [JsonProperty("id")] - public string? Id { get; set; } - - [JsonProperty("label")] - public string? Label { get; set; } - - [JsonProperty("summary")] - public string? Summary { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("default")] - public bool? Default { get; set; } - - [JsonProperty("value")] - public bool? Value { get; set; } - - [JsonProperty("hidden")] - public bool? Hidden { get; set; } - - [JsonProperty("advanced")] - public bool? Advanced { get; set; } - - [JsonProperty("group")] - public string? Group { get; set; } - - [JsonProperty("enumValues")] - public string? EnumValues { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SharedServers.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SharedServers.cs deleted file mode 100644 index 414125c..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/SharedServers.cs +++ /dev/null @@ -1,17 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class SharedServers - { - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SharedSources.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SharedSources.cs deleted file mode 100644 index 230fc42..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/SharedSources.cs +++ /dev/null @@ -1,17 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class SharedSources - { - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ShowOrdering.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ShowOrdering.cs deleted file mode 100644 index a1b7177..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/ShowOrdering.cs +++ /dev/null @@ -1,94 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// Setting that indicates the episode ordering for the show.
- /// - /// - /// Options:
- /// - None = Library default
- /// - tmdbAiring = The Movie Database (Aired)
- /// - aired = TheTVDB (Aired)
- /// - dvd = TheTVDB (DVD)
- /// - absolute = TheTVDB (Absolute)
- /// - ///
- ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class ShowOrdering : IEquatable - { - public static readonly ShowOrdering None = new ShowOrdering("None"); - public static readonly ShowOrdering TmdbAiring = new ShowOrdering("tmdbAiring"); - public static readonly ShowOrdering TvdbAired = new ShowOrdering("aired"); - public static readonly ShowOrdering TvdbDvd = new ShowOrdering("dvd"); - public static readonly ShowOrdering TvdbAbsolute = new ShowOrdering("absolute"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["None"] = None, - ["tmdbAiring"] = TmdbAiring, - ["aired"] = TvdbAired, - ["dvd"] = TvdbDvd, - ["absolute"] = TvdbAbsolute - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private ShowOrdering(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static ShowOrdering Of(string value) - { - return _values.GetOrAdd(value, _ => new ShowOrdering(value)); - } - - public static implicit operator ShowOrdering(string value) => Of(value); - public static implicit operator string(ShowOrdering showordering) => showordering.Value; - - public static ShowOrdering[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as ShowOrdering); - - public bool Equals(ShowOrdering? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ShuffleRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ShuffleRequest.cs new file mode 100644 index 0000000..6524427 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ShuffleRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class ShuffleRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the play queue. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playQueueId")] + public long PlayQueueId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/ShuffleResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/ShuffleResponse.cs new file mode 100644 index 0000000..5c00dad --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/ShuffleResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class ShuffleResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Similar.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Similar.cs deleted file mode 100644 index 6448865..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Similar.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - /// - /// The display tag for the similar item, typically the title. - /// - public class Similar - { - - [JsonProperty("id")] - public int Id { get; set; } = default!; - - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Skip.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Skip.cs deleted file mode 100644 index 79c8162..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Skip.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// 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/LukeHagar/PlexAPI/SDK/Models/Requests/Smart.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Smart.cs deleted file mode 100644 index 40ecf91..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Smart.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// whether the playlist is smart or not - /// - public enum Smart - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Sort.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Sort.cs deleted file mode 100644 index f94bd1f..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Sort.cs +++ /dev/null @@ -1,57 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Sort - { - - [JsonProperty("default")] - public string? Default { get; set; } - - [JsonProperty("active")] - public bool? Active { get; set; } - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- [JsonProperty("activeDirection")] - public ActiveDirection? ActiveDirection { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.ActiveDirection.Ascending; - - /// - /// The direction of the sort. Can be either `asc` or `desc`.
- /// - /// - /// - /// - ///
- [JsonProperty("defaultDirection")] - public DefaultDirection? DefaultDirection { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.DefaultDirection.Ascending; - - [JsonProperty("descKey")] - public string? DescKey { get; set; } - - [JsonProperty("firstCharacterKey")] - public string? FirstCharacterKey { get; set; } - - [JsonProperty("key")] - public string Key { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SplitItemRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SplitItemRequest.cs new file mode 100644 index 0000000..3d94129 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SplitItemRequest.cs @@ -0,0 +1,87 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class SplitItemRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SplitItemResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SplitItemResponse.cs new file mode 100644 index 0000000..514c796 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SplitItemResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class SplitItemResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartAllTasksResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartAllTasksResponse.cs deleted file mode 100644 index e90ffee..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/StartAllTasksResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartAnalysisRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartAnalysisRequest.cs new file mode 100644 index 0000000..4fd889a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StartAnalysisRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class StartAnalysisRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Section identifier + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartAnalysisResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartAnalysisResponse.cs new file mode 100644 index 0000000..a3e1d09 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StartAnalysisResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class StartAnalysisResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartBifGenerationRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartBifGenerationRequest.cs new file mode 100644 index 0000000..516f376 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StartBifGenerationRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class StartBifGenerationRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=force")] + public BoolInt? Force { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartBifGenerationResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartBifGenerationResponse.cs new file mode 100644 index 0000000..e09d0e4 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StartBifGenerationResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class StartBifGenerationResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartTaskRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTaskRequest.cs index a630cb2..3b576e4 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/StartTaskRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTaskRequest.cs @@ -9,21 +9,83 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; public class StartTaskRequest { /// - /// the name of the task to be started. + /// Indicates the client accepts the indicated media types /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=taskName")] - public TaskName TaskName { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The task name + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=task")] + public PathParamTask Task { get; set; } = default!; } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartTasksResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTasksResponse.cs new file mode 100644 index 0000000..865165e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTasksResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class StartTasksResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamLocation.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamLocation.cs new file mode 100644 index 0000000..05f60a3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamLocation.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// Network type of the client, can be used to help determine target bitrate. + /// + public enum StartTranscodeSessionQueryParamLocation + { + [JsonProperty("lan")] + Lan, + [JsonProperty("wan")] + Wan, + [JsonProperty("cellular")] + Cellular, + } + + public static class StartTranscodeSessionQueryParamLocationExtension + { + public static string Value(this StartTranscodeSessionQueryParamLocation value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static StartTranscodeSessionQueryParamLocation ToEnum(this string value) + { + foreach(var field in typeof(StartTranscodeSessionQueryParamLocation).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 StartTranscodeSessionQueryParamLocation) + { + return (StartTranscodeSessionQueryParamLocation)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum StartTranscodeSessionQueryParamLocation"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamProtocol.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamProtocol.cs new file mode 100644 index 0000000..53cf426 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamProtocol.cs @@ -0,0 +1,66 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
+ /// + /// + /// + /// + ///
+ public enum StartTranscodeSessionQueryParamProtocol + { + [JsonProperty("http")] + Http, + [JsonProperty("hls")] + Hls, + [JsonProperty("dash")] + Dash, + } + + public static class StartTranscodeSessionQueryParamProtocolExtension + { + public static string Value(this StartTranscodeSessionQueryParamProtocol value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static StartTranscodeSessionQueryParamProtocol ToEnum(this string value) + { + foreach(var field in typeof(StartTranscodeSessionQueryParamProtocol).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 StartTranscodeSessionQueryParamProtocol) + { + return (StartTranscodeSessionQueryParamProtocol)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum StartTranscodeSessionQueryParamProtocol"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamSubtitles.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamSubtitles.cs new file mode 100644 index 0000000..4e039b3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionQueryParamSubtitles.cs @@ -0,0 +1,74 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
+ /// + /// + /// + /// + ///
+ public enum StartTranscodeSessionQueryParamSubtitles + { + [JsonProperty("auto")] + Auto, + [JsonProperty("burn")] + Burn, + [JsonProperty("none")] + None, + [JsonProperty("sidecar")] + Sidecar, + [JsonProperty("embedded")] + Embedded, + [JsonProperty("segmented")] + Segmented, + [JsonProperty("unknown")] + Unknown, + } + + public static class StartTranscodeSessionQueryParamSubtitlesExtension + { + public static string Value(this StartTranscodeSessionQueryParamSubtitles value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static StartTranscodeSessionQueryParamSubtitles ToEnum(this string value) + { + foreach(var field in typeof(StartTranscodeSessionQueryParamSubtitles).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 StartTranscodeSessionQueryParamSubtitles) + { + return (StartTranscodeSessionQueryParamSubtitles)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum StartTranscodeSessionQueryParamSubtitles"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionRequest.cs new file mode 100644 index 0000000..db86ff3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionRequest.cs @@ -0,0 +1,293 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class StartTranscodeSessionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Type of transcode media + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=transcodeType")] + public TranscodeType TranscodeType { get; set; } = default!; + + /// + /// Transcode session UUID + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=transcodeSessionId")] + public string? TranscodeSessionId { get; set; } + + /// + /// Extension
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=extension")] + public Extension Extension { get; set; } = default!; + + /// + /// Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=advancedSubtitles")] + public Models.Components.AdvancedSubtitles? AdvancedSubtitles { get; set; } + + /// + /// Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=audioBoost")] + public long? AudioBoost { get; set; } + + /// + /// Target video number of audio channels. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=audioChannelCount")] + public long? AudioChannelCount { get; set; } + + /// + /// Indicates the client supports ABR. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustQuality")] + public BoolInt? AutoAdjustQuality { get; set; } + + /// + /// Indicates if the server should adjust subtitles based on Voice Activity Data. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustSubtitle")] + public BoolInt? AutoAdjustSubtitle { get; set; } + + /// + /// Indicates the client supports direct playing the indicated content. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directPlay")] + public BoolInt? DirectPlay { get; set; } + + /// + /// Indicates the client supports direct streaming the video of the indicated content. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStream")] + public BoolInt? DirectStream { get; set; } + + /// + /// Indicates the client supports direct streaming the audio of the indicated content. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStreamAudio")] + public BoolInt? DirectStreamAudio { get; set; } + + /// + /// Indicates if resolution should be adjusted for orientation. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=disableResolutionRotation")] + public BoolInt? DisableResolutionRotation { get; set; } + + /// + /// Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=hasMDE")] + public BoolInt? HasMDE { get; set; } + + /// + /// Network type of the client, can be used to help determine target bitrate. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=location")] + public StartTranscodeSessionQueryParamLocation? Location { get; set; } + + /// + /// Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaBufferSize")] + public long? MediaBufferSize { get; set; } + + /// + /// Index of the media to transcode. -1 or not specified indicates let the server choose. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaIndex")] + public long? MediaIndex { get; set; } + + /// + /// Target bitrate for audio only files (in kbps, used to transcode). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=musicBitrate")] + public long? MusicBitrate { get; set; } + + /// + /// Offset from the start of the media (in seconds). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=offset")] + public double? Offset { get; set; } + + /// + /// Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=partIndex")] + public long? PartIndex { get; set; } + + /// + /// Internal PMS path of the media to transcode. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=path")] + public string? Path { get; set; } + + /// + /// Maximum bitrate (in kbps) to use in ABR. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=peakBitrate")] + public long? PeakBitrate { get; set; } + + /// + /// Target photo resolution. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=photoResolution")] + public string? PhotoResolution { get; set; } + + /// + /// Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=protocol")] + public StartTranscodeSessionQueryParamProtocol? Protocol { get; set; } + + /// + /// Number of seconds to include in each transcoded segment + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=secondsPerSegment")] + public long? SecondsPerSegment { get; set; } + + /// + /// Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subtitleSize")] + public long? SubtitleSize { get; set; } + + /// + /// Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subtitles")] + public StartTranscodeSessionQueryParamSubtitles? Subtitles { get; set; } + + /// + /// Target video bitrate (in kbps). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=videoBitrate")] + public long? VideoBitrate { get; set; } + + /// + /// Target photo quality. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=videoQuality")] + public long? VideoQuality { get; set; } + + /// + /// Target maximum video resolution. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=videoResolution")] + public string? VideoResolution { get; set; } + + /// + /// See Profile Augmentations . + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Profile-Extra")] + public string? XPlexClientProfileExtra { get; set; } + + /// + /// Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Profile-Name")] + public string? XPlexClientProfileName { get; set; } + + /// + /// Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Session-Identifier")] + public string? XPlexSessionIdentifier { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionResponse.cs new file mode 100644 index 0000000..021100e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StartTranscodeSessionResponse.cs @@ -0,0 +1,39 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class StartTranscodeSessionResponse + { + + /// + /// 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!; + + /// + /// MPD file (see ISO/IEC 23009-1:2022), m3u8 file (see RFC 8216), or binary http stream + /// + public byte[]? Bytes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StartUniversalTranscodeRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartUniversalTranscodeRequest.cs deleted file mode 100644 index bb13d63..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/StartUniversalTranscodeRequest.cs +++ /dev/null @@ -1,113 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.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/LukeHagar/PlexAPI/SDK/Models/Requests/StartUniversalTranscodeResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StartUniversalTranscodeResponse.cs deleted file mode 100644 index fa6ead8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/StartUniversalTranscodeResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/State.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/State.cs index 53e515b..e01315d 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/State.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/State.cs @@ -12,69 +12,53 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; /// - /// The state of the media item + /// The current state of the media. /// - [JsonConverter(typeof(OpenEnumConverter))] - public class State : IEquatable + public enum State { - public static readonly State Playing = new State("playing"); - public static readonly State Paused = new State("paused"); - public static readonly State Stopped = new State("stopped"); + [JsonProperty("stopped")] + Stopped, + [JsonProperty("buffering")] + Buffering, + [JsonProperty("playing")] + Playing, + [JsonProperty("paused")] + Paused, + } - private static readonly Dictionary _knownValues = - new Dictionary () + 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()) { - ["playing"] = Playing, - ["paused"] = Paused, - ["stopped"] = Stopped - }; + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); - private State(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; + if (enumVal is State) + { + return (State)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum State"); } - - public string Value { get; } - - public static State Of(string value) - { - return _values.GetOrAdd(value, _ => new State(value)); - } - - public static implicit operator State(string value) => Of(value); - public static implicit operator string(State state) => state.Value; - - public static State[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as State); - - public bool Equals(State? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsBandwidth.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsBandwidth.cs deleted file mode 100644 index c4e8b1e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsBandwidth.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StatisticsBandwidth - { - - [JsonProperty("accountID")] - public int? AccountID { get; set; } - - [JsonProperty("deviceID")] - public int? DeviceID { get; set; } - - [JsonProperty("timespan")] - public long? Timespan { get; set; } - - [JsonProperty("at")] - public int? At { get; set; } - - [JsonProperty("lan")] - public bool? Lan { get; set; } - - [JsonProperty("bytes")] - public long? Bytes { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsMedia.cs deleted file mode 100644 index 77533fc..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsMedia.cs +++ /dev/null @@ -1,39 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StatisticsMedia - { - - [JsonProperty("accountID")] - public int? AccountID { get; set; } - - [JsonProperty("deviceID")] - public int? DeviceID { get; set; } - - [JsonProperty("timespan")] - public int? Timespan { get; set; } - - [JsonProperty("at")] - public int? At { get; set; } - - [JsonProperty("metadataType")] - public int? MetadataType { get; set; } - - [JsonProperty("count")] - public int? Count { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsResources.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsResources.cs deleted file mode 100644 index 977b3a4..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/StatisticsResources.cs +++ /dev/null @@ -1,36 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class StatisticsResources - { - - [JsonProperty("timespan")] - public long? Timespan { get; set; } - - [JsonProperty("at")] - public long? At { get; set; } - - [JsonProperty("hostCpuUtilization")] - public float? HostCpuUtilization { get; set; } - - [JsonProperty("processCpuUtilization")] - public float? ProcessCpuUtilization { get; set; } - - [JsonProperty("hostMemoryUtilization")] - public float? HostMemoryUtilization { get; set; } - - [JsonProperty("processMemoryUtilization")] - public float? ProcessMemoryUtilization { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Status.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Status.cs index 3abf75b..f61a38e 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Status.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Status.cs @@ -12,65 +12,64 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; /// - /// Current friend request status + /// The state of this queue
+ /// + /// + /// - deciding: At least one item is still being decided
+ /// - waiting: At least one item is waiting for transcode and none are currently transcoding
+ /// - processing: At least one item is being transcoded
+ /// - done: All items are available (or potentially expired)
+ /// - error: At least one item has encountered an error
+ /// + ///
///
- [JsonConverter(typeof(OpenEnumConverter))] - public class Status : IEquatable + public enum Status { - public static readonly Status Accepted = new Status("accepted"); + [JsonProperty("deciding")] + Deciding, + [JsonProperty("waiting")] + Waiting, + [JsonProperty("processing")] + Processing, + [JsonProperty("done")] + Done, + [JsonProperty("error")] + Error, + } - private static readonly Dictionary _knownValues = - new Dictionary () + public static class StatusExtension + { + public static string Value(this Status value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Status ToEnum(this string value) + { + foreach(var field in typeof(Status).GetFields()) { - ["accepted"] = Accepted - }; + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); - private Status(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; + if (enumVal is Status) + { + return (Status)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Status"); } - - public string Value { get; } - - public static Status Of(string value) - { - return _values.GetOrAdd(value, _ => new Status(value)); - } - - public static implicit operator Status(string value) => Of(value); - public static implicit operator string(Status status) => status.Value; - - public static Status[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as Status); - - public bool Equals(Status? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StopAllRefreshesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StopAllRefreshesResponse.cs new file mode 100644 index 0000000..b925790 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StopAllRefreshesResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class StopAllRefreshesResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public RequestHandlerSlashGetResponses200? RequestHandlerSlashGetResponses200 { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StopAllTasksResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StopAllTasksResponse.cs deleted file mode 100644 index 14bd7af..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/StopAllTasksResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StopDVRReloadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StopDVRReloadRequest.cs new file mode 100644 index 0000000..dfc98a7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StopDVRReloadRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class StopDVRReloadRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the DVR. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=dvrId")] + public long DvrId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StopDVRReloadResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StopDVRReloadResponse.cs new file mode 100644 index 0000000..ab7601d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StopDVRReloadResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class StopDVRReloadResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StopScanRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StopScanRequest.cs new file mode 100644 index 0000000..ea6a674 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StopScanRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class StopScanRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the device. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=deviceId")] + public long DeviceId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StopScanResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StopScanResponse.cs new file mode 100644 index 0000000..0014d97 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StopScanResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class StopScanResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithDevice? MediaContainerWithDevice { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StopTaskRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StopTaskRequest.cs index cf02abd..b81e894 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/StopTaskRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StopTaskRequest.cs @@ -9,21 +9,83 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; public class StopTaskRequest { /// - /// The name of the task to be started. + /// Indicates the client accepts the indicated media types /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=taskName")] - public PathParamTaskName TaskName { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The task name + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=task")] + public Task Task { get; set; } = default!; } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StopTasksResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StopTasksResponse.cs new file mode 100644 index 0000000..7b9d161 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/StopTasksResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class StopTasksResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/StopTranscodeSessionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StopTranscodeSessionRequest.cs deleted file mode 100644 index 7d96d8d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/StopTranscodeSessionRequest.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.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/LukeHagar/PlexAPI/SDK/Models/Requests/StopTranscodeSessionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/StopTranscodeSessionResponse.cs deleted file mode 100644 index 1b87e08..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/StopTranscodeSessionResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Stream.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Stream.cs deleted file mode 100644 index cbdbc30..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Stream.cs +++ /dev/null @@ -1,316 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Stream - { - - /// - /// Unique stream identifier. - /// - [JsonProperty("id")] - public long Id { get; set; } = default!; - - /// - /// Stream type:
- /// - /// - /// - VIDEO = 1
- /// - AUDIO = 2
- /// - SUBTITLE = 3
- /// - ///
- ///
- [JsonProperty("streamType")] - public long StreamType { get; } = 1; - - /// - /// Format of the stream (e.g., srt). - /// - [JsonProperty("format")] - public string? Format { get; set; } - - /// - /// Indicates if this stream is default. - /// - [JsonProperty("default")] - public bool? Default { get; set; } - - /// - /// Codec used by the stream. - /// - [JsonProperty("codec")] - public string Codec { get; set; } = default!; - - /// - /// Index of the stream. - /// - [JsonProperty("index")] - public int? Index { get; set; } - - /// - /// Bitrate of the stream. - /// - [JsonProperty("bitrate")] - public int? Bitrate { get; set; } - - /// - /// Language of the stream. - /// - [JsonProperty("language")] - public string? Language { get; set; } - - /// - /// Language tag (e.g., en). - /// - [JsonProperty("languageTag")] - public string? LanguageTag { get; set; } - - /// - /// ISO language code. - /// - [JsonProperty("languageCode")] - public string? LanguageCode { get; set; } - - /// - /// Indicates whether header compression is enabled. - /// - [JsonProperty("headerCompression")] - public bool? HeaderCompression { get; set; } - - /// - /// Dolby Vision BL compatibility ID. - /// - [JsonProperty("DOVIBLCompatID")] - public int? DOVIBLCompatID { get; set; } - - /// - /// Indicates if Dolby Vision BL is present. - /// - [JsonProperty("DOVIBLPresent")] - public bool? DOVIBLPresent { get; set; } - - /// - /// Indicates if Dolby Vision EL is present. - /// - [JsonProperty("DOVIELPresent")] - public bool? DOVIELPresent { get; set; } - - /// - /// Dolby Vision level. - /// - [JsonProperty("DOVILevel")] - public int? DOVILevel { get; set; } - - /// - /// Indicates if Dolby Vision is present. - /// - [JsonProperty("DOVIPresent")] - public bool? DOVIPresent { get; set; } - - /// - /// Dolby Vision profile. - /// - [JsonProperty("DOVIProfile")] - public int? DOVIProfile { get; set; } - - /// - /// Indicates if Dolby Vision RPU is present. - /// - [JsonProperty("DOVIRPUPresent")] - public bool? DOVIRPUPresent { get; set; } - - /// - /// Dolby Vision version. - /// - [JsonProperty("DOVIVersion")] - public string? DOVIVersion { get; set; } - - /// - /// Bit depth of the video stream. - /// - [JsonProperty("bitDepth")] - public int? BitDepth { get; set; } - - /// - /// Chroma sample location. - /// - [JsonProperty("chromaLocation")] - public string? ChromaLocation { get; set; } - - /// - /// Chroma subsampling format. - /// - [JsonProperty("chromaSubsampling")] - public string? ChromaSubsampling { get; set; } - - /// - /// Coded video height. - /// - [JsonProperty("codedHeight")] - public int? CodedHeight { get; set; } - - /// - /// Coded video width. - /// - [JsonProperty("codedWidth")] - public int? CodedWidth { get; set; } - - [JsonProperty("closedCaptions")] - public bool? ClosedCaptions { get; set; } - - /// - /// Color primaries used. - /// - [JsonProperty("colorPrimaries")] - public string? ColorPrimaries { get; set; } - - /// - /// Color range (e.g., tv). - /// - [JsonProperty("colorRange")] - public string? ColorRange { get; set; } - - /// - /// Color space. - /// - [JsonProperty("colorSpace")] - public string? ColorSpace { get; set; } - - /// - /// Color transfer characteristics. - /// - [JsonProperty("colorTrc")] - public string? ColorTrc { get; set; } - - /// - /// Frame rate of the stream. - /// - [JsonProperty("frameRate")] - public float? FrameRate { get; set; } - - /// - /// Key to access this stream part. - /// - [JsonProperty("key")] - public string? Key { get; set; } - - /// - /// Height of the video stream. - /// - [JsonProperty("height")] - public int? Height { get; set; } - - /// - /// Video level. - /// - [JsonProperty("level")] - public int? Level { get; set; } - - /// - /// Indicates if this is the original stream. - /// - [JsonProperty("original")] - public bool? Original { get; set; } - - [JsonProperty("hasScalingMatrix")] - public bool? HasScalingMatrix { get; set; } - - /// - /// Video profile. - /// - [JsonProperty("profile")] - public string? Profile { get; set; } - - [JsonProperty("scanType")] - public string? ScanType { get; set; } - - [JsonProperty("embeddedInVideo")] - public string? EmbeddedInVideo { get; set; } - - /// - /// Number of reference frames. - /// - [JsonProperty("refFrames")] - public int? RefFrames { get; set; } - - /// - /// Width of the video stream. - /// - [JsonProperty("width")] - public int? Width { get; set; } - - /// - /// Display title for the stream. - /// - [JsonProperty("displayTitle")] - public string DisplayTitle { get; set; } = default!; - - /// - /// Extended display title for the stream. - /// - [JsonProperty("extendedDisplayTitle")] - public string ExtendedDisplayTitle { get; set; } = default!; - - /// - /// Indicates if this stream is selected (applicable for audio streams). - /// - [JsonProperty("selected")] - public bool? Selected { get; set; } - - [JsonProperty("forced")] - public bool? Forced { get; set; } - - /// - /// Number of audio channels (for audio streams). - /// - [JsonProperty("channels")] - public int? Channels { get; set; } - - /// - /// Audio channel layout. - /// - [JsonProperty("audioChannelLayout")] - public string? AudioChannelLayout { get; set; } - - /// - /// Sampling rate for the audio stream. - /// - [JsonProperty("samplingRate")] - public int? SamplingRate { get; set; } - - /// - /// Indicates if the stream can auto-sync. - /// - [JsonProperty("canAutoSync")] - public bool? CanAutoSync { get; set; } - - /// - /// Indicates if the stream is for the hearing impaired. - /// - [JsonProperty("hearingImpaired")] - public bool? HearingImpaired { get; set; } - - /// - /// Indicates if the stream is a dub. - /// - [JsonProperty("dub")] - public bool? Dub { get; set; } - - /// - /// Optional title for the stream (e.g., language variant). - /// - [JsonProperty("title")] - public string? Title { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Subscription.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Subscription.cs deleted file mode 100644 index e619629..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Subscription.cs +++ /dev/null @@ -1,62 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// If the account’s Plex Pass subscription is active - /// - public class Subscription - { - - /// - /// List of features allowed on your Plex Pass subscription - /// - [JsonProperty("features")] - public List? Features { get; set; } - - /// - /// If the account's Plex Pass subscription is active - /// - [JsonProperty("active")] - public bool? Active { get; set; } - - /// - /// Date the account subscribed to Plex Pass - /// - [JsonProperty("subscribedAt")] - public string? SubscribedAt { get; set; } = null; - - /// - /// String representation of subscriptionActive - /// - [JsonProperty("status")] - public GetTokenDetailsAuthenticationStatus? Status { get; set; } - - /// - /// Payment service used for your Plex Pass subscription - /// - [JsonProperty("paymentService")] - public string? PaymentService { get; set; } = null; - - /// - /// Name of Plex Pass subscription plan - /// - [JsonProperty("plan")] - public string? Plan { get; set; } = null; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/SubscriptionTemplate.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/SubscriptionTemplate.cs new file mode 100644 index 0000000..09287a9 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/SubscriptionTemplate.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + public class SubscriptionTemplate + { + + [JsonProperty("MediaSubscription")] + public List? MediaSubscription { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Subtitles.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Subtitles.cs new file mode 100644 index 0000000..060d740 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Subtitles.cs @@ -0,0 +1,74 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
+ /// + /// + /// + /// + ///
+ public enum Subtitles + { + [JsonProperty("auto")] + Auto, + [JsonProperty("burn")] + Burn, + [JsonProperty("none")] + None, + [JsonProperty("sidecar")] + Sidecar, + [JsonProperty("embedded")] + Embedded, + [JsonProperty("segmented")] + Segmented, + [JsonProperty("unknown")] + Unknown, + } + + public static class SubtitlesExtension + { + public static string Value(this Subtitles value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Subtitles ToEnum(this string value) + { + foreach(var field in typeof(Subtitles).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 Subtitles) + { + return (Subtitles)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Subtitles"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Tag.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Tag.cs deleted file mode 100644 index 7529ea8..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Tag.cs +++ /dev/null @@ -1,106 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// A key representing a specific tag within the section. - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class Tag : IEquatable - { - public static readonly Tag Unwatched = new Tag("unwatched"); - public static readonly Tag Newest = new Tag("newest"); - public static readonly Tag RecentlyAdded = new Tag("recentlyAdded"); - public static readonly Tag RecentlyViewed = new Tag("recentlyViewed"); - public static readonly Tag OnDeck = new Tag("onDeck"); - public static readonly Tag Collection = new Tag("collection"); - public static readonly Tag Edition = new Tag("edition"); - public static readonly Tag Year = new Tag("year"); - public static readonly Tag Decade = new Tag("decade"); - public static readonly Tag Director = new Tag("director"); - public static readonly Tag ContentRating = new Tag("contentRating"); - public static readonly Tag Rating = new Tag("rating"); - public static readonly Tag Resolution = new Tag("resolution"); - public static readonly Tag FirstCharacter = new Tag("firstCharacter"); - public static readonly Tag Folder = new Tag("folder"); - public static readonly Tag Albums = new Tag("albums"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["unwatched"] = Unwatched, - ["newest"] = Newest, - ["recentlyAdded"] = RecentlyAdded, - ["recentlyViewed"] = RecentlyViewed, - ["onDeck"] = OnDeck, - ["collection"] = Collection, - ["edition"] = Edition, - ["year"] = Year, - ["decade"] = Decade, - ["director"] = Director, - ["contentRating"] = ContentRating, - ["rating"] = Rating, - ["resolution"] = Resolution, - ["firstCharacter"] = FirstCharacter, - ["folder"] = Folder, - ["albums"] = Albums - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private Tag(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static Tag Of(string value) - { - return _values.GetOrAdd(value, _ => new Tag(value)); - } - - public static implicit operator Tag(string value) => Of(value); - public static implicit operator string(Tag tag) => tag.Value; - - public static Tag[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as Tag); - - public bool Equals(Tag? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Task.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Task.cs new file mode 100644 index 0000000..51bf0bb --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Task.cs @@ -0,0 +1,100 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System; + + /// + /// The task name + /// + public enum Task + { + [JsonProperty("AutomaticUpdates")] + AutomaticUpdates, + [JsonProperty("BackupDatabase")] + BackupDatabase, + [JsonProperty("ButlerTaskGenerateAdMarkers")] + ButlerTaskGenerateAdMarkers, + [JsonProperty("ButlerTaskGenerateCreditsMarkers")] + ButlerTaskGenerateCreditsMarkers, + [JsonProperty("ButlerTaskGenerateIntroMarkers")] + ButlerTaskGenerateIntroMarkers, + [JsonProperty("ButlerTaskGenerateVoiceActivity")] + ButlerTaskGenerateVoiceActivity, + [JsonProperty("CleanOldBundles")] + CleanOldBundles, + [JsonProperty("CleanOldCacheFiles")] + CleanOldCacheFiles, + [JsonProperty("DeepMediaAnalysis")] + DeepMediaAnalysis, + [JsonProperty("GarbageCollectBlobs")] + GarbageCollectBlobs, + [JsonProperty("GarbageCollectLibraryMedia")] + GarbageCollectLibraryMedia, + [JsonProperty("GenerateBlurHashes")] + GenerateBlurHashes, + [JsonProperty("GenerateChapterThumbs")] + GenerateChapterThumbs, + [JsonProperty("GenerateMediaIndexFiles")] + GenerateMediaIndexFiles, + [JsonProperty("LoudnessAnalysis")] + LoudnessAnalysis, + [JsonProperty("MusicAnalysis")] + MusicAnalysis, + [JsonProperty("OptimizeDatabase")] + OptimizeDatabase, + [JsonProperty("RefreshEpgGuides")] + RefreshEpgGuides, + [JsonProperty("RefreshLibraries")] + RefreshLibraries, + [JsonProperty("RefreshLocalMedia")] + RefreshLocalMedia, + [JsonProperty("RefreshPeriodicMetadata")] + RefreshPeriodicMetadata, + [JsonProperty("UpgradeMediaAnalysis")] + UpgradeMediaAnalysis, + } + + public static class TaskExtension + { + public static string Value(this Task value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Task ToEnum(this string value) + { + foreach(var field in typeof(Task).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 Task) + { + return (Task)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Task"); + } + } + +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/TaskName.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TaskName.cs deleted file mode 100644 index 151ef64..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/TaskName.cs +++ /dev/null @@ -1,102 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - - /// - /// the name of the task to be started. - /// - [JsonConverter(typeof(OpenEnumConverter))] - public class TaskName : IEquatable - { - public static readonly TaskName BackupDatabase = new TaskName("BackupDatabase"); - public static readonly TaskName BuildGracenoteCollections = new TaskName("BuildGracenoteCollections"); - public static readonly TaskName CheckForUpdates = new TaskName("CheckForUpdates"); - public static readonly TaskName CleanOldBundles = new TaskName("CleanOldBundles"); - public static readonly TaskName CleanOldCacheFiles = new TaskName("CleanOldCacheFiles"); - public static readonly TaskName DeepMediaAnalysis = new TaskName("DeepMediaAnalysis"); - public static readonly TaskName GenerateAutoTags = new TaskName("GenerateAutoTags"); - public static readonly TaskName GenerateChapterThumbs = new TaskName("GenerateChapterThumbs"); - public static readonly TaskName GenerateMediaIndexFiles = new TaskName("GenerateMediaIndexFiles"); - public static readonly TaskName OptimizeDatabase = new TaskName("OptimizeDatabase"); - public static readonly TaskName RefreshLibraries = new TaskName("RefreshLibraries"); - public static readonly TaskName RefreshLocalMedia = new TaskName("RefreshLocalMedia"); - public static readonly TaskName RefreshPeriodicMetadata = new TaskName("RefreshPeriodicMetadata"); - public static readonly TaskName UpgradeMediaAnalysis = new TaskName("UpgradeMediaAnalysis"); - - private static readonly Dictionary _knownValues = - new Dictionary () - { - ["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 - }; - - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); - - private TaskName(string value) - { - if (value == null) throw new ArgumentNullException(nameof(value)); - Value = value; - } - - public string Value { get; } - - public static TaskName Of(string value) - { - return _values.GetOrAdd(value, _ => new TaskName(value)); - } - - public static implicit operator TaskName(string value) => Of(value); - public static implicit operator string(TaskName taskname) => taskname.Value; - - public static TaskName[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as TaskName); - - public bool Equals(TaskName? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/TerminateSessionRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TerminateSessionRequest.cs new file mode 100644 index 0000000..e0effe0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/TerminateSessionRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class TerminateSessionRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The session id (found in the `Session` element in /status/sessions) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=sessionId")] + public string SessionId { get; set; } = default!; + + /// + /// The reason to give to the user (typically displayed in the client) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=reason")] + public string? Reason { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/TerminateSessionResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TerminateSessionResponse.cs new file mode 100644 index 0000000..8e9de09 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/TerminateSessionResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class TerminateSessionResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Tonight.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Tonight.cs deleted file mode 100644 index cfac243..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Tonight.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// 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/LukeHagar/PlexAPI/SDK/Models/Requests/Transcode.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Transcode.cs new file mode 100644 index 0000000..f374f02 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Transcode.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + + /// + /// The transcode session object which is not yet documented otherwise it'd be a $ref here. + /// + public class Transcode + { + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeImageRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeImageRequest.cs new file mode 100644 index 0000000..8d2dcf3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeImageRequest.cs @@ -0,0 +1,177 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class TranscodeImageRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The source URL for the image to transcode. Note, if this URL requires a token such as `X-Plex-Token`, it should be given as a query parameter to this url. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] + public string? Url { get; set; } + + /// + /// The output format for the image; defaults to jpg + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=format")] + public Models.Requests.Format? Format { get; set; } + + /// + /// The desired width of the output image + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=width")] + public long? Width { get; set; } + + /// + /// The desired height of the output image + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=height")] + public long? Height { get; set; } + + /// + /// The desired quality of the output. -1 means the highest quality. Defaults to -1 + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=quality")] + public long? Quality { get; set; } + + /// + /// The background color to apply before painting the image. Only really applicable if image has transparency. Defaults to none + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=background")] + public string? Background { get; set; } + + /// + /// Indicates if image should be upscaled to the desired width/height. Defaults to false + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=upscale")] + public BoolInt? Upscale { get; set; } + + /// + /// Indicates if image should be scaled to fit the smaller dimension. By default (false) the image is scaled to fit within the width/height specified but if this parameter is true, it will allow overflowing one dimension to fit the other. Essentially it is making the width/height minimum sizes of the image or sizing the image to fill the entire width/height even if it overflows one dimension. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=minSize")] + public BoolInt? MinSize { get; set; } + + /// + /// Obey the rotation values specified in EXIF data. Defaults to true. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=rotate")] + public BoolInt? Rotate { get; set; } + + /// + /// Apply a blur to the image, Defaults to 0 (none) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=blur")] + public long? Blur { get; set; } + + /// + /// Scale the image saturation by the specified percentage. Defaults to 100 + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=saturation")] + public long? Saturation { get; set; } + + /// + /// Render the image at the specified opacity percentage. Defaults to 100 + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=opacity")] + public long? Opacity { get; set; } + + /// + /// Use the specified chroma subsambling.
+ /// + /// + /// - 0: 411
+ /// - 1: 420
+ /// - 2: 422
+ /// - 3: 444
+ /// Defaults to 3 (444) + ///
+ ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=chromaSubsampling")] + public ChromaSubsampling? ChromaSubsampling { get; set; } + + /// + /// The color to blend with the image. Defaults to none + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=blendColor")] + public string? BlendColor { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeImageResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeImageResponse.cs new file mode 100644 index 0000000..9362222 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeImageResponse.cs @@ -0,0 +1,49 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class TranscodeImageResponse + { + + /// + /// 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 resulting image + /// + public byte[]? TwoHundredImageJpegBytes { get; set; } + + /// + /// The resulting image + /// + public byte[]? TwoHundredImagePngBytes { get; set; } + + /// + /// The resulting image + /// + public byte[]? TwoHundredImageXPortablePixmapBytes { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeJob.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeJob.cs new file mode 100644 index 0000000..37b8576 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeJob.cs @@ -0,0 +1,64 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class TranscodeJob + { + + [JsonProperty("generatorID")] + public long? GeneratorID { get; set; } + + [JsonProperty("key")] + public string? Key { get; set; } + + [JsonProperty("progress")] + public double? Progress { get; set; } + + [JsonProperty("ratingKey")] + public string? RatingKey { get; set; } + + /// + /// The number of seconds remaining in this job + /// + [JsonProperty("remaining")] + public long? Remaining { get; set; } + + /// + /// The size of the result so far + /// + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The speed of the transcode; 1.0 means real-time + /// + [JsonProperty("speed")] + public double? Speed { get; set; } + + /// + /// The tag associated with the job. This could be the tag containing the optimizer settings. + /// + [JsonProperty("targetTagID")] + public long? TargetTagID { get; set; } + + [JsonProperty("thumb")] + public string? Thumb { get; set; } + + [JsonProperty("title")] + public string? Title { get; set; } + + [JsonProperty("type")] + public GetBackgroundTasksType? Type { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSession.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSession.cs deleted file mode 100644 index 7ee1897..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSession.cs +++ /dev/null @@ -1,90 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - 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 int? Size { get; set; } - - [JsonProperty("speed")] - public double? Speed { get; set; } - - [JsonProperty("error")] - public bool? Error { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("remaining")] - public int? Remaining { 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("subtitleDecision")] - public string? SubtitleDecision { 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 int? 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/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSubtitlesRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSubtitlesRequest.cs new file mode 100644 index 0000000..6578552 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSubtitlesRequest.cs @@ -0,0 +1,283 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class TranscodeSubtitlesRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Type of transcode media + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=transcodeType")] + public TranscodeType TranscodeType { get; set; } = default!; + + /// + /// Transcode session UUID + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=transcodeSessionId")] + public string? TranscodeSessionId { get; set; } + + /// + /// Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=advancedSubtitles")] + public Models.Components.AdvancedSubtitles? AdvancedSubtitles { get; set; } + + /// + /// Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=audioBoost")] + public long? AudioBoost { get; set; } + + /// + /// Target video number of audio channels. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=audioChannelCount")] + public long? AudioChannelCount { get; set; } + + /// + /// Indicates the client supports ABR. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustQuality")] + public BoolInt? AutoAdjustQuality { get; set; } + + /// + /// Indicates if the server should adjust subtitles based on Voice Activity Data. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=autoAdjustSubtitle")] + public BoolInt? AutoAdjustSubtitle { get; set; } + + /// + /// Indicates the client supports direct playing the indicated content. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directPlay")] + public BoolInt? DirectPlay { get; set; } + + /// + /// Indicates the client supports direct streaming the video of the indicated content. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStream")] + public BoolInt? DirectStream { get; set; } + + /// + /// Indicates the client supports direct streaming the audio of the indicated content. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=directStreamAudio")] + public BoolInt? DirectStreamAudio { get; set; } + + /// + /// Indicates if resolution should be adjusted for orientation. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=disableResolutionRotation")] + public BoolInt? DisableResolutionRotation { get; set; } + + /// + /// Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=hasMDE")] + public BoolInt? HasMDE { get; set; } + + /// + /// Network type of the client, can be used to help determine target bitrate. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=location")] + public QueryParamLocation? Location { get; set; } + + /// + /// Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaBufferSize")] + public long? MediaBufferSize { get; set; } + + /// + /// Index of the media to transcode. -1 or not specified indicates let the server choose. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=mediaIndex")] + public long? MediaIndex { get; set; } + + /// + /// Target bitrate for audio only files (in kbps, used to transcode). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=musicBitrate")] + public long? MusicBitrate { get; set; } + + /// + /// Offset from the start of the media (in seconds). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=offset")] + public double? Offset { get; set; } + + /// + /// Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=partIndex")] + public long? PartIndex { get; set; } + + /// + /// Internal PMS path of the media to transcode. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=path")] + public string? Path { get; set; } + + /// + /// Maximum bitrate (in kbps) to use in ABR. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=peakBitrate")] + public long? PeakBitrate { get; set; } + + /// + /// Target photo resolution. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=photoResolution")] + public string? PhotoResolution { get; set; } + + /// + /// Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=protocol")] + public QueryParamProtocol? Protocol { get; set; } + + /// + /// Number of seconds to include in each transcoded segment + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=secondsPerSegment")] + public long? SecondsPerSegment { get; set; } + + /// + /// Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subtitleSize")] + public long? SubtitleSize { get; set; } + + /// + /// Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
+ /// + /// + /// + /// + ///
+ [SpeakeasyMetadata("queryParam:style=form,explode=true,name=subtitles")] + public QueryParamSubtitles? Subtitles { get; set; } + + /// + /// Target video bitrate (in kbps). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=videoBitrate")] + public long? VideoBitrate { get; set; } + + /// + /// Target photo quality. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=videoQuality")] + public long? VideoQuality { get; set; } + + /// + /// Target maximum video resolution. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=videoResolution")] + public string? VideoResolution { get; set; } + + /// + /// See Profile Augmentations . + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Profile-Extra")] + public string? XPlexClientProfileExtra { get; set; } + + /// + /// Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Profile-Name")] + public string? XPlexClientProfileName { get; set; } + + /// + /// Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Session-Identifier")] + public string? XPlexSessionIdentifier { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSubtitlesResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSubtitlesResponse.cs new file mode 100644 index 0000000..c03bde3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/TranscodeSubtitlesResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class TranscodeSubtitlesResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Trials.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Trials.cs deleted file mode 100644 index 46a4314..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Trials.cs +++ /dev/null @@ -1,17 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - public class Trials - { - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/TriggerFallbackRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TriggerFallbackRequest.cs new file mode 100644 index 0000000..b3f21b8 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/TriggerFallbackRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class TriggerFallbackRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// Type of transcode media + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=transcodeType")] + public TranscodeType TranscodeType { get; set; } = default!; + + /// + /// Transcode session UUID + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=transcodeSessionId")] + public string? TranscodeSessionId { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/TriggerFallbackResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TriggerFallbackResponse.cs new file mode 100644 index 0000000..decc96f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/TriggerFallbackResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class TriggerFallbackResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/TuneChannelRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TuneChannelRequest.cs new file mode 100644 index 0000000..3c00469 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/TuneChannelRequest.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class TuneChannelRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the DVR. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=dvrId")] + public long DvrId { get; set; } = default!; + + /// + /// The channel ID to tune + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=channel")] + public string Channel { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/TuneChannelResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/TuneChannelResponse.cs new file mode 100644 index 0000000..4550e17 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/TuneChannelResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class TuneChannelResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithMetadata? MediaContainerWithMetadata { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Type.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Type.cs index c41b850..4f31cbd 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Type.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Type.cs @@ -12,89 +12,51 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; /// - /// The type of media to retrieve or filter by.
- /// - /// - /// 1 = movie
- /// 2 = show
- /// 3 = season
- /// 4 = episode
- /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
- /// - ///
+ /// The type of play queue to create ///
- [JsonConverter(typeof(OpenEnumConverter))] - public class Type : IEquatable + public enum Type { - public static readonly Type Movie = new Type(1); - public static readonly Type TvShow = new Type(2); - public static readonly Type Season = new Type(3); - public static readonly Type Episode = new Type(4); - public static readonly Type Artist = new Type(5); - public static readonly Type Album = new Type(6); - public static readonly Type Track = new Type(7); - public static readonly Type PhotoAlbum = new Type(8); - public static readonly Type Photo = new Type(9); + [JsonProperty("audio")] + Audio, + [JsonProperty("video")] + Video, + [JsonProperty("photo")] + Photo, + } - private static readonly Dictionary _knownValues = - new Dictionary () + 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()) { - [1] = Movie, - [2] = TvShow, - [3] = Season, - [4] = Episode, - [5] = Artist, - [6] = Album, - [7] = Track, - [8] = PhotoAlbum, - [9] = Photo - }; + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } - private static readonly ConcurrentDictionary _values = - new ConcurrentDictionary(_knownValues); + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); - private Type(long value) - { - Value = value; + if (enumVal is Type) + { + return (Type)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Type"); } - - public long Value { get; } - - public static Type Of(long value) - { - return _values.GetOrAdd(value, _ => new Type(value)); - } - - public static implicit operator Type(long value) => Of(value); - public static implicit operator long(Type type) => type.Value; - - public static Type[] Values() - { - return _values.Values.ToArray(); - } - - public override string ToString() => Value.ToString(); - - public bool IsKnown() - { - return _knownValues.ContainsKey(Value); - } - - public override bool Equals(object? obj) => Equals(obj as Type); - - public bool Equals(Type? other) - { - if (ReferenceEquals(this, other)) return true; - if (other is null) return false; - return string.Equals(Value, other.Value); - } - - public override int GetHashCode() => Value.GetHashCode(); } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UltraBlurColors.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UltraBlurColors.cs index 20fa650..255d3f4 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/UltraBlurColors.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UltraBlurColors.cs @@ -15,16 +15,28 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class UltraBlurColors { - [JsonProperty("topLeft")] - public string TopLeft { get; set; } = default!; - - [JsonProperty("topRight")] - public string TopRight { get; set; } = default!; - - [JsonProperty("bottomRight")] - public string BottomRight { get; set; } = default!; - + /// + /// The color (hex) for the bottom left quadrant. + /// [JsonProperty("bottomLeft")] - public string BottomLeft { get; set; } = default!; + public string? BottomLeft { get; set; } + + /// + /// The color (hex) for the bottom right quadrant. + /// + [JsonProperty("bottomRight")] + public string? BottomRight { get; set; } + + /// + /// The color (hex) for the top left quadrant. + /// + [JsonProperty("topLeft")] + public string? TopLeft { get; set; } + + /// + /// The color (hex) for the top right quadrant. + /// + [JsonProperty("topRight")] + public string? TopRight { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UnmatchRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UnmatchRequest.cs new file mode 100644 index 0000000..532a7dd --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UnmatchRequest.cs @@ -0,0 +1,87 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class UnmatchRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UnmatchResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UnmatchResponse.cs new file mode 100644 index 0000000..7b111c0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UnmatchResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class UnmatchResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UnscrobbleRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UnscrobbleRequest.cs new file mode 100644 index 0000000..afd88dc --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UnscrobbleRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class UnscrobbleRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library` + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=identifier")] + public string Identifier { get; set; } = default!; + + /// + /// The key of the item to rate. This is the `ratingKey` found in metadata items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=key")] + public string? Key { get; set; } + + /// + /// The URI of the item to mark as played. See intro for description of the URIs + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=uri")] + public string? Uri { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UnscrobbleResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UnscrobbleResponse.cs new file mode 100644 index 0000000..609e190 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UnscrobbleResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class UnscrobbleResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UnshuffleRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UnshuffleRequest.cs new file mode 100644 index 0000000..2529b65 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UnshuffleRequest.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class UnshuffleRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the play queue. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playQueueId")] + public long PlayQueueId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UnshuffleResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UnshuffleResponse.cs new file mode 100644 index 0000000..ebaad9c --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UnshuffleResponse.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class UnshuffleResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public MediaContainerWithPlaylistMetadata? MediaContainerWithPlaylistMetadata { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateHubVisibilityRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateHubVisibilityRequest.cs new file mode 100644 index 0000000..fcc7378 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateHubVisibilityRequest.cs @@ -0,0 +1,114 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class UpdateHubVisibilityRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The section ID for the hubs to change + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public long SectionId { get; set; } = default!; + + /// + /// The identifier of the hub to change + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=identifier")] + public string Identifier { get; set; } = default!; + + /// + /// Whether this hub should be displayed in recommended + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=promotedToRecommended")] + public BoolInt? PromotedToRecommended { get; set; } + + /// + /// Whether this hub should be displayed in admin's home + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=promotedToOwnHome")] + public BoolInt? PromotedToOwnHome { get; set; } + + /// + /// Whether this hub should be displayed in shared user's home + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=promotedToSharedHome")] + public BoolInt? PromotedToSharedHome { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateHubVisibilityResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateHubVisibilityResponse.cs new file mode 100644 index 0000000..2f70390 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateHubVisibilityResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class UpdateHubVisibilityResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemArtworkRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemArtworkRequest.cs new file mode 100644 index 0000000..921364d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemArtworkRequest.cs @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class UpdateItemArtworkRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=ids")] + public string Ids { get; set; } = default!; + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=element")] + public PathParamElement Element { get; set; } = default!; + + /// + /// The url of the new asset. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=url")] + public string? Url { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemArtworkResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemArtworkResponse.cs new file mode 100644 index 0000000..368f77f --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemArtworkResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class UpdateItemArtworkResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemsRequest.cs new file mode 100644 index 0000000..4ffafbb --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemsRequest.cs @@ -0,0 +1,165 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class UpdateItemsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The id of the section + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=sectionId")] + public string SectionId { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public string? Type { get; set; } + + /// + /// The filters to apply to determine which items should be modified + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=filters")] + public string? Filters { get; set; } + + /// + /// Set the specified field to a new value + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=field.value")] + public string? FieldValue { get; set; } + + /// + /// Set the specified field to locked (or unlocked if set to 0) + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=field.locked")] + public BoolInt? FieldLocked { get; set; } + + /// + /// This field is treated specially by albums or artists and may be used for implicit reparenting. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=title.value")] + public string? TitleValue { get; set; } + + /// + /// Reparents set of Tracks or Albums - used with album.title.* in the case of tracks + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=artist.title.value")] + public string? ArtistTitleValue { get; set; } + + /// + /// Reparents set of Tracks or Albums - used with album.title.* in the case of tracks + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=artist.title.id")] + public string? ArtistTitleId { get; set; } + + /// + /// Reparents set of Tracks - Must be used in conjunction with artist.title.value or id + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=album.title.value")] + public string? AlbumTitleValue { get; set; } + + /// + /// Reparents set of Tracks - Must be used in conjunction with artist.title.value or id + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=album.title.id")] + public string? AlbumTitleId { get; set; } + + /// + /// Creates tag and associates it with each item in the set. - [idx] links this and the next parameters together + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=tagtype[idx].tag.tag")] + public string? TagtypeIdxTagTag { get; set; } + + /// + /// Here `object` may be text/thumb/art/theme - Optionally used in conjunction with tag.tag, to update association info across the set. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=tagtype[idx].tagging.object")] + public string? TagtypeIdxTaggingObject { get; set; } + + /// + /// Remove comma separated tags from the set of items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=tagtype[].tag.tag-")] + public string? TagtypeTagTag { get; set; } + + /// + /// Remove associations of this type (e.g. genre) from the set of items + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=tagtype[].tag")] + public string? TagtypeTag { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemsResponse.cs new file mode 100644 index 0000000..a7faa46 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdateItemsResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class UpdateItemsResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlayProgressRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlayProgressRequest.cs deleted file mode 100644 index cf1325a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlayProgressRequest.cs +++ /dev/null @@ -1,35 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.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/LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlayProgressResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlayProgressResponse.cs deleted file mode 100644 index a86cf03..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlayProgressResponse.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; - - 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!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlaylistRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlaylistRequest.cs index 7b8419c..b2300ab 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlaylistRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UpdatePlaylistRequest.cs @@ -9,27 +9,82 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Utils; public class UpdatePlaylistRequest { /// - /// the ID of the playlist + /// Indicates the client accepts the indicated media types /// - [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistID")] - public double PlaylistID { get; set; } = default!; + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; /// - /// name of the playlist + /// An opaque identifier unique to the client /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=title")] - public string? Title { get; set; } + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } /// - /// summary description of the playlist + /// The name of the client product /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=summary")] - public string? Summary { get; set; } + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The ID of the playlist + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=playlistId")] + public long PlaylistId { get; set; } = default!; } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UploadPlaylistRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UploadPlaylistRequest.cs index c6ca5c7..88abaae 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/UploadPlaylistRequest.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/UploadPlaylistRequest.cs @@ -9,44 +9,88 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.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.
- /// - ///
+ /// Indicates the client accepts the indicated media types + ///
+ [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// 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!; + public string? Path { get; set; } /// - /// 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.
- /// - ///
+ /// 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 QueryParamForce Force { get; set; } = default!; - - /// - /// Possibly the section ID to upload the playlist to, we are not certain. - /// - [SpeakeasyMetadata("queryParam:style=form,explode=true,name=sectionID")] - public long SectionID { get; set; } = 1; + public BoolInt? Force { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Upscale.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Upscale.cs deleted file mode 100644 index e2ded24..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Upscale.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// allow images to be resized beyond native dimensions. - /// - public enum Upscale - { - Zero = 0, - One = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/User.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/User.cs deleted file mode 100644 index d35abf0..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/User.cs +++ /dev/null @@ -1,95 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using System.Collections.Generic; - - public class User - { - - /// - /// User's unique ID. - /// - public long Id { get; set; } = default!; - - /// - /// User's display name. - /// - public string Title { get; set; } = default!; - - /// - /// User's username. - /// - public string Username { get; set; } = default!; - - /// - /// User's email address. - /// - public string Email { get; set; } = default!; - - /// - /// ID of the user's recommendation playlist. - /// - public string? RecommendationsPlaylistId { get; set; } = null; - - /// - /// URL to the user's avatar image. - /// - public string Thumb { get; set; } = default!; - - public Protected? Protected { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.Protected.Disable; - - public Home? Home { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.Home.Disable; - - public AllowTuners? AllowTuners { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.AllowTuners.Disable; - - public AllowSync? AllowSync { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.AllowSync.Disable; - - public AllowCameraUpload? AllowCameraUpload { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.AllowCameraUpload.Disable; - - public AllowChannels? AllowChannels { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.AllowChannels.Disable; - - public AllowSubtitleAdmin? AllowSubtitleAdmin { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.AllowSubtitleAdmin.Disable; - - /// - /// Filters applied for all content. - /// - public string? FilterAll { get; set; } = null; - - /// - /// Filters applied for movies. - /// - public string? FilterMovies { get; set; } = null; - - /// - /// Filters applied for music. - /// - public string? FilterMusic { get; set; } = null; - - /// - /// Filters applied for photos. - /// - public string? FilterPhotos { get; set; } = null; - - /// - /// Filters applied for television. - /// - public string? FilterTelevision { get; set; } - - public Restricted? Restricted { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.Restricted.Disable; - - /// - /// List of servers owned by the user. - /// - public List Server { get; set; } = default!; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/UserProfile.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/UserProfile.cs deleted file mode 100644 index 4b1468e..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/UserProfile.cs +++ /dev/null @@ -1,52 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class UserProfile - { - - /// - /// If the account has automatically select audio and subtitle tracks enabled - /// - [JsonProperty("autoSelectAudio")] - public bool? AutoSelectAudio { get; set; } = true; - - /// - /// The preferred audio language for the account - /// - [JsonProperty("defaultAudioLanguage", NullValueHandling = NullValueHandling.Include)] - public string? DefaultAudioLanguage { get; set; } - - /// - /// The preferred subtitle language for the account - /// - [JsonProperty("defaultSubtitleLanguage", NullValueHandling = NullValueHandling.Include)] - public string? DefaultSubtitleLanguage { get; set; } - - [JsonProperty("autoSelectSubtitle")] - public AutoSelectSubtitle? AutoSelectSubtitle { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.AutoSelectSubtitle.Disable; - - [JsonProperty("defaultSubtitleAccessibility")] - public DefaultSubtitleAccessibility? DefaultSubtitleAccessibility { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.DefaultSubtitleAccessibility.Disable; - - [JsonProperty("defaultSubtitleForced")] - public DefaultSubtitleForced? DefaultSubtitleForced { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.DefaultSubtitleForced.Disable; - - [JsonProperty("watchedIndicator")] - public WatchedIndicator? WatchedIndicator { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.WatchedIndicator.Disable; - - [JsonProperty("mediaReviewsVisibility")] - public MediaReviewsVisibility? MediaReviewsVisibility { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.MediaReviewsVisibility.Disable; - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsMediaContainer.cs new file mode 100644 index 0000000..23646d0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsMediaContainer.cs @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using System.Collections.Generic; + + /// + /// `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
+ /// + /// + /// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
+ /// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
+ /// + ///
+ ///
+ public class VoiceSearchHubsMediaContainer + { + + [JsonProperty("identifier")] + public string? Identifier { get; set; } + + /// + /// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("offset")] + public long? Offset { get; set; } + + [JsonProperty("size")] + public long? Size { get; set; } + + /// + /// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
+ /// + /// + /// + /// + ///
+ [JsonProperty("totalSize")] + public long? TotalSize { get; set; } + + [JsonProperty("Hub")] + public List? Hub { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsRequest.cs new file mode 100644 index 0000000..7f4ed1a --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsRequest.cs @@ -0,0 +1,102 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Utils; + + public class VoiceSearchHubsRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// The query term + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=query")] + public string Query { get; set; } = default!; + + /// + /// The metadata type to filter by + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=type")] + public long? Type { get; set; } + + /// + /// The number of items to return per hub. 3 if not specified + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=limit")] + public long? Limit { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsResponse.cs new file mode 100644 index 0000000..85d3bf5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsResponse.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Collections.Generic; + using System.Net.Http; + + public class VoiceSearchHubsResponse + { + + /// + /// 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!; + + /// + /// OK + /// + public VoiceSearchHubsResponseBody? Object { get; set; } + + public Dictionary> Headers { get; set; } = default!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsResponseBody.cs new file mode 100644 index 0000000..43a498d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/VoiceSearchHubsResponseBody.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + /// + /// OK + /// + public class VoiceSearchHubsResponseBody + { + + [JsonProperty("MediaContainer")] + public VoiceSearchHubsMediaContainer? MediaContainer { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/WatchedIndicator.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/WatchedIndicator.cs deleted file mode 100644 index ce00ba2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/WatchedIndicator.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - - /// - /// Whether or not media watched indicators are enabled (little orange dot on media) - /// - public enum WatchedIndicator - { - Disable = 0, - Enable = 1, - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/WriteLogResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/WriteLogResponse.cs new file mode 100644 index 0000000..ca7c45b --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/WriteLogResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class WriteLogResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/WriteMessageRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/WriteMessageRequest.cs new file mode 100644 index 0000000..bd8dfe1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/WriteMessageRequest.cs @@ -0,0 +1,112 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + + public class WriteMessageRequest + { + + /// + /// Indicates the client accepts the indicated media types + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=accepts")] + public Accepts? Accepts { get; set; } = LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml; + + /// + /// An opaque identifier unique to the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Client-Identifier")] + public string? ClientIdentifier { get; set; } + + /// + /// The name of the client product + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Product")] + public string? Product { get; set; } + + /// + /// The version of the client application + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Version")] + public string? Version { get; set; } + + /// + /// The platform of the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform")] + public string? Platform { get; set; } + + /// + /// The version of the platform + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Platform-Version")] + public string? PlatformVersion { get; set; } + + /// + /// A relatively friendly name for the client device + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device")] + public string? Device { get; set; } + + /// + /// A potentially less friendly identifier for the device model + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Model")] + public string? Model { get; set; } + + /// + /// The device vendor + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Vendor")] + public string? DeviceVendor { get; set; } + + /// + /// A friendly name for the client + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Device-Name")] + public string? DeviceName { get; set; } + + /// + /// The marketplace on which the client application is distributed + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=X-Plex-Marketplace")] + public string? Marketplace { get; set; } + + /// + /// 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; } + + /// + /// The text of the message to write to the log. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=message")] + public string? Message { get; set; } + + /// + /// A string indicating the source of the message. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=source")] + public string? Source { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/WriteMessageResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/WriteMessageResponse.cs new file mode 100644 index 0000000..e61cdb1 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/WriteMessageResponse.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using System; + using System.Net.Http; + + public class WriteMessageResponse + { + + /// + /// 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!; + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Writer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Writer.cs deleted file mode 100644 index 8be0510..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Writer.cs +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class Writer - { - - /// - /// Unique identifier for the writer. - /// - [JsonProperty("id")] - public int Id { get; set; } = default!; - - /// - /// The filter string used to query this writer. - /// - [JsonProperty("filter")] - public string Filter { get; set; } = default!; - - /// - /// The role of Writer - /// - [JsonProperty("tag")] - public string Tag { get; set; } = default!; - - /// - /// A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification. - /// - [JsonProperty("tagKey")] - public string? TagKey { get; set; } - - /// - /// The absolute URL of the thumbnail image for the writer. - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/PlayQueue.cs b/LukeHagar/PlexAPI/SDK/PlayQueue.cs new file mode 100644 index 0000000..3f90e9d --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/PlayQueue.cs @@ -0,0 +1,1091 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// The playqueue feature within a media provider
+ /// + /// + /// A play queue represents the current list of media for playback. Although queues are persisted by the server, they should be regarded by the user as a fairly lightweight, an ephemeral list of items queued up for playback in a session. There is generally one active queue for each type of media (music, video, photos) that can be added to or destroyed and replaced with a fresh queue.
+ /// Play Queues has a region, which we refer to in this doc (partially for historical reasons) as "Up Next". This region is defined by `playQueueLastAddedItemID` existing on the media container. This follows iTunes' terminology. It is a special region after the currently playing item but before the originally-played items. This enables "Party Mode" listening/viewing, where items can be added on-the-fly, and normal queue playback resumed when completed.
+ /// You can visualize the play queue as a sliding window in the complete list of media queued for playback. This model is important when scaling to larger play queues (e.g. shuffling 40,000 audio tracks). The client only needs visibility into small areas of the queue at any given time, and the server can optimize access in this fashion.
+ /// All created play queues will have an empty "Up Next" area - unless the item is an album and no `key` is provided. In this case the "Up Next" area will be populated by the contents of the album. This is to allow queueing of multiple albums - since the 'Add to Up Next' will insert after all the tracks. This means that If you're creating a PQ from an album, you can only shuffle it if you set `key`. This is due to the above implicit queueing of albums when no `key` is provided as well as the current limitation that you cannot shuffle a PQ with an "Up Next" area.
+ /// The play queue window advances as the server receives timeline requests. The client needs to retrieve the play queue as the “now playing” item changes. There is no play queue API to update the playing item. + ///
+ ///
+ public interface IPlayQueue + { + + /// + /// Create a play queue + /// + /// + /// Makes a new play queue for a device. The source of the playqueue can either be a URI, or a playlist. The response is a media container with the initial items in the queue. Each item in the queue will be a regular item but with `playQueueItemID` - a unique ID since the queue could have repeated items with the same `ratingKey`.
+ /// Note: Either `uri` or `playlistID` must be specified + ///
+ ///
+ Task CreatePlayQueueAsync(CreatePlayQueueRequest request); + + /// + /// Retrieve a play queue + /// + /// + /// Retrieves the play queue, centered at current item. This can be treated as a regular container by play queue-oblivious clients, but they may wish to request a large window onto the queue since they won't know to refresh. + /// + /// + Task GetPlayQueueAsync(GetPlayQueueRequest request); + + /// + /// Add a generator or playlist to a play queue + /// + /// + /// Adds an item to a play queue (e.g. party mode). Increments the version of the play queue. Takes the following parameters (`uri` and `playlistID` are mutually exclusive). Returns the modified play queue. + /// + /// + Task AddToPlayQueueAsync(AddToPlayQueueRequest request); + + /// + /// Clear a play queue + /// + /// + /// Deletes all items in the play queue, and increases the version of the play queue. + /// + /// + Task ClearPlayQueueAsync(ClearPlayQueueRequest request); + + /// + /// Reset a play queue + /// + /// + /// Reset a play queue to the first item being the current item + /// + /// + Task ResetPlayQueueAsync(ResetPlayQueueRequest request); + + /// + /// Shuffle a play queue + /// + /// + /// Shuffle a play queue (or reshuffles if already shuffled). The currently selected item is maintained. Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue. + /// + /// + Task ShuffleAsync(ShuffleRequest request); + + /// + /// Unshuffle a play queue + /// + /// + /// Unshuffles a play queue and restores "natural order". Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue. + /// + /// + Task UnshuffleAsync(UnshuffleRequest request); + + /// + /// Delete an item from a play queue + /// + /// + /// Deletes an item in a play queue. Increments the version of the play queue. Returns the modified play queue. + /// + /// + Task DeletePlayQueueItemAsync(DeletePlayQueueItemRequest request); + + /// + /// Move an item in a play queue + /// + /// + /// Moves an item in a play queue, and increases the version of the play queue. Returns the modified play queue. + /// + /// + Task MovePlayQueueItemAsync(MovePlayQueueItemRequest request); + } + + /// + /// The playqueue feature within a media provider
+ /// + /// + /// A play queue represents the current list of media for playback. Although queues are persisted by the server, they should be regarded by the user as a fairly lightweight, an ephemeral list of items queued up for playback in a session. There is generally one active queue for each type of media (music, video, photos) that can be added to or destroyed and replaced with a fresh queue.
+ /// Play Queues has a region, which we refer to in this doc (partially for historical reasons) as "Up Next". This region is defined by `playQueueLastAddedItemID` existing on the media container. This follows iTunes' terminology. It is a special region after the currently playing item but before the originally-played items. This enables "Party Mode" listening/viewing, where items can be added on-the-fly, and normal queue playback resumed when completed.
+ /// You can visualize the play queue as a sliding window in the complete list of media queued for playback. This model is important when scaling to larger play queues (e.g. shuffling 40,000 audio tracks). The client only needs visibility into small areas of the queue at any given time, and the server can optimize access in this fashion.
+ /// All created play queues will have an empty "Up Next" area - unless the item is an album and no `key` is provided. In this case the "Up Next" area will be populated by the contents of the album. This is to allow queueing of multiple albums - since the 'Add to Up Next' will insert after all the tracks. This means that If you're creating a PQ from an album, you can only shuffle it if you set `key`. This is due to the above implicit queueing of albums when no `key` is provided as well as the current limitation that you cannot shuffle a PQ with an "Up Next" area.
+ /// The play queue window advances as the server receives timeline requests. The client needs to retrieve the play queue as the “now playing” item changes. There is no play queue API to update the playing item. + ///
+ ///
+ public class PlayQueue: IPlayQueue + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public PlayQueue(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task CreatePlayQueueAsync(CreatePlayQueueRequest request) + { + if (request == null) + { + request = new CreatePlayQueueRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playQueues", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "createPlayQueue", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + CreatePlayQueueResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into CreatePlayQueueResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new CreatePlayQueueResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetPlayQueueAsync(GetPlayQueueRequest request) + { + if (request == null) + { + request = new GetPlayQueueRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playQueues/{playQueueId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPlayQueue", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetPlayQueueResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task AddToPlayQueueAsync(AddToPlayQueueRequest request) + { + if (request == null) + { + request = new AddToPlayQueueRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playQueues/{playQueueId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "addToPlayQueue", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new AddToPlayQueueResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ClearPlayQueueAsync(ClearPlayQueueRequest request) + { + if (request == null) + { + request = new ClearPlayQueueRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playQueues/{playQueueId}/items", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "clearPlayQueue", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new ClearPlayQueueResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ResetPlayQueueAsync(ResetPlayQueueRequest request) + { + if (request == null) + { + request = new ResetPlayQueueRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playQueues/{playQueueId}/reset", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "resetPlayQueue", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new ResetPlayQueueResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ShuffleAsync(ShuffleRequest request) + { + if (request == null) + { + request = new ShuffleRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playQueues/{playQueueId}/shuffle", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "shuffle", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new ShuffleResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task UnshuffleAsync(UnshuffleRequest request) + { + if (request == null) + { + request = new UnshuffleRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playQueues/{playQueueId}/unshuffle", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "unshuffle", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new UnshuffleResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeletePlayQueueItemAsync(DeletePlayQueueItemRequest request) + { + if (request == null) + { + request = new DeletePlayQueueItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playQueues/{playQueueId}/items/{playQueueItemId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deletePlayQueueItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new DeletePlayQueueItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task MovePlayQueueItemAsync(MovePlayQueueItemRequest request) + { + if (request == null) + { + request = new MovePlayQueueItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playQueues/{playQueueId}/items/{playQueueItemId}/move", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "movePlayQueueItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new MovePlayQueueItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Playlist.cs b/LukeHagar/PlexAPI/SDK/Playlist.cs new file mode 100644 index 0000000..00c0eb3 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Playlist.cs @@ -0,0 +1,387 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// Media playlists that can be created and played back + /// + public interface IPlaylist + { + + /// + /// List playlists + /// + /// + /// Gets a list of playlists and playlist folders for a user. General filters are permitted, such as `sort=lastViewedAt:desc`. A flat playlist list can be retrieved using `type=15` to limit the collection to just playlists. + /// + /// + Task ListPlaylistsAsync(ListPlaylistsRequest? request = 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(GetPlaylistRequest request); + + /// + /// 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 GetPlaylistItemsAsync(GetPlaylistItemsRequest request); + } + + /// + /// Media playlists that can be created and played back + /// + public class Playlist: IPlaylist + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Playlist(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task ListPlaylistsAsync(ListPlaylistsRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listPlaylists", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new ListPlaylistsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetPlaylistAsync(GetPlaylistRequest request) + { + if (request == null) + { + request = new GetPlaylistRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPlaylist", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithPlaylistMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithPlaylistMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetPlaylistResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithPlaylistMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetPlaylistItemsAsync(GetPlaylistItemsRequest request) + { + if (request == null) + { + request = new GetPlaylistItemsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistId}/items", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPlaylistItems", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithMetadata obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithMetadata.", httpResponse, httpResponseBody, ex); + } + + var response = new GetPlaylistItemsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithMetadata = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Playlists.cs b/LukeHagar/PlexAPI/SDK/Playlists.cs deleted file mode 100644 index 8305a53..0000000 --- a/LukeHagar/PlexAPI/SDK/Playlists.cs +++ /dev/null @@ -1,1298 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK -{ - using LukeHagar.PlexAPI.SDK.Hooks; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using LukeHagar.PlexAPI.SDK.Utils.Retries; - using Newtonsoft.Json; - using System; - using System.Collections.Concurrent; - using System.Collections.Generic; - using System.Linq; - using System.Net.Http; - using System.Net.Http.Headers; - using System.Threading.Tasks; - - /// - /// 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. `server://1234/com.plexapp.plugins.library/library/metadata/1`).
- /// - `playQueueID` - To create a playlist from an existing play queue.
- /// - ///
- ///
- Task CreatePlaylistAsync(CreatePlaylistRequest request); - - /// - /// 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, string? title = null, string? summary = null); - - /// - /// 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, GetPlaylistContentsQueryParamType 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 to create. With a dumb playlist, this adds the specified items to the playlist.
- /// With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist.
- /// - ///
- ///
- Task AddPlaylistContentsAsync(double playlistID, string uri, double? playQueueID = null); - - /// - /// 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, QueryParamForce force, long sectionID = 1); - } - - /// - /// 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.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; - - public Playlists(SDKConfig config) - { - SDKConfiguration = config; - } - - public async Task CreatePlaylistAsync(CreatePlaylistRequest request) - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/playlists", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "createPlaylist", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - CreatePlaylistResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into CreatePlaylistResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new CreatePlaylistResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - CreatePlaylistBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into CreatePlaylistBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new CreatePlaylistBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - CreatePlaylistUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into CreatePlaylistUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new CreatePlaylistUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetPlaylistsAsync(PlaylistType? playlistType = null, QueryParamSmart? smart = null) - { - var request = new GetPlaylistsRequest() - { - PlaylistType = playlistType, - Smart = smart, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/playlists", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPlaylists", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetPlaylistsResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetPlaylistsResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetPlaylistsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetPlaylistsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetPlaylistsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetPlaylistsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetPlaylistsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetPlaylistsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetPlaylistsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetPlaylistAsync(double playlistID) - { - var request = new GetPlaylistRequest() - { - PlaylistID = playlistID, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistID}", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPlaylist", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetPlaylistResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetPlaylistResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetPlaylistResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetPlaylistBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetPlaylistBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetPlaylistBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetPlaylistUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetPlaylistUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetPlaylistUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task DeletePlaylistAsync(double playlistID) - { - var request = new DeletePlaylistRequest() - { - PlaylistID = playlistID, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistID}", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deletePlaylist", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 204) - { - return new DeletePlaylistResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - DeletePlaylistBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into DeletePlaylistBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new DeletePlaylistBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - DeletePlaylistUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into DeletePlaylistUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new DeletePlaylistUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task UpdatePlaylistAsync(double playlistID, string? title = null, string? summary = null) - { - var request = new UpdatePlaylistRequest() - { - PlaylistID = playlistID, - Title = title, - Summary = summary, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistID}", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "updatePlaylist", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new UpdatePlaylistResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - UpdatePlaylistBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into UpdatePlaylistBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new UpdatePlaylistBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - UpdatePlaylistUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into UpdatePlaylistUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new UpdatePlaylistUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetPlaylistContentsAsync(double playlistID, GetPlaylistContentsQueryParamType type) - { - var request = new GetPlaylistContentsRequest() - { - PlaylistID = playlistID, - Type = type, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistID}/items", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPlaylistContents", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetPlaylistContentsResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetPlaylistContentsResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetPlaylistContentsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetPlaylistContentsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetPlaylistContentsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetPlaylistContentsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetPlaylistContentsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetPlaylistContentsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetPlaylistContentsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task ClearPlaylistContentsAsync(double playlistID) - { - var request = new ClearPlaylistContentsRequest() - { - PlaylistID = playlistID, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistID}/items", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "clearPlaylistContents", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new ClearPlaylistContentsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - ClearPlaylistContentsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into ClearPlaylistContentsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new ClearPlaylistContentsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - ClearPlaylistContentsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into ClearPlaylistContentsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new ClearPlaylistContentsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task AddPlaylistContentsAsync(double playlistID, string uri, double? playQueueID = null) - { - var request = new AddPlaylistContentsRequest() - { - PlaylistID = playlistID, - Uri = uri, - PlayQueueID = playQueueID, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/playlists/{playlistID}/items", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "addPlaylistContents", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - AddPlaylistContentsResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into AddPlaylistContentsResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new AddPlaylistContentsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - AddPlaylistContentsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into AddPlaylistContentsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new AddPlaylistContentsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - AddPlaylistContentsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into AddPlaylistContentsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new AddPlaylistContentsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task UploadPlaylistAsync(string path, QueryParamForce force, long sectionID = 1) - { - var request = new UploadPlaylistRequest() - { - Path = path, - Force = force, - SectionID = sectionID, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/playlists/upload", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "uploadPlaylist", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new UploadPlaylistResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - UploadPlaylistBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into UploadPlaylistBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new UploadPlaylistBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - UploadPlaylistUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into UploadPlaylistUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new UploadPlaylistUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Plex.cs b/LukeHagar/PlexAPI/SDK/Plex.cs deleted file mode 100644 index d5eaa6f..0000000 --- a/LukeHagar/PlexAPI/SDK/Plex.cs +++ /dev/null @@ -1,1073 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK -{ - using LukeHagar.PlexAPI.SDK.Hooks; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using LukeHagar.PlexAPI.SDK.Utils.Retries; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - using System.Net.Http.Headers; - using System.Threading.Tasks; - - /// - /// API Calls that perform operations directly against https://Plex.tv
- /// - /// - /// - /// - ///
- public interface IPlex - { - - /// - /// Get Companions Data - /// - /// - /// Get Companions Data - /// - /// - Task GetCompanionsDataAsync(string? serverUrl = null); - - /// - /// Get list of friends of the user logged in - /// - /// - /// Get friends of provided auth token. - /// - /// - Task GetUserFriendsAsync(string? serverUrl = null); - - /// - /// Get Geo Data - /// - /// - /// Returns the geolocation and locale data of the caller - /// - /// - Task GetGeoDataAsync(string? serverUrl = null); - - /// - /// Get Plex Home Data - /// - /// - /// Retrieves the home data for the authenticated user, including details like home ID, name, guest access information, and subscription status. - /// - /// - Task GetHomeDataAsync(); - - /// - /// Get Server Resources - /// - /// - /// Get Plex server access tokens and server connections - /// - /// - Task GetServerResourcesAsync(string clientID, IncludeHttps? includeHttps = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeHttps.Disable, IncludeRelay? includeRelay = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeRelay.Disable, IncludeIPv6? includeIPv6 = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeIPv6.Disable, string? serverUrl = null); - - /// - /// Get a Pin - /// - /// - /// Retrieve a Pin ID from Plex.tv to use for authentication flows - /// - /// - Task GetPinAsync(GetPinRequest request, string? serverUrl = null); - - /// - /// Get Access Token by PinId - /// - /// - /// Retrieve an Access Token from Plex.tv after the Pin has been authenticated - /// - /// - Task GetTokenByPinIdAsync(GetTokenByPinIdRequest request, string? serverUrl = null); - } - - /// - /// API Calls that perform operations directly against https://Plex.tv
- /// - /// - /// - /// - ///
- public class Plex: IPlex - { - /// - /// List of server URLs available for the getCompanionsData operation. - /// - public static readonly string[] GetCompanionsDataServerList = { - "https://plex.tv/api/v2", - }; - /// - /// List of server URLs available for the getUserFriends operation. - /// - public static readonly string[] GetUserFriendsServerList = { - "https://plex.tv/api/v2", - }; - /// - /// List of server URLs available for the getGeoData operation. - /// - public static readonly string[] GetGeoDataServerList = { - "https://plex.tv/api/v2", - }; - /// - /// List of server URLs available for the get-server-resources operation. - /// - public static readonly string[] GetServerResourcesServerList = { - "https://plex.tv/api/v2", - }; - /// - /// List of server URLs available for the getPin operation. - /// - public static readonly string[] GetPinServerList = { - "https://plex.tv/api/v2", - }; - /// - /// List of server URLs available for the getTokenByPinId operation. - /// - public static readonly string[] GetTokenByPinIdServerList = { - "https://plex.tv/api/v2", - }; - public SDKConfig SDKConfiguration { get; private set; } - private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; - - public Plex(SDKConfig config) - { - SDKConfiguration = config; - } - - public async Task GetCompanionsDataAsync(string? serverUrl = null) - { - string baseUrl = Utilities.TemplateUrl(GetCompanionsDataServerList[0], new Dictionary(){ - }); - if (serverUrl != null) - { - baseUrl = serverUrl; - } - - var urlString = baseUrl + "/companions"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCompanionsData", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - List obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull>(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into List.", httpResponse, httpResponseBody, ex); - } - - var response = new GetCompanionsDataResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.ResponseBodies = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetCompanionsDataBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetCompanionsDataBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetCompanionsDataBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetCompanionsDataUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetCompanionsDataUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetCompanionsDataUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetUserFriendsAsync(string? serverUrl = null) - { - string baseUrl = Utilities.TemplateUrl(GetUserFriendsServerList[0], new Dictionary(){ - }); - if (serverUrl != null) - { - baseUrl = serverUrl; - } - - var urlString = baseUrl + "/friends"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getUserFriends", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - List obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull>(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into List.", httpResponse, httpResponseBody, ex); - } - - var response = new GetUserFriendsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Friends = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetUserFriendsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetUserFriendsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetUserFriendsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetUserFriendsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetUserFriendsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetUserFriendsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetGeoDataAsync(string? serverUrl = null) - { - string baseUrl = Utilities.TemplateUrl(GetGeoDataServerList[0], new Dictionary(){ - }); - if (serverUrl != null) - { - baseUrl = serverUrl; - } - - var urlString = baseUrl + "/geoip"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getGeoData", new List { }, null); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetGeoDataGeoData obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetGeoDataGeoData.", httpResponse, httpResponseBody, ex); - } - - var response = new GetGeoDataResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.GeoData = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetGeoDataBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetGeoDataBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetGeoDataBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetGeoDataUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetGeoDataUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetGeoDataUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetHomeDataAsync() - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/home"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getHomeData", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetHomeDataResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetHomeDataResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetHomeDataResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetHomeDataBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetHomeDataBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetHomeDataBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetHomeDataUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetHomeDataUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetHomeDataUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetServerResourcesAsync(string clientID, IncludeHttps? includeHttps = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeHttps.Disable, IncludeRelay? includeRelay = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeRelay.Disable, IncludeIPv6? includeIPv6 = LukeHagar.PlexAPI.SDK.Models.Requests.IncludeIPv6.Disable, string? serverUrl = null) - { - var request = new GetServerResourcesRequest() - { - ClientID = clientID, - IncludeHttps = includeHttps, - IncludeRelay = includeRelay, - IncludeIPv6 = includeIPv6, - }; - string baseUrl = Utilities.TemplateUrl(GetServerResourcesServerList[0], new Dictionary(){ - }); - if (serverUrl != null) - { - baseUrl = serverUrl; - } - var urlString = URLBuilder.Build(baseUrl, "/resources", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - HeaderSerializer.PopulateHeaders(ref httpRequest, request); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-server-resources", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - List obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull>(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into List.", httpResponse, httpResponseBody, ex); - } - - var response = new GetServerResourcesResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.PlexDevices = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerResourcesBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerResourcesBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetServerResourcesBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerResourcesUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerResourcesUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetServerResourcesUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetPinAsync(GetPinRequest request, string? serverUrl = null) - { - string baseUrl = Utilities.TemplateUrl(GetPinServerList[0], new Dictionary(){ - }); - if (serverUrl != null) - { - baseUrl = serverUrl; - } - var urlString = URLBuilder.Build(baseUrl, "/pins", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - HeaderSerializer.PopulateHeaders(ref httpRequest, request); - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPin", new List { }, null); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 201) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetPinAuthPinContainer obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetPinAuthPinContainer.", httpResponse, httpResponseBody, ex); - } - - var response = new GetPinResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.AuthPinContainer = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetPinBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetPinBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetPinBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetTokenByPinIdAsync(GetTokenByPinIdRequest request, string? serverUrl = null) - { - string baseUrl = Utilities.TemplateUrl(GetTokenByPinIdServerList[0], new Dictionary(){ - }); - if (serverUrl != null) - { - baseUrl = serverUrl; - } - var urlString = URLBuilder.Build(baseUrl, "/pins/{pinID}", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - HeaderSerializer.PopulateHeaders(ref httpRequest, request); - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getTokenByPinId", new List { }, null); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTokenByPinIdAuthPinContainer obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTokenByPinIdAuthPinContainer.", httpResponse, httpResponseBody, ex); - } - - var response = new GetTokenByPinIdResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.AuthPinContainer = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTokenByPinIdBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTokenByPinIdBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetTokenByPinIdBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 404) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTokenByPinIdResponseBodyPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTokenByPinIdResponseBodyPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetTokenByPinIdResponseBody(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/PlexAPI.cs b/LukeHagar/PlexAPI/SDK/PlexAPI.cs index 04ff0e8..c811b6d 100644 --- a/LukeHagar/PlexAPI/SDK/PlexAPI.cs +++ b/LukeHagar/PlexAPI/SDK/PlexAPI.cs @@ -21,227 +21,208 @@ namespace LukeHagar.PlexAPI.SDK using System.Threading.Tasks; - /// - /// The protocol to use for the server connection - /// - 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: An Open API Spec for interacting with Plex.tv and Plex Media Server - /// - /// - /// # Plex Media Server OpenAPI Specification
- ///
- /// An Open Source OpenAPI Specification for Plex Media Server
- ///
- /// Automation and SDKs provided by Speakeasy
- ///
- /// ## Documentation
- ///
- /// API Documentation
- ///
- /// ## SDKs
- ///
- /// The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the main specification Repository.
- ///
- /// | Language | Repository | Releases | Other |
- /// | --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- |
- /// | Python | GitHub | PyPI | - |
- /// | JavaScript/TypeScript | GitHub | NPM \ JSR | - |
- /// | Go | GitHub | Releases | GoDoc |
- /// | Ruby | GitHub | Releases | - |
- /// | Swift | GitHub | Releases | - |
- /// | PHP | GitHub | Releases | - |
- /// | Java | GitHub | Releases | - |
- /// | C# | GitHub | Releases | -
- /// - ///
- ///
public interface IPlexAPI { /// - /// Operations against the Plex Media Server System.
+ /// General endpoints for basic PMS operation not specific to any media provider + ///
+ public IGeneral General { get; } + + /// + /// The server can notify clients in real-time of a wide range of events, from library scanning, to preferences being modified, to changes to media, and many other things. This is also the mechanism by which activity progress is reported.
/// /// + ///
+ /// Two protocols for receiving the events are available: EventSource (also known as SSE), and WebSocket.
/// ///
///
- public IServer Server { get; } + public IEvents Events { get; } /// - /// API Calls interacting with Plex Media Server Media
- /// - /// - /// - /// + /// API Operations against the Preferences ///
- public IMedia Media { get; } + public IPreferences Preferences { get; } /// - /// API Calls that perform operations with Plex Media Server Videos
- /// - /// - /// - /// + /// Operations for rating media items (thumbs up/down, star ratings, etc.) ///
- public IVideo Video { get; } + public IRate Rate { 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.
+ /// The actions feature within a media provider + ///
+ public ITimeline Timeline { get; } + + /// + /// Activities provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
/// /// + ///
/// Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity.
- /// Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details:
- /// - They can contain a `progress` (from 0 to 100) marking the percent completion of the activity.
- /// - They must contain an `type` which is used by clients to distinguish the specific activity.
- /// - They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.)
- /// - The may contain a `Response` object which attributes which represent the result of the asynchronous operation.
+ ///
+ /// Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint.
/// ///
///
public IActivities Activities { get; } /// - /// Butler is the task manager of the Plex Media Server Ecosystem.
- /// - /// - /// - /// + /// The butler is responsible for running periodic tasks. Some tasks run daily, others every few days, and some weekly. These includes database maintenance, metadata updating, thumbnail generation, media analysis, and other tasks. ///
public IButler Butler { get; } /// - /// API Calls that perform operations directly against https://Plex.tv
- /// - /// - /// - /// + /// API Operations against the Download Queue ///
- public IPlex Plex { get; } + public IDownloadQueue DownloadQueue { get; } /// - /// Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows.
- /// - /// - /// - /// + /// The hubs within a media provider ///
public IHubs Hubs { get; } /// - /// API Calls that perform search operations with Plex Media Server
- /// - /// - /// - /// + /// The search feature within a media provider ///
public ISearch Search { get; } /// - /// API Calls interacting with Plex Media Server Libraries
- /// - /// - /// - /// + /// Library endpoints which are outside of the Media Provider API. Typically this is manipulation of the library (adding/removing sections, modifying preferences, etc). ///
public ILibrary Library { get; } /// - /// API Calls that perform operations with Plex Media Server Watchlists
+ /// API Operations against the Collections + ///
+ public ICollections Collections { get; } + + /// + /// The DVR provides means to watch and record live TV. This section of endpoints describes how to setup the DVR itself
/// /// /// /// ///
- public IWatchlist Watchlist { get; } + public IDVRs DVRs { get; } /// - /// Submit logs to the Log Handler for Plex Media Server
+ /// The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when
/// /// /// /// ///
+ public IEpg Epg { get; } + + /// + /// LiveTV contains the playback sessions of a channel from a DVR device
+ /// + /// + /// + /// + ///
+ public ILiveTV LiveTV { get; } + + /// + /// Logging mechanism to allow clients to log to the 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").
+ /// Media grabbers provide ways for media to be obtained for a given protocol. The simplest ones are `stream` and `download`. More complex grabbers can have associated devices
/// /// - /// 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.
+ ///
+ /// Network tuners can present themselves on the network using the Simple Service Discovery Protocol and Plex Media Server will discover them. The following XML is an example of the data returned from SSDP. The `deviceType`, `serviceType`, and `serviceId` values must remain as they are in the example in order for PMS to properly discover the device. Other less-obvious fields are described in the parameters section below.
+ ///
+ /// Example SSDP output
+ /// ```
+ /// <root xmlns="urn:schemas-upnp-org:device-1-0">
+ /// <specVersion>
+ /// <major>1</major>
+ /// <minor>0</minor>
+ /// </specVersion>
+ /// <device>
+ /// <deviceType>urn:plex-tv:device:Media:1</deviceType>
+ /// <friendlyName>Turing Hopper 3000</friendlyName>
+ /// <manufacturer>Plex, Inc.</manufacturer>
+ /// <manufacturerURL>https://plex.tv/</manufacturerURL>
+ /// <modelDescription>Turing Hopper 3000 Media Grabber</modelDescription>
+ /// <modelName>Plex Media Grabber</modelName>
+ /// <modelNumber>1</modelNumber>
+ /// <modelURL>https://plex.tv</modelURL>
+ /// <UDN>uuid:42fde8e4-93b6-41e5-8a63-12d848655811</UDN>
+ /// <serviceList>
+ /// <service>
+ /// <URLBase>http://10.0.0.5:8088</URLBase>
+ /// <serviceType>urn:plex-tv:service:MediaGrabber:1</serviceType>
+ /// <serviceId>urn:plex-tv:serviceId:MediaGrabber</serviceId>
+ /// </service>
+ /// </serviceList>
+ /// </device>
+ /// </root>
+ /// ```
+ ///
+ /// - UDN: (string) A UUID for the device. This should be unique across models of a device at minimum.
+ /// - URLBase: (string) The base HTTP URL for the device from which all of the other endpoints are hosted.
/// ///
///
- public IPlaylists Playlists { get; } + public IDevices Devices { get; } /// - /// API Calls regarding authentication for Plex Media Server
- /// - /// - /// - /// + /// Media providers are the starting points for the entire Plex Media Server media library API. It defines the paths for the groups of endpoints. The `/media/providers` should be the only hard-coded path in clients when accessing the media library. Non-media library endpoints are outside the scope of the media provider. See the description in See the section in API Info for more information on how to use media providers. ///
- public IAuthentication Authentication { get; } + public IProvider Provider { get; } /// - /// API Calls that perform operations with Plex Media Server Statistics
+ /// Subscriptions determine which media will be recorded and the criteria for selecting an airing when multiple are available
/// /// /// /// ///
- public IStatistics Statistics { get; } + public ISubscriptions Subscriptions { get; } /// - /// API Calls that perform search operations with Plex Media Server Sessions
+ /// API Operations against the Transcoder + ///
+ public ITranscoder Transcoder { get; } + + /// + /// Media playlists that can be created and played back + /// + public IPlaylist Playlist { get; } + + /// + /// Endpoints for manipulating playlists. + /// + public ILibraryPlaylists LibraryPlaylists { get; } + + /// + /// The playqueue feature within a media provider
/// /// - /// + /// A play queue represents the current list of media for playback. Although queues are persisted by the server, they should be regarded by the user as a fairly lightweight, an ephemeral list of items queued up for playback in a session. There is generally one active queue for each type of media (music, video, photos) that can be added to or destroyed and replaced with a fresh queue.
+ /// Play Queues has a region, which we refer to in this doc (partially for historical reasons) as "Up Next". This region is defined by `playQueueLastAddedItemID` existing on the media container. This follows iTunes' terminology. It is a special region after the currently playing item but before the originally-played items. This enables "Party Mode" listening/viewing, where items can be added on-the-fly, and normal queue playback resumed when completed.
+ /// You can visualize the play queue as a sliding window in the complete list of media queued for playback. This model is important when scaling to larger play queues (e.g. shuffling 40,000 audio tracks). The client only needs visibility into small areas of the queue at any given time, and the server can optimize access in this fashion.
+ /// All created play queues will have an empty "Up Next" area - unless the item is an album and no `key` is provided. In this case the "Up Next" area will be populated by the contents of the album. This is to allow queueing of multiple albums - since the 'Add to Up Next' will insert after all the tracks. This means that If you're creating a PQ from an album, you can only shuffle it if you set `key`. This is due to the above implicit queueing of albums when no `key` is provided as well as the current limitation that you cannot shuffle a PQ with an "Up Next" area.
+ /// The play queue window advances as the server receives timeline requests. The client needs to retrieve the play queue as the “now playing” item changes. There is no play queue API to update the playing item. ///
///
- public ISessions Sessions { get; } + public IPlayQueue PlayQueue { get; } + + /// + /// Service provided to compute UltraBlur colors and images. + /// + public IUltraBlur UltraBlur { get; } + + /// + /// The status endpoints give you information about current playbacks, play history, and even terminating sessions. + /// + public IStatus Status { get; } /// /// This describes the API for searching and applying updates to the Plex Media Server.
@@ -252,83 +233,76 @@ namespace LukeHagar.PlexAPI.SDK /// ///
public IUpdater Updater { get; } - public IUsers Users { get; } + + /// + /// The actual content of the media provider + /// + public IContent Content { get; } + + /// + /// Endpoints for manipulating collections. In addition to these endpoints, `/library/collections/:collectionId/X` will be rerouted to `/library/metadata/:collectionId/X` and respond to those endpoints as well. + /// + public ILibraryCollections LibraryCollections { get; } } - /// - /// Plex-API: An Open API Spec for interacting with Plex.tv and Plex Media Server - /// - /// - /// # Plex Media Server OpenAPI Specification
- ///
- /// An Open Source OpenAPI Specification for Plex Media Server
- ///
- /// Automation and SDKs provided by Speakeasy
- ///
- /// ## Documentation
- ///
- /// API Documentation
- ///
- /// ## SDKs
- ///
- /// The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the main specification Repository.
- ///
- /// | Language | Repository | Releases | Other |
- /// | --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- |
- /// | Python | GitHub | PyPI | - |
- /// | JavaScript/TypeScript | GitHub | NPM \ JSR | - |
- /// | Go | GitHub | Releases | GoDoc |
- /// | Ruby | GitHub | Releases | - |
- /// | Swift | GitHub | Releases | - |
- /// | PHP | GitHub | Releases | - |
- /// | Java | GitHub | Releases | - |
- /// | C# | GitHub | Releases | -
- /// - ///
- ///
public class PlexAPI: IPlexAPI { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; - public IServer Server { get; private set; } - public IMedia Media { get; private set; } - public IVideo Video { get; private set; } + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + public IGeneral General { get; private set; } + public IEvents Events { get; private set; } + public IPreferences Preferences { get; private set; } + public IRate Rate { get; private set; } + public ITimeline Timeline { get; private set; } public IActivities Activities { get; private set; } public IButler Butler { get; private set; } - public IPlex Plex { get; private set; } + public IDownloadQueue DownloadQueue { get; private set; } public IHubs Hubs { get; private set; } public ISearch Search { get; private set; } public ILibrary Library { get; private set; } - public IWatchlist Watchlist { get; private set; } + public ICollections Collections { get; private set; } + public IDVRs DVRs { get; private set; } + public IEpg Epg { get; private set; } + public ILiveTV LiveTV { get; private set; } public ILog Log { get; private set; } - public IPlaylists Playlists { get; private set; } - public IAuthentication Authentication { get; private set; } - public IStatistics Statistics { get; private set; } - public ISessions Sessions { get; private set; } + public IDevices Devices { get; private set; } + public IProvider Provider { get; private set; } + public ISubscriptions Subscriptions { get; private set; } + public ITranscoder Transcoder { get; private set; } + public IPlaylist Playlist { get; private set; } + public ILibraryPlaylists LibraryPlaylists { get; private set; } + public IPlayQueue PlayQueue { get; private set; } + public IUltraBlur UltraBlur { get; private set; } + public IStatus Status { get; private set; } public IUpdater Updater { get; private set; } - public IUsers Users { get; private set; } + public IContent Content { get; private set; } + public ILibraryCollections LibraryCollections { get; private set; } public PlexAPI(SDKConfig config) { SDKConfiguration = config; InitHooks(); - Server = new Server(SDKConfiguration); + General = new General(SDKConfiguration); - Media = new Media(SDKConfiguration); + Events = new Events(SDKConfiguration); - Video = new Video(SDKConfiguration); + Preferences = new Preferences(SDKConfiguration); + + Rate = new Rate(SDKConfiguration); + + Timeline = new Timeline(SDKConfiguration); Activities = new Activities(SDKConfiguration); Butler = new Butler(SDKConfiguration); - Plex = new Plex(SDKConfiguration); + DownloadQueue = new DownloadQueue(SDKConfiguration); Hubs = new Hubs(SDKConfiguration); @@ -336,24 +310,70 @@ namespace LukeHagar.PlexAPI.SDK Library = new Library(SDKConfiguration); - Watchlist = new Watchlist(SDKConfiguration); + Collections = new Collections(SDKConfiguration); + + DVRs = new DVRs(SDKConfiguration); + + Epg = new Epg(SDKConfiguration); + + LiveTV = new LiveTV(SDKConfiguration); Log = new Log(SDKConfiguration); - Playlists = new Playlists(SDKConfiguration); + Devices = new Devices(SDKConfiguration); - Authentication = new Authentication(SDKConfiguration); + Provider = new Provider(SDKConfiguration); - Statistics = new Statistics(SDKConfiguration); + Subscriptions = new Subscriptions(SDKConfiguration); - Sessions = new Sessions(SDKConfiguration); + Transcoder = new Transcoder(SDKConfiguration); + + Playlist = new Playlist(SDKConfiguration); + + LibraryPlaylists = new LibraryPlaylists(SDKConfiguration); + + PlayQueue = new PlayQueue(SDKConfiguration); + + UltraBlur = new UltraBlur(SDKConfiguration); + + Status = new Status(SDKConfiguration); Updater = new Updater(SDKConfiguration); - Users = new Users(SDKConfiguration); + Content = new Content(SDKConfiguration); + + LibraryCollections = new LibraryCollections(SDKConfiguration); } - public PlexAPI(string? accessToken = null, Func? accessTokenSource = null, int? serverIndex = null, ServerProtocol? protocol = null, string? ip = null, string? port = null, string? serverUrl = null, Dictionary? urlParams = null, ISpeakeasyHttpClient? client = null, RetryConfig? retryConfig = null) + /// + /// Initializes a new instance of the SDK with optional configuration parameters. + /// + /// The security configuration to use for API requests. If provided, this will be used as a static security configuration. + /// A function that returns the security configuration dynamically. This takes precedence over the static security parameter if both are provided. + /// Indicates the client accepts the indicated media types + /// An opaque identifier unique to the client + /// The name of the client product + /// The version of the client application + /// The platform of the client + /// The version of the platform + /// A relatively friendly name for the client device + /// A potentially less friendly identifier for the device model + /// The device vendor + /// A friendly name for the client + /// The marketplace on which the client application is distributed + /// The index of the server to use from the predefined server list. Must be between 0 and the length of the server list. Defaults to 0 if not specified. + /// Server variable for identifier. This will replace the {identifier} placeholder in server URLs. + /// Server variable for IP-description. This will replace the {IP-description} placeholder in server URLs. + /// Server variable for port. This will replace the {port} placeholder in server URLs. + /// Server variable for protocol. This will replace the {protocol} placeholder in server URLs. + /// Server variable for host. This will replace the {host} placeholder in server URLs. + /// Server variable for full_server_url. This will replace the {full_server_url} placeholder in server URLs. + /// A custom server URL to use instead of the predefined server list. If provided with urlParams, the URL will be templated with the provided parameters. + /// A dictionary of parameters to use for templating the serverUrl. Only used when serverUrl is provided. + /// A custom HTTP client implementation to use for making API requests. If not provided, the default SpeakeasyHttpClient will be used. + /// Configuration for retry behavior when API requests fail. Defines retry strategies, backoff policies, and maximum retry attempts. + /// Thrown when the serverIndex is out of range (less than 0 or greater than or equal to the server list length). + public PlexAPI(string? token = null, Func? tokenSource = null, Accepts? accepts = null, string? clientIdentifier = null, string? product = null, string? version = null, string? platform = null, string? platformVersion = null, string? device = null, string? model = null, string? deviceVendor = null, string? deviceName = null, string? marketplace = null, int? serverIndex = null, string? identifier = null, string? ipDescription = null, string? port = null, string? protocol = null, string? host = null, string? fullServerUrl = null, string? serverUrl = null, Dictionary? urlParams = null, ISpeakeasyHttpClient? client = null, RetryConfig? retryConfig = null) { if (serverIndex != null) { @@ -372,31 +392,42 @@ namespace LukeHagar.PlexAPI.SDK } Func? _securitySource = null; - if(accessTokenSource != null) + if(tokenSource != null) { - _securitySource = () => new LukeHagar.PlexAPI.SDK.Models.Components.Security() { AccessToken = accessTokenSource() }; + _securitySource = () => new LukeHagar.PlexAPI.SDK.Models.Components.Security() { Token = tokenSource() }; } - else if(accessToken != null) + else if(token != null) { - _securitySource = () => new LukeHagar.PlexAPI.SDK.Models.Components.Security() { AccessToken = accessToken }; + _securitySource = () => new LukeHagar.PlexAPI.SDK.Models.Components.Security() { Token = token }; } SDKConfiguration = new SDKConfig(client) { + Accepts = accepts, + ClientIdentifier = clientIdentifier, + Product = product, + Version = version, + Platform = platform, + PlatformVersion = platformVersion, + Device = device, + Model = model, + DeviceVendor = deviceVendor, + DeviceName = deviceName, + Marketplace = marketplace, ServerIndex = serverIndex == null ? 0 : serverIndex.Value, ServerUrl = serverUrl == null ? "" : serverUrl, SecuritySource = _securitySource, RetryConfig = retryConfig }; - if (protocol != null) + if (identifier != null) { - SDKConfiguration.SetServerVariable("protocol", ServerProtocolExtension.Value(protocol.Value)); + SDKConfiguration.SetServerVariable("identifier", identifier); } - if (ip != null) + if (ipDescription != null) { - SDKConfiguration.SetServerVariable("ip", ip); + SDKConfiguration.SetServerVariable("IP-description", ipDescription); } if (port != null) @@ -404,19 +435,38 @@ namespace LukeHagar.PlexAPI.SDK SDKConfiguration.SetServerVariable("port", port); } + if (protocol != null) + { + SDKConfiguration.SetServerVariable("protocol", protocol); + } + + if (host != null) + { + SDKConfiguration.SetServerVariable("host", host); + } + + if (fullServerUrl != null) + { + SDKConfiguration.SetServerVariable("full_server_url", fullServerUrl); + } + InitHooks(); - Server = new Server(SDKConfiguration); + General = new General(SDKConfiguration); - Media = new Media(SDKConfiguration); + Events = new Events(SDKConfiguration); - Video = new Video(SDKConfiguration); + Preferences = new Preferences(SDKConfiguration); + + Rate = new Rate(SDKConfiguration); + + Timeline = new Timeline(SDKConfiguration); Activities = new Activities(SDKConfiguration); Butler = new Butler(SDKConfiguration); - Plex = new Plex(SDKConfiguration); + DownloadQueue = new DownloadQueue(SDKConfiguration); Hubs = new Hubs(SDKConfiguration); @@ -424,21 +474,39 @@ namespace LukeHagar.PlexAPI.SDK Library = new Library(SDKConfiguration); - Watchlist = new Watchlist(SDKConfiguration); + Collections = new Collections(SDKConfiguration); + + DVRs = new DVRs(SDKConfiguration); + + Epg = new Epg(SDKConfiguration); + + LiveTV = new LiveTV(SDKConfiguration); Log = new Log(SDKConfiguration); - Playlists = new Playlists(SDKConfiguration); + Devices = new Devices(SDKConfiguration); - Authentication = new Authentication(SDKConfiguration); + Provider = new Provider(SDKConfiguration); - Statistics = new Statistics(SDKConfiguration); + Subscriptions = new Subscriptions(SDKConfiguration); - Sessions = new Sessions(SDKConfiguration); + Transcoder = new Transcoder(SDKConfiguration); + + Playlist = new Playlist(SDKConfiguration); + + LibraryPlaylists = new LibraryPlaylists(SDKConfiguration); + + PlayQueue = new PlayQueue(SDKConfiguration); + + UltraBlur = new UltraBlur(SDKConfiguration); + + Status = new Status(SDKConfiguration); Updater = new Updater(SDKConfiguration); - Users = new Users(SDKConfiguration); + Content = new Content(SDKConfiguration); + + LibraryCollections = new LibraryCollections(SDKConfiguration); } private void InitHooks() @@ -470,15 +538,15 @@ namespace LukeHagar.PlexAPI.SDK return this; } - public SDKBuilder WithProtocol(ServerProtocol protocol) + public SDKBuilder WithIdentifier(string identifier) { - _sdkConfig.SetServerVariable("protocol", ServerProtocolExtension.Value(protocol)); + _sdkConfig.SetServerVariable("identifier", identifier); return this; } - public SDKBuilder WithIp(string ip) + public SDKBuilder WithIPDescription(string ipDescription) { - _sdkConfig.SetServerVariable("ip", ip); + _sdkConfig.SetServerVariable("IP-description", ipDescription); return this; } @@ -488,6 +556,24 @@ namespace LukeHagar.PlexAPI.SDK return this; } + public SDKBuilder WithProtocol(string protocol) + { + _sdkConfig.SetServerVariable("protocol", protocol); + return this; + } + + public SDKBuilder WithHost(string host) + { + _sdkConfig.SetServerVariable("host", host); + return this; + } + + public SDKBuilder WithFullServerUrl(string fullServerUrl) + { + _sdkConfig.SetServerVariable("full_server_url", fullServerUrl); + return this; + } + public SDKBuilder WithServerUrl(string serverUrl, Dictionary? serverVariables = null) { if (serverVariables != null) @@ -498,15 +584,81 @@ namespace LukeHagar.PlexAPI.SDK return this; } - public SDKBuilder WithAccessTokenSource(Func accessTokenSource) + public SDKBuilder WithAccepts(Accepts accepts) { - _sdkConfig.SecuritySource = () => new LukeHagar.PlexAPI.SDK.Models.Components.Security() { AccessToken = accessTokenSource() }; + _sdkConfig.Accepts = accepts; return this; } - public SDKBuilder WithAccessToken(string accessToken) + public SDKBuilder WithClientIdentifier(string clientIdentifier) { - _sdkConfig.SecuritySource = () => new LukeHagar.PlexAPI.SDK.Models.Components.Security() { AccessToken = accessToken }; + _sdkConfig.ClientIdentifier = clientIdentifier; + return this; + } + + public SDKBuilder WithProduct(string product) + { + _sdkConfig.Product = product; + return this; + } + + public SDKBuilder WithVersion(string version) + { + _sdkConfig.Version = version; + return this; + } + + public SDKBuilder WithPlatform(string platform) + { + _sdkConfig.Platform = platform; + return this; + } + + public SDKBuilder WithPlatformVersion(string platformVersion) + { + _sdkConfig.PlatformVersion = platformVersion; + return this; + } + + public SDKBuilder WithDevice(string device) + { + _sdkConfig.Device = device; + return this; + } + + public SDKBuilder WithModel(string model) + { + _sdkConfig.Model = model; + return this; + } + + public SDKBuilder WithDeviceVendor(string deviceVendor) + { + _sdkConfig.DeviceVendor = deviceVendor; + return this; + } + + public SDKBuilder WithDeviceName(string deviceName) + { + _sdkConfig.DeviceName = deviceName; + return this; + } + + public SDKBuilder WithMarketplace(string marketplace) + { + _sdkConfig.Marketplace = marketplace; + return this; + } + + public SDKBuilder WithTokenSource(Func tokenSource) + { + _sdkConfig.SecuritySource = () => new LukeHagar.PlexAPI.SDK.Models.Components.Security() { Token = tokenSource() }; + return this; + } + + public SDKBuilder WithToken(string token) + { + _sdkConfig.SecuritySource = () => new LukeHagar.PlexAPI.SDK.Models.Components.Security() { Token = token }; return this; } diff --git a/LukeHagar/PlexAPI/SDK/Preferences.cs b/LukeHagar/PlexAPI/SDK/Preferences.cs new file mode 100644 index 0000000..68c9860 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Preferences.cs @@ -0,0 +1,352 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// API Operations against the Preferences + /// + public interface IPreferences + { + + /// + /// Get all preferences + /// + /// + /// Get the list of all preferences + /// + /// + Task GetAllPreferencesAsync(); + + /// + /// Set preferences + /// + /// + /// Set a set of preferences in query parameters + /// + /// + Task SetPreferencesAsync(SetPreferencesRequest request); + + /// + /// Get a preferences + /// + /// + /// Get a single preference and value + /// + /// + Task GetPreferenceAsync(GetPreferenceRequest? request = null); + } + + /// + /// API Operations against the Preferences + /// + public class Preferences: IPreferences + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Preferences(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task GetAllPreferencesAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/:/prefs"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getAllPreferences", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithSettings obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithSettings.", httpResponse, httpResponseBody, ex); + } + + var response = new GetAllPreferencesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithSettings = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task SetPreferencesAsync(SetPreferencesRequest request) + { + if (request == null) + { + request = new SetPreferencesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/:/prefs", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "setPreferences", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new SetPreferencesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetPreferenceAsync(GetPreferenceRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/:/prefs/get", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getPreference", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithSettings obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithSettings.", httpResponse, httpResponseBody, ex); + } + + var response = new GetPreferenceResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithSettings = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Provider.cs b/LukeHagar/PlexAPI/SDK/Provider.cs new file mode 100644 index 0000000..e266cc0 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Provider.cs @@ -0,0 +1,418 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// Media providers are the starting points for the entire Plex Media Server media library API. It defines the paths for the groups of endpoints. The `/media/providers` should be the only hard-coded path in clients when accessing the media library. Non-media library endpoints are outside the scope of the media provider. See the description in See the section in API Info for more information on how to use media providers. + /// + public interface IProvider + { + + /// + /// Get the list of available media providers + /// + /// + /// Get the list of all available media providers for this PMS. This will generally include the library provider and possibly EPG if DVR is set up. + /// + /// + Task ListProvidersAsync(); + + /// + /// Add a media provider + /// + /// + /// This endpoint registers a media provider with the server. Once registered, the media server acts as a reverse proxy to the provider, allowing both local and remote providers to work. + /// + /// + Task AddProviderAsync(AddProviderRequest request); + + /// + /// Refresh media providers + /// + /// + /// Refresh all known media providers. This is useful in case a provider has updated features. + /// + /// + Task RefreshProvidersAsync(); + + /// + /// Delete a media provider + /// + /// + /// Deletes a media provider with the given id + /// + /// + Task DeleteMediaProviderAsync(DeleteMediaProviderRequest request); + } + + /// + /// Media providers are the starting points for the entire Plex Media Server media library API. It defines the paths for the groups of endpoints. The `/media/providers` should be the only hard-coded path in clients when accessing the media library. Non-media library endpoints are outside the scope of the media provider. See the description in See the section in API Info for more information on how to use media providers. + /// + public class Provider: IProvider + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Provider(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task ListProvidersAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/media/providers"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listProviders", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ListProvidersResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ListProvidersResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new ListProvidersResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task AddProviderAsync(AddProviderRequest request) + { + if (request == null) + { + request = new AddProviderRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/providers", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "addProvider", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new AddProviderResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task RefreshProvidersAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/media/providers/refresh"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "refreshProviders", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new RefreshProvidersResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteMediaProviderAsync(DeleteMediaProviderRequest request) + { + if (request == null) + { + request = new DeleteMediaProviderRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/providers/{provider}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteMediaProvider", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteMediaProviderResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Rate.cs b/LukeHagar/PlexAPI/SDK/Rate.cs new file mode 100644 index 0000000..15f7862 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Rate.cs @@ -0,0 +1,144 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// Operations for rating media items (thumbs up/down, star ratings, etc.) + /// + public interface IRate + { + + /// + /// Rate an item + /// + /// + /// Set the rating on an item.
+ /// This API does respond to the GET verb but applications should use PUT + ///
+ ///
+ Task SetRatingAsync(SetRatingRequest request); + } + + /// + /// Operations for rating media items (thumbs up/down, star ratings, etc.) + /// + public class Rate: IRate + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Rate(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task SetRatingAsync(SetRatingRequest request) + { + if (request == null) + { + request = new SetRatingRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/:/rate", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "setRating", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new SetRatingResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/SDKConfig.cs b/LukeHagar/PlexAPI/SDK/SDKConfig.cs index c16a111..43e3b8e 100644 --- a/LukeHagar/PlexAPI/SDK/SDKConfig.cs +++ b/LukeHagar/PlexAPI/SDK/SDKConfig.cs @@ -23,13 +23,26 @@ namespace LukeHagar.PlexAPI.SDK /// List of server URLs available to the SDK. /// public static readonly string[] ServerList = { - "{protocol}://{ip}:{port}", + "https://{IP-description}.{identifier}.plex.direct:{port}", + "{protocol}://{host}:{port}", + "https://{full_server_url}", }; public ISpeakeasyHttpClient Client; public string ServerUrl; public int ServerIndex; public List> ServerVariables; + public Accepts? Accepts; + public string? ClientIdentifier; + public string? Product; + public string? Version; + public string? Platform; + public string? PlatformVersion; + public string? Device; + public string? Model; + public string? DeviceVendor; + public string? DeviceName; + public string? Marketplace; public string UserAgent; public Func? SecuritySource; public SDKHooks Hooks; @@ -47,12 +60,33 @@ namespace LukeHagar.PlexAPI.SDK { new Dictionary() { - {"protocol", "https"}, - {"ip", "10.10.10.47"}, + {"identifier", "0123456789abcdef0123456789abcdef"}, + {"IP-description", "1-2-3-4"}, {"port", "32400"}, }, + new Dictionary() + { + {"protocol", "http"}, + {"host", "localhost"}, + {"port", "32400"}, + }, + new Dictionary() + { + {"full_server_url", "http://localhost:32400"}, + }, }; - UserAgent = "speakeasy-sdk/csharp 0.17.0 2.698.4 0.0.3 LukeHagar.PlexAPI.SDK"; + Accepts = null; + ClientIdentifier = null; + Product = null; + Version = null; + Platform = null; + PlatformVersion = null; + Device = null; + Model = null; + DeviceVendor = null; + DeviceName = null; + Marketplace = null; + UserAgent = "speakeasy-sdk/csharp 0.18.0 2.730.5 1.1.1 LukeHagar.PlexAPI.SDK"; SecuritySource = null; Hooks = new SDKHooks(); RetryConfig = null; diff --git a/LukeHagar/PlexAPI/SDK/Search.cs b/LukeHagar/PlexAPI/SDK/Search.cs index 6e2d087..073a755 100644 --- a/LukeHagar/PlexAPI/SDK/Search.cs +++ b/LukeHagar/PlexAPI/SDK/Search.cs @@ -23,19 +23,17 @@ namespace LukeHagar.PlexAPI.SDK using System.Threading.Tasks; /// - /// API Calls that perform search operations with Plex Media Server
- /// - /// - /// - /// + /// The search feature within a media provider ///
public interface ISearch { /// - /// Perform a search + /// Search Hub /// /// + /// Perform a search and get the result as hubs
+ ///
/// This endpoint performs a search across all library sections, or a single section, and returns matches as hubs, split up by type. It performs spell checking, looks for partial matches, and orders the hubs based on quality of results. In addition, based on matches, it will return other related matches (e.g. for a genre match, it may return movies in that genre, or for an actor match, movies with that actor).
///
/// In the response's items, the following extra attributes are returned to further describe or disambiguate the result:
@@ -51,71 +49,70 @@ namespace LukeHagar.PlexAPI.SDK /// ///
///
- Task PerformSearchAsync(string query, double? sectionId = null, double? limit = 3D); + Task SearchHubsAsync(SearchHubsRequest request); /// - /// Perform a voice search + /// Voice Search Hub /// /// - /// 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.
+ /// Perform a search tailored to voice input and get the result as hubs
+ ///
+ /// This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. It uses a Levenshtein distance 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 = 3D); - - /// - /// Get Search Results - /// - /// - /// This will search the database for the string provided. - /// - /// - Task GetSearchResultsAsync(string query); + Task VoiceSearchHubsAsync(VoiceSearchHubsRequest request); } /// - /// API Calls that perform search operations with Plex Media Server
- /// - /// - /// - /// + /// The search feature within a media provider ///
public class Search: ISearch { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; public Search(SDKConfig config) { SDKConfiguration = config; } - public async Task PerformSearchAsync(string query, double? sectionId = null, double? limit = 3D) + public async Task SearchHubsAsync(SearchHubsRequest request) { - var request = new PerformSearchRequest() + if (request == null) { - Query = query, - SectionId = sectionId, - Limit = limit, - }; + request = new SearchHubsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); var urlString = URLBuilder.Build(baseUrl, "/hubs/search", request); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "performSearch", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "searchHubs", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -125,241 +122,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new PerformSearchResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - PerformSearchBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into PerformSearchBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new PerformSearchBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - PerformSearchUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into PerformSearchUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new PerformSearchUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task PerformVoiceSearchAsync(string query, double? sectionId = null, double? limit = 3D) - { - var request = new PerformVoiceSearchRequest() - { - Query = query, - SectionId = sectionId, - Limit = limit, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/hubs/search/voice", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "performVoiceSearch", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new PerformVoiceSearchResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - PerformVoiceSearchBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into PerformVoiceSearchBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new PerformVoiceSearchBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - PerformVoiceSearchUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into PerformVoiceSearchUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new PerformVoiceSearchUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetSearchResultsAsync(string query) - { - var request = new GetSearchResultsRequest() - { - Query = query, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/search", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSearchResults", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -390,17 +153,17 @@ namespace LukeHagar.PlexAPI.SDK if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSearchResultsResponseBody obj; + SearchHubsResponseBody obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetSearchResultsResponseBody.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into SearchHubsResponseBody.", httpResponse, httpResponseBody, ex); } - var response = new GetSearchResultsResponse() + var response = new SearchHubsResponse() { StatusCode = responseStatusCode, ContentType = contentType, @@ -412,49 +175,112 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 400) + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task VoiceSearchHubsAsync(VoiceSearchHubsRequest request) + { + if (request == null) + { + request = new VoiceSearchHubsRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/hubs/search/voice", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "voiceSearchHubs", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) { if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSearchResultsBadRequestPayload payload; + VoiceSearchHubsResponseBody obj; try { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into GetSearchResultsBadRequestPayload.", httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into VoiceSearchHubsResponseBody.", httpResponse, httpResponseBody, ex); } - payload.RawResponse = httpResponse; - throw new GetSearchResultsBadRequest(payload, httpResponse, httpResponseBody); + var response = new VoiceSearchHubsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; } throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSearchResultsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSearchResultsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetSearchResultsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } diff --git a/LukeHagar/PlexAPI/SDK/Server.cs b/LukeHagar/PlexAPI/SDK/Server.cs deleted file mode 100644 index 45848ed..0000000 --- a/LukeHagar/PlexAPI/SDK/Server.cs +++ /dev/null @@ -1,1277 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK -{ - using LukeHagar.PlexAPI.SDK.Hooks; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using LukeHagar.PlexAPI.SDK.Utils.Retries; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - using System.Net.Http.Headers; - using System.Threading.Tasks; - - /// - /// Operations against the Plex Media Server System.
- /// - /// - /// - /// - ///
- public interface IServer - { - - /// - /// Get Server Capabilities - /// - /// - /// Get 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 - /// - /// - /// This request is useful to determine if the server is online or offline - /// - /// - 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); - - /// - /// Get Media Providers - /// - /// - /// Retrieves media providers and their features from the Plex server. - /// - /// - Task GetMediaProvidersAsync(string xPlexToken); - - /// - /// 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.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; - - public Server(SDKConfig config) - { - SDKConfiguration = config; - } - - public async Task GetServerCapabilitiesAsync() - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getServerCapabilities", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerCapabilitiesResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerCapabilitiesResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetServerCapabilitiesResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerCapabilitiesBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerCapabilitiesBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetServerCapabilitiesBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerCapabilitiesUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerCapabilitiesUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetServerCapabilitiesUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetServerPreferencesAsync() - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/:/prefs"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getServerPreferences", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerPreferencesResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerPreferencesResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetServerPreferencesResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerPreferencesBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerPreferencesBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetServerPreferencesBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerPreferencesUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerPreferencesUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetServerPreferencesUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetAvailableClientsAsync() - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/clients"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getAvailableClients", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetAvailableClientsResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetAvailableClientsResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetAvailableClientsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetAvailableClientsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetAvailableClientsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetAvailableClientsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetAvailableClientsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetAvailableClientsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetAvailableClientsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetDevicesAsync() - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/devices"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getDevices", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetDevicesResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetDevicesResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetDevicesResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetDevicesBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetDevicesBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetDevicesBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetDevicesUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetDevicesUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetDevicesUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetServerIdentityAsync() - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/identity"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-server-identity", new List { }, null); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 408 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerIdentityResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerIdentityResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetServerIdentityResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 408) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerIdentityRequestTimeoutPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerIdentityRequestTimeoutPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetServerIdentityRequestTimeout(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetMyPlexAccountAsync() - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/myplex/account"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getMyPlexAccount", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMyPlexAccountResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetMyPlexAccountResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetMyPlexAccountResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMyPlexAccountBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetMyPlexAccountBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetMyPlexAccountBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMyPlexAccountUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetMyPlexAccountUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetMyPlexAccountUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetResizedPhotoAsync(GetResizedPhotoRequest request) - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/photo/:/transcode", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getResizedPhoto", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new GetResizedPhotoResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetResizedPhotoBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetResizedPhotoBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetResizedPhotoBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetResizedPhotoUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetResizedPhotoUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetResizedPhotoUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetMediaProvidersAsync(string xPlexToken) - { - var request = new GetMediaProvidersRequest() - { - XPlexToken = xPlexToken, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/media/providers"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - HeaderSerializer.PopulateHeaders(ref httpRequest, request); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-media-providers", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMediaProvidersResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetMediaProvidersResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetMediaProvidersResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMediaProvidersBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetMediaProvidersBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetMediaProvidersBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetMediaProvidersUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetMediaProvidersUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetMediaProvidersUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetServerListAsync() - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/servers"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getServerList", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerListResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerListResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetServerListResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerListBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerListBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetServerListBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetServerListUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetServerListUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetServerListUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Sessions.cs b/LukeHagar/PlexAPI/SDK/Sessions.cs deleted file mode 100644 index 391b485..0000000 --- a/LukeHagar/PlexAPI/SDK/Sessions.cs +++ /dev/null @@ -1,607 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK -{ - using LukeHagar.PlexAPI.SDK.Hooks; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using LukeHagar.PlexAPI.SDK.Utils.Retries; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - using System.Net.Http.Headers; - using System.Threading.Tasks; - - /// - /// 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(string? sort = null, long? accountId = null, QueryParamFilter? filter = null, long? librarySectionID = null); - - /// - /// 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.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; - - public Sessions(SDKConfig config) - { - SDKConfiguration = config; - } - - public async Task GetSessionsAsync() - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/status/sessions"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSessions", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSessionsResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSessionsResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetSessionsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSessionsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSessionsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetSessionsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSessionsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSessionsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetSessionsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetSessionHistoryAsync(string? sort = null, long? accountId = null, QueryParamFilter? filter = null, long? librarySectionID = null) - { - var request = new GetSessionHistoryRequest() - { - Sort = sort, - AccountId = accountId, - Filter = filter, - LibrarySectionID = librarySectionID, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/status/sessions/history/all", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSessionHistory", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSessionHistoryResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSessionHistoryResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetSessionHistoryResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSessionHistoryBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSessionHistoryBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetSessionHistoryBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetSessionHistoryUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetSessionHistoryUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetSessionHistoryUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetTranscodeSessionsAsync() - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/transcode/sessions"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getTranscodeSessions", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTranscodeSessionsResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTranscodeSessionsResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetTranscodeSessionsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTranscodeSessionsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTranscodeSessionsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetTranscodeSessionsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTranscodeSessionsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTranscodeSessionsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetTranscodeSessionsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task StopTranscodeSessionAsync(string sessionKey) - { - var request = new StopTranscodeSessionRequest() - { - SessionKey = sessionKey, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/transcode/sessions/{sessionKey}", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "stopTranscodeSession", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 204) - { - return new StopTranscodeSessionResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - StopTranscodeSessionBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into StopTranscodeSessionBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new StopTranscodeSessionBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - StopTranscodeSessionUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into StopTranscodeSessionUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new StopTranscodeSessionUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Statistics.cs b/LukeHagar/PlexAPI/SDK/Statistics.cs deleted file mode 100644 index 70f220a..0000000 --- a/LukeHagar/PlexAPI/SDK/Statistics.cs +++ /dev/null @@ -1,485 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK -{ - using LukeHagar.PlexAPI.SDK.Hooks; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using LukeHagar.PlexAPI.SDK.Utils.Retries; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - using System.Net.Http.Headers; - using System.Threading.Tasks; - - /// - /// API Calls that perform operations with Plex Media Server Statistics
- /// - /// - /// - /// - ///
- public interface IStatistics - { - - /// - /// Get Media Statistics - /// - /// - /// This will return the media statistics for the server - /// - /// - Task GetStatisticsAsync(long? timespan = null); - - /// - /// Get Resources Statistics - /// - /// - /// This will return the resources for the server - /// - /// - Task GetResourcesStatisticsAsync(long? timespan = null); - - /// - /// Get Bandwidth Statistics - /// - /// - /// This will return the bandwidth statistics for the server - /// - /// - Task GetBandwidthStatisticsAsync(long? timespan = null); - } - - /// - /// API Calls that perform operations with Plex Media Server Statistics
- /// - /// - /// - /// - ///
- public class Statistics: IStatistics - { - public SDKConfig SDKConfiguration { get; private set; } - private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; - - public Statistics(SDKConfig config) - { - SDKConfiguration = config; - } - - public async Task GetStatisticsAsync(long? timespan = null) - { - var request = new GetStatisticsRequest() - { - Timespan = timespan, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/statistics/media", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getStatistics", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetStatisticsResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetStatisticsResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetStatisticsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetStatisticsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetStatisticsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetStatisticsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetStatisticsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetStatisticsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetStatisticsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetResourcesStatisticsAsync(long? timespan = null) - { - var request = new GetResourcesStatisticsRequest() - { - Timespan = timespan, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/statistics/resources", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getResourcesStatistics", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetResourcesStatisticsResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetResourcesStatisticsResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetResourcesStatisticsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetResourcesStatisticsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetResourcesStatisticsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetResourcesStatisticsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetResourcesStatisticsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetResourcesStatisticsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetResourcesStatisticsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task GetBandwidthStatisticsAsync(long? timespan = null) - { - var request = new GetBandwidthStatisticsRequest() - { - Timespan = timespan, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/statistics/bandwidth", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getBandwidthStatistics", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetBandwidthStatisticsResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetBandwidthStatisticsResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetBandwidthStatisticsResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetBandwidthStatisticsBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetBandwidthStatisticsBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetBandwidthStatisticsBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetBandwidthStatisticsUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetBandwidthStatisticsUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetBandwidthStatisticsUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Status.cs b/LukeHagar/PlexAPI/SDK/Status.cs new file mode 100644 index 0000000..309770e --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Status.cs @@ -0,0 +1,679 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// The status endpoints give you information about current playbacks, play history, and even terminating sessions. + /// + public interface IStatus + { + + /// + /// List Sessions + /// + /// + /// List all current playbacks on this server + /// + /// + Task ListSessionsAsync(); + + /// + /// Get background tasks + /// + /// + /// Get the list of all background tasks + /// + /// + Task GetBackgroundTasksAsync(); + + /// + /// List Playback History + /// + /// + /// List all playback history (Admin can see all users, others can only see their own).
+ /// Pagination should be used on this endpoint. Additionally this endpoint supports `includeFields`, `excludeFields`, `includeElements`, and `excludeElements` parameters. + ///
+ ///
+ Task ListPlaybackHistoryAsync(ListPlaybackHistoryRequest? request = null); + + /// + /// Terminate a session + /// + /// + /// Terminate a playback session kicking off the user + /// + /// + Task TerminateSessionAsync(TerminateSessionRequest request); + + /// + /// Delete Single History Item + /// + /// + /// Delete a single history item by id + /// + /// + Task DeleteHistoryAsync(DeleteHistoryRequest request); + + /// + /// Get Single History Item + /// + /// + /// Get a single history item by id + /// + /// + Task GetHistoryItemAsync(GetHistoryItemRequest request); + } + + /// + /// The status endpoints give you information about current playbacks, play history, and even terminating sessions. + /// + public class Status: IStatus + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Status(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task ListSessionsAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/status/sessions"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listSessions", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ListSessionsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ListSessionsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new ListSessionsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetBackgroundTasksAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/status/sessions/background"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getBackgroundTasks", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetBackgroundTasksResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetBackgroundTasksResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetBackgroundTasksResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ListPlaybackHistoryAsync(ListPlaybackHistoryRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/status/sessions/history/all", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listPlaybackHistory", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ListPlaybackHistoryResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ListPlaybackHistoryResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new ListPlaybackHistoryResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task TerminateSessionAsync(TerminateSessionRequest request) + { + if (request == null) + { + request = new TerminateSessionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/status/sessions/terminate", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "terminateSession", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 401 || _statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new TerminateSessionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 401 || responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteHistoryAsync(DeleteHistoryRequest request) + { + if (request == null) + { + request = new DeleteHistoryRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/status/sessions/history/{historyId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteHistory", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + Models.Components.MediaContainer obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into Models.Components.MediaContainer.", httpResponse, httpResponseBody, ex); + } + + var response = new DeleteHistoryResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainer = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetHistoryItemAsync(GetHistoryItemRequest request) + { + if (request == null) + { + request = new GetHistoryItemRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/status/sessions/history/{historyId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getHistoryItem", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + HistoryAllGetResponses200 obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into HistoryAllGetResponses200.", httpResponse, httpResponseBody, ex); + } + + var response = new GetHistoryItemResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.HistoryAllGetResponses200 = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Subscriptions.cs b/LukeHagar/PlexAPI/SDK/Subscriptions.cs new file mode 100644 index 0000000..a55e196 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Subscriptions.cs @@ -0,0 +1,1099 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// Subscriptions determine which media will be recorded and the criteria for selecting an airing when multiple are available
+ /// + /// + /// + /// + ///
+ public interface ISubscriptions + { + + /// + /// Get all subscriptions + /// + /// + /// Get all subscriptions and potentially the grabs too + /// + /// + Task GetAllSubscriptionsAsync(GetAllSubscriptionsRequest? request = null); + + /// + /// Create a subscription + /// + /// + /// Create a subscription. The query parameters should be mostly derived from the template + /// + /// + Task CreateSubscriptionAsync(CreateSubscriptionRequest? request = null); + + /// + /// Process all subscriptions + /// + /// + /// Process all subscriptions asynchronously + /// + /// + Task ProcessSubscriptionsAsync(); + + /// + /// Get all scheduled recordings + /// + /// + /// Get all scheduled recordings across all subscriptions + /// + /// + Task GetScheduledRecordingsAsync(); + + /// + /// Get the subscription template + /// + /// + /// Get the templates for a piece of media which could include fetching one airing, season, the whole show, etc. + /// + /// + Task GetTemplateAsync(GetTemplateRequest? request = null); + + /// + /// Cancel an existing grab + /// + /// + /// Cancels an existing media grab (recording). It can be used to resolve a conflict which exists for a rolling subscription.
+ /// Note: This cancellation does not persist across a server restart, but neither does a rolling subscription itself. + ///
+ ///
+ Task CancelGrabAsync(CancelGrabRequest request); + + /// + /// Delete a subscription + /// + /// + /// Delete a subscription, cancelling all of its grabs as well + /// + /// + Task DeleteSubscriptionAsync(DeleteSubscriptionRequest request); + + /// + /// Get a single subscription + /// + /// + /// Get a single subscription and potentially the grabs too + /// + /// + Task GetSubscriptionAsync(GetSubscriptionRequest request); + + /// + /// Edit a subscription + /// + /// + /// Edit a subscription's preferences + /// + /// + Task EditSubscriptionPreferencesAsync(EditSubscriptionPreferencesRequest request); + + /// + /// Re-order a subscription + /// + /// + /// Re-order a subscription to change its priority + /// + /// + Task ReorderSubscriptionAsync(ReorderSubscriptionRequest request); + } + + /// + /// Subscriptions determine which media will be recorded and the criteria for selecting an airing when multiple are available
+ /// + /// + /// + /// + ///
+ public class Subscriptions: ISubscriptions + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Subscriptions(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task GetAllSubscriptionsAsync(GetAllSubscriptionsRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/subscriptions", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getAllSubscriptions", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithSubscription obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithSubscription.", httpResponse, httpResponseBody, ex); + } + + var response = new GetAllSubscriptionsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithSubscription = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task CreateSubscriptionAsync(CreateSubscriptionRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/subscriptions", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "createSubscription", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode == 409 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + CreateSubscriptionResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into CreateSubscriptionResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new CreateSubscriptionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode == 409 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ProcessSubscriptionsAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/media/subscriptions/process"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "processSubscriptions", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new ProcessSubscriptionsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetScheduledRecordingsAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/media/subscriptions/scheduled"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getScheduledRecordings", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetScheduledRecordingsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetScheduledRecordingsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetScheduledRecordingsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetTemplateAsync(GetTemplateRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/subscriptions/template", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getTemplate", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetTemplateResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetTemplateResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetTemplateResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task CancelGrabAsync(CancelGrabRequest request) + { + if (request == null) + { + request = new CancelGrabRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/grabbers/operations/{operationId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "cancelGrab", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new CancelGrabResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task DeleteSubscriptionAsync(DeleteSubscriptionRequest request) + { + if (request == null) + { + request = new DeleteSubscriptionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/subscriptions/{subscriptionId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "deleteSubscription", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new DeleteSubscriptionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetSubscriptionAsync(GetSubscriptionRequest request) + { + if (request == null) + { + request = new GetSubscriptionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/subscriptions/{subscriptionId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getSubscription", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithSubscription obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithSubscription.", httpResponse, httpResponseBody, ex); + } + + var response = new GetSubscriptionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithSubscription = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task EditSubscriptionPreferencesAsync(EditSubscriptionPreferencesRequest request) + { + if (request == null) + { + request = new EditSubscriptionPreferencesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/subscriptions/{subscriptionId}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "editSubscriptionPreferences", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithSubscription obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithSubscription.", httpResponse, httpResponseBody, ex); + } + + var response = new EditSubscriptionPreferencesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithSubscription = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ReorderSubscriptionAsync(ReorderSubscriptionRequest request) + { + if (request == null) + { + request = new ReorderSubscriptionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/media/subscriptions/{subscriptionId}/move", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "reorderSubscription", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithSubscription obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithSubscription.", httpResponse, httpResponseBody, ex); + } + + var response = new ReorderSubscriptionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithSubscription = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Timeline.cs b/LukeHagar/PlexAPI/SDK/Timeline.cs new file mode 100644 index 0000000..9316bfa --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Timeline.cs @@ -0,0 +1,353 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// The actions feature within a media provider + /// + public interface ITimeline + { + + /// + /// Mark an item as played + /// + /// + /// Mark an item as played. Note, this does not create any view history of this item but rather just sets the state as played. The client must provide either the `key` or `uri` query parameter
+ /// This API does respond to the GET verb but applications should use PUT + ///
+ ///
+ Task MarkPlayedAsync(MarkPlayedRequest request); + + /// + /// Report media timeline + /// + /// + /// This endpoint is hit during media playback for an item. It must be hit whenever the play state changes, or in the absence of a play state change, in a regular fashion (generally this means every 10 seconds on a LAN/WAN, and every 20 seconds over cellular).
+ /// + ///
+ ///
+ Task ReportAsync(ReportRequest? request = null); + + /// + /// Mark an item as unplayed + /// + /// + /// Mark an item as unplayed. The client must provide either the `key` or `uri` query parameter
+ /// This API does respond to the GET verb but applications should use PUT + ///
+ ///
+ Task UnscrobbleAsync(UnscrobbleRequest request); + } + + /// + /// The actions feature within a media provider + /// + public class Timeline: ITimeline + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Timeline(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task MarkPlayedAsync(MarkPlayedRequest request) + { + if (request == null) + { + request = new MarkPlayedRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/:/scrobble", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "markPlayed", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new MarkPlayedResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task ReportAsync(ReportRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/:/timeline", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "report", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ReportResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ReportResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new ReportResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task UnscrobbleAsync(UnscrobbleRequest request) + { + if (request == null) + { + request = new UnscrobbleRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/:/unscrobble", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "unscrobble", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new UnscrobbleResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Transcoder.cs b/LukeHagar/PlexAPI/SDK/Transcoder.cs new file mode 100644 index 0000000..a58dc50 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Transcoder.cs @@ -0,0 +1,578 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// API Operations against the Transcoder + /// + public interface ITranscoder + { + + /// + /// Transcode an image + /// + /// + /// Transcode an image, possibly changing format or size + /// + /// + Task TranscodeImageAsync(TranscodeImageRequest? request = null); + + /// + /// Make a decision on media playback + /// + /// + /// Make a decision on media playback based on client profile, and requested settings such as bandwidth and resolution. + /// + /// + Task MakeDecisionAsync(MakeDecisionRequest request); + + /// + /// Manually trigger a transcoder fallback + /// + /// + /// Manually trigger a transcoder fallback ex: HEVC to h.264 or hw to sw + /// + /// + Task TriggerFallbackAsync(TriggerFallbackRequest request); + + /// + /// Transcode subtitles + /// + /// + /// Only transcode subtitle streams. + /// + /// + Task TranscodeSubtitlesAsync(TranscodeSubtitlesRequest request); + + /// + /// Start A Transcoding Session + /// + /// + /// Starts the transcoder and returns the corresponding streaming resource document. + /// + /// + Task StartTranscodeSessionAsync(StartTranscodeSessionRequest request); + } + + /// + /// API Operations against the Transcoder + /// + public class Transcoder: ITranscoder + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public Transcoder(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task TranscodeImageAsync(TranscodeImageRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/photo/:/transcode", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "transcodeImage", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("image/jpeg", contentType)) + { + var response = new TranscodeImageResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.TwoHundredImageJpegBytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + else if(Utilities.IsContentTypeMatch("image/png", contentType)) + { + var response = new TranscodeImageResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.TwoHundredImagePngBytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + else if(Utilities.IsContentTypeMatch("image/x-portable-pixmap", contentType)) + { + var response = new TranscodeImageResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.TwoHundredImageXPortablePixmapBytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task MakeDecisionAsync(MakeDecisionRequest request) + { + if (request == null) + { + request = new MakeDecisionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/{transcodeType}/:/transcode/universal/decision", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "makeDecision", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + MediaContainerWithDecision obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithDecision.", httpResponse, httpResponseBody, ex); + } + + var response = new MakeDecisionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.MediaContainerWithDecision = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task TriggerFallbackAsync(TriggerFallbackRequest request) + { + if (request == null) + { + request = new TriggerFallbackRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/{transcodeType}/:/transcode/universal/fallback", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "triggerFallback", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode == 412 || _statusCode >= 400 && _statusCode < 500 || _statusCode == 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new TriggerFallbackResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 404 || responseStatusCode == 412 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500 || responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task TranscodeSubtitlesAsync(TranscodeSubtitlesRequest request) + { + if (request == null) + { + request = new TranscodeSubtitlesRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/{transcodeType}/:/transcode/universal/subtitles", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "transcodeSubtitles", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new TranscodeSubtitlesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task StartTranscodeSessionAsync(StartTranscodeSessionRequest request) + { + if (request == null) + { + request = new StartTranscodeSessionRequest(); + } + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/{transcodeType}/:/transcode/universal/start.{extension}", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "startTranscodeSession", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode == 403 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("video/x-matroska", contentType)) + { + var response = new StartTranscodeSessionResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/UltraBlur.cs b/LukeHagar/PlexAPI/SDK/UltraBlur.cs new file mode 100644 index 0000000..11df5e5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/UltraBlur.cs @@ -0,0 +1,257 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK +{ + using LukeHagar.PlexAPI.SDK.Hooks; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Errors; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using LukeHagar.PlexAPI.SDK.Utils.Retries; + using Newtonsoft.Json; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + /// + /// Service provided to compute UltraBlur colors and images. + /// + public interface IUltraBlur + { + + /// + /// Get UltraBlur Colors + /// + /// + /// Retrieves the four colors extracted from an image for clients to use to generate an ultrablur image. + /// + /// + Task GetColorsAsync(GetColorsRequest? request = null); + + /// + /// Get UltraBlur Image + /// + /// + /// Retrieves a server-side generated UltraBlur image based on the provided color inputs. Clients should always call this via the photo transcoder endpoint. + /// + /// + Task GetImageAsync(GetImageRequest? request = null); + } + + /// + /// Service provided to compute UltraBlur colors and images. + /// + public class UltraBlur: IUltraBlur + { + public SDKConfig SDKConfiguration { get; private set; } + private const string _language = "csharp"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; + + public UltraBlur(SDKConfig config) + { + SDKConfiguration = config; + } + + public async Task GetColorsAsync(GetColorsRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/services/ultrablur/colors", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getColors", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode == 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetColorsResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetColorsResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetColorsResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500 || responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetImageAsync(GetImageRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/services/ultrablur/image", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getImage", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("image/png", contentType)) + { + var response = new GetImageResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Updater.cs b/LukeHagar/PlexAPI/SDK/Updater.cs index 498c662..878a9e3 100644 --- a/LukeHagar/PlexAPI/SDK/Updater.cs +++ b/LukeHagar/PlexAPI/SDK/Updater.cs @@ -34,32 +34,31 @@ namespace LukeHagar.PlexAPI.SDK { /// - /// Querying status of updates + /// Applying updates /// /// - /// Querying status of updates + /// Apply any downloaded updates. Note that the two parameters `tonight` and `skip` are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed. /// /// - Task GetUpdateStatusAsync(); + Task ApplyUpdatesAsync(ApplyUpdatesRequest? request = null); /// /// Checking for updates /// /// - /// Checking for updates + /// Perform an update check and potentially download /// /// - Task CheckForUpdatesAsync(Download? download = null); + Task CheckUpdatesAsync(CheckUpdatesRequest? request = null); /// - /// Apply Updates + /// Querying status of 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
- /// + /// Get the status of updating the server ///
///
- Task ApplyUpdatesAsync(Tonight? tonight = null, Skip? skip = null); + Task GetUpdatesStatusAsync(); } /// @@ -74,281 +73,42 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; + private const string _sdkVersion = "0.18.0"; + private const string _sdkGenVersion = "2.730.5"; + private const string _openapiDocVersion = "1.1.1"; public Updater(SDKConfig config) { SDKConfiguration = config; } - public async Task GetUpdateStatusAsync() + public async Task ApplyUpdatesAsync(ApplyUpdatesRequest? request = null) { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/updater/status"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getUpdateStatus", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetUpdateStatusResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetUpdateStatusResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetUpdateStatusResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetUpdateStatusBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetUpdateStatusBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetUpdateStatusBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetUpdateStatusUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetUpdateStatusUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetUpdateStatusUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task CheckForUpdatesAsync(Download? download = null) - { - var request = new CheckForUpdatesRequest() - { - Download = download, - }; - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/updater/check", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "checkForUpdates", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new CheckForUpdatesResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - CheckForUpdatesBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into CheckForUpdatesBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new CheckForUpdatesBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - CheckForUpdatesUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into CheckForUpdatesUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new CheckForUpdatesUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task ApplyUpdatesAsync(Tonight? tonight = null, Skip? skip = null) - { - var request = new ApplyUpdatesRequest() - { - Tonight = tonight, - Skip = skip, - }; + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); var urlString = URLBuilder.Build(baseUrl, "/updater/apply", request); var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "applyUpdates", new List { }, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "applyUpdates", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); @@ -358,7 +118,7 @@ namespace LukeHagar.PlexAPI.SDK httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); int _statusCode = (int)httpResponse.StatusCode; - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode == 500 || _statusCode >= 500 && _statusCode < 600) + if (_statusCode == 400 || _statusCode >= 400 && _statusCode < 500 || _statusCode == 500 || _statusCode >= 500 && _statusCode < 600) { var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); if (_httpResponse != null) @@ -393,49 +153,7 @@ namespace LukeHagar.PlexAPI.SDK RawResponse = httpResponse }; } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - ApplyUpdatesBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into ApplyUpdatesBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new ApplyUpdatesBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - ApplyUpdatesUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into ApplyUpdatesUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new ApplyUpdatesUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) + else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500) { throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } @@ -446,5 +164,177 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); } + + public async Task CheckUpdatesAsync(CheckUpdatesRequest? request = null) + { + request.Accepts ??= SDKConfiguration.Accepts; + request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier; + request.Product ??= SDKConfiguration.Product; + request.Version ??= SDKConfiguration.Version; + request.Platform ??= SDKConfiguration.Platform; + request.PlatformVersion ??= SDKConfiguration.PlatformVersion; + request.Device ??= SDKConfiguration.Device; + request.Model ??= SDKConfiguration.Model; + request.DeviceVendor ??= SDKConfiguration.DeviceVendor; + request.DeviceName ??= SDKConfiguration.DeviceName; + request.Marketplace ??= SDKConfiguration.Marketplace; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/updater/check", request); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "checkUpdates", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + return new CheckUpdatesResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + public async Task GetUpdatesStatusAsync() + { + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + + var urlString = baseUrl + "/updater/status"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getUpdatesStatus", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception error) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetUpdatesStatusResponseBody obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetUpdatesStatusResponseBody.", httpResponse, httpResponseBody, ex); + } + + var response = new GetUpdatesStatusResponse() + { + StatusCode = responseStatusCode, + ContentType = contentType, + RawResponse = httpResponse + }; + response.Object = obj; + return response; + } + + throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Users.cs b/LukeHagar/PlexAPI/SDK/Users.cs deleted file mode 100644 index 2f3de29..0000000 --- a/LukeHagar/PlexAPI/SDK/Users.cs +++ /dev/null @@ -1,178 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK -{ - using LukeHagar.PlexAPI.SDK.Hooks; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using LukeHagar.PlexAPI.SDK.Utils.Retries; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - using System.Net.Http.Headers; - using System.Threading.Tasks; - - public interface IUsers - { - - /// - /// Get list of all connected users - /// - /// - /// Get list of all users that are friends and have library access with the provided Plex authentication token - /// - /// - Task GetUsersAsync(GetUsersRequest request, string? serverUrl = null); - } - - public class Users: IUsers - { - /// - /// List of server URLs available for the get-users operation. - /// - public static readonly string[] GetUsersServerList = { - "https://plex.tv/api", - }; - public SDKConfig SDKConfiguration { get; private set; } - private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; - - public Users(SDKConfig config) - { - SDKConfiguration = config; - } - - public async Task GetUsersAsync(GetUsersRequest request, string? serverUrl = null) - { - string baseUrl = Utilities.TemplateUrl(GetUsersServerList[0], new Dictionary(){ - }); - if (serverUrl != null) - { - baseUrl = serverUrl; - } - - var urlString = baseUrl + "/users"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - HeaderSerializer.PopulateHeaders(ref httpRequest, request); - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-users", new List { }, null); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/xml", contentType)) - { - var response = new GetUsersResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Body = await httpResponse.Content.ReadAsByteArrayAsync(); - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetUsersBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetUsersBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetUsersBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetUsersUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetUsersUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetUsersUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Video.cs b/LukeHagar/PlexAPI/SDK/Video.cs deleted file mode 100644 index d0853f7..0000000 --- a/LukeHagar/PlexAPI/SDK/Video.cs +++ /dev/null @@ -1,298 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK -{ - using LukeHagar.PlexAPI.SDK.Hooks; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using LukeHagar.PlexAPI.SDK.Utils.Retries; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - using System.Net.Http.Headers; - using System.Threading.Tasks; - - /// - /// API Calls that perform operations with Plex Media Server Videos
- /// - /// - /// - /// - ///
- public interface IVideo - { - - /// - /// Get the timeline for a media item - /// - /// - /// Get the timeline for a media item - /// - /// - Task GetTimelineAsync(GetTimelineRequest request); - - /// - /// Start Universal Transcode - /// - /// - /// Begin a Universal Transcode Session - /// - /// - Task StartUniversalTranscodeAsync(StartUniversalTranscodeRequest request); - } - - /// - /// 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.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; - - public Video(SDKConfig config) - { - SDKConfiguration = config; - } - - public async Task GetTimelineAsync(GetTimelineRequest request) - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/:/timeline", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getTimeline", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new GetTimelineResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTimelineBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTimelineBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetTimelineBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetTimelineUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetTimelineUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetTimelineUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - public async Task StartUniversalTranscodeAsync(StartUniversalTranscodeRequest request) - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/video/:/transcode/universal/start.mpd", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "startUniversalTranscode", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - return new StartUniversalTranscodeResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - StartUniversalTranscodeBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into StartUniversalTranscodeBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new StartUniversalTranscodeBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - StartUniversalTranscodeUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into StartUniversalTranscodeUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new StartUniversalTranscodeUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Watchlist.cs b/LukeHagar/PlexAPI/SDK/Watchlist.cs deleted file mode 100644 index 83de1a4..0000000 --- a/LukeHagar/PlexAPI/SDK/Watchlist.cs +++ /dev/null @@ -1,207 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK -{ - using LukeHagar.PlexAPI.SDK.Hooks; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using LukeHagar.PlexAPI.SDK.Utils.Retries; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - using System.Net.Http.Headers; - using System.Threading.Tasks; - - /// - /// API Calls that perform operations with Plex Media Server Watchlists
- /// - /// - /// - /// - ///
- public interface IWatchlist - { - - /// - /// Get User Watchlist - /// - /// - /// Get User Watchlist - /// - /// - Task GetWatchListAsync(GetWatchListRequest request, string? serverUrl = null); - } - - /// - /// API Calls that perform operations with Plex Media Server Watchlists
- /// - /// - /// - /// - ///
- public class Watchlist: IWatchlist - { - /// - /// List of server URLs available for the get-watch-list operation. - /// - public static readonly string[] GetWatchListServerList = { - "https://discover.provider.plex.tv", - }; - public SDKConfig SDKConfiguration { get; private set; } - private const string _language = "csharp"; - private const string _sdkVersion = "0.17.0"; - private const string _sdkGenVersion = "2.698.4"; - private const string _openapiDocVersion = "0.0.3"; - - public Watchlist(SDKConfig config) - { - SDKConfiguration = config; - } - - public async Task GetWatchListAsync(GetWatchListRequest request, string? serverUrl = null) - { - string baseUrl = Utilities.TemplateUrl(GetWatchListServerList[0], new Dictionary(){ - }); - if (serverUrl != null) - { - baseUrl = serverUrl; - } - var urlString = URLBuilder.Build(baseUrl, "/library/sections/watchlist/{filter}", request); - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); - HeaderSerializer.PopulateHeaders(ref httpRequest, request); - - if (SDKConfiguration.SecuritySource != null) - { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); - } - - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "get-watch-list", new List { }, SDKConfiguration.SecuritySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetWatchListResponseBody obj; - try - { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetWatchListResponseBody.", httpResponse, httpResponseBody, ex); - } - - var response = new GetWatchListResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetWatchListBadRequestPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetWatchListBadRequestPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetWatchListBadRequest(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - GetWatchListUnauthorizedPayload payload; - try - { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); - } - catch (Exception ex) - { - throw new ResponseValidationException("Failed to deserialize response body into GetWatchListUnauthorizedPayload.", httpResponse, httpResponseBody, ex); - } - - payload.RawResponse = httpResponse; - throw new GetWatchListUnauthorized(payload, httpResponse, httpResponseBody); - } - - throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - - throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync()); - } - } -} \ No newline at end of file diff --git a/NUGET.md b/NUGET.md index f5de7ee..04caade 100644 --- a/NUGET.md +++ b/NUGET.md @@ -9,10 +9,56 @@ ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); -var res = await sdk.Server.GetServerCapabilitiesAsync(); +StartTranscodeSessionRequest req = new StartTranscodeSessionRequest() { + TranscodeType = TranscodeType.Music, + Extension = Extension.Mpd, + AdvancedSubtitles = LukeHagar.PlexAPI.SDK.Models.Components.AdvancedSubtitles.Burn, + AudioBoost = 50, + AudioChannelCount = 5, + AutoAdjustQuality = BoolInt.One, + AutoAdjustSubtitle = BoolInt.One, + DirectPlay = BoolInt.One, + DirectStream = BoolInt.One, + DirectStreamAudio = BoolInt.One, + DisableResolutionRotation = BoolInt.One, + HasMDE = BoolInt.One, + Location = StartTranscodeSessionQueryParamLocation.Wan, + MediaBufferSize = 102400, + MediaIndex = 0, + MusicBitrate = 5000, + Offset = 90.5D, + PartIndex = 0, + Path = "/library/metadata/151671", + PeakBitrate = 12000, + PhotoResolution = "1080x1080", + Protocol = StartTranscodeSessionQueryParamProtocol.Dash, + SecondsPerSegment = 5, + SubtitleSize = 50, + VideoBitrate = 12000, + VideoQuality = 50, + VideoResolution = "1080x1080", + XPlexClientProfileExtra = "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + XPlexClientProfileName = "generic", +}; + +var res = await sdk.Transcoder.StartTranscodeSessionAsync(req); // handle response ``` @@ -25,18 +71,34 @@ var res = await sdk.Server.GetServerCapabilitiesAsync(); This SDK supports the following security scheme globally: -| Name | Type | Scheme | -| ------------- | ------ | ------- | -| `AccessToken` | apiKey | API key | +| Name | Type | Scheme | +| ------- | ------ | ------- | +| `Token` | apiKey | API key | -To authenticate with the API the `AccessToken` parameter must be set when initializing the SDK client instance. For example: +To authenticate with the API the `Token` parameter must be set when initializing the SDK client instance. For example: ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + token: "", + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay" +); -var res = await sdk.Server.GetServerCapabilitiesAsync(); +GetServerInfoRequest req = new GetServerInfoRequest() {}; + +var res = await sdk.General.GetServerInfoAsync(req); // handle response ``` @@ -56,21 +118,34 @@ var res = await sdk.Server.GetServerCapabilitiesAsync(); | `RawResponse` | *HttpResponseMessage* | HTTP response object | | `Body` | *string* | HTTP response body | -Some exceptions in this SDK include an additional `Payload` field, which will contain deserialized custom error data when present. Possible exceptions are listed in the [Error Classes](#error-classes) section. - ### Example ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Errors; -using System.Collections.Generic; +using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); try { - var res = await sdk.Server.GetServerCapabilitiesAsync(); + GetServerInfoRequest req = new GetServerInfoRequest() {}; + + var res = await sdk.General.GetServerInfoAsync(req); // handle response } @@ -85,20 +160,6 @@ catch (PlexAPIError ex) // all SDK exceptions inherit from PlexAPIError int statusCode = ex.StatusCode; string? contentType = ex.ContentType; var responseBody = ex.Body; - - if (ex is GetServerCapabilitiesBadRequest) // different exceptions may be thrown depending on the method - { - // Check error data fields - GetServerCapabilitiesBadRequestPayload payload = ex.Payload; - List Errors = payload.Errors; - HttpResponseMessage RawResponse = payload.RawResponse; - } - - // An underlying cause may be provided - if (ex.InnerException != null) - { - Exception cause = ex.InnerException; - } } catch (System.Net.Http.HttpRequestException ex) { @@ -111,234 +172,248 @@ catch (System.Net.Http.HttpRequestException ex) **Primary exception:** * [`PlexAPIError`](./LukeHagar/PlexAPI/SDK/Models/Errors/PlexAPIError.cs): The base class for HTTP error responses. -
Less common exceptions (158) +
Less common exceptions (2) * [`System.Net.Http.HttpRequestException`](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httprequestexception): Network connectivity error. For more details about the underlying cause, inspect the `ex.InnerException`. * Inheriting from [`PlexAPIError`](./LukeHagar/PlexAPI/SDK/Models/Errors/PlexAPIError.cs): - * [`GetServerCapabilitiesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetServerPreferencesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetAvailableClientsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetDevicesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetMyPlexAccountBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetResizedPhotoBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetMediaProvidersBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetServerListBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`MarkPlayedBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`MarkUnplayedBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`UpdatePlayProgressBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetBannerImageBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetThumbImageBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetTimelineBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`StartUniversalTranscodeBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetServerActivitiesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`CancelServerActivitiesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetButlerTasksBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`StartAllTasksBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`StopAllTasksBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`StartTaskBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`StopTaskBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetCompanionsDataBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetUserFriendsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetGeoDataBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetHomeDataBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetServerResourcesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetPinBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPinBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetTokenByPinIdBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetGlobalHubsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetLibraryHubsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`PerformSearchBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`PerformVoiceSearchBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetSearchResultsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetFileHashBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetRecentlyAddedLibraryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetAllLibrariesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetLibraryDetailsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`DeleteLibraryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetLibraryItemsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetLibrarySectionsAllBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetRefreshLibraryMetadataBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetSearchLibraryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetGenresLibraryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetCountriesLibraryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetActorsLibraryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetSearchAllLibrariesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetMediaMetaDataBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetMetadataChildrenBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetTopWatchedContentBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetWatchListBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`LogLineBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/LogLineBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`LogMultiLineBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`EnablePaperTrailBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`CreatePlaylistBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetPlaylistsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetPlaylistBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`DeletePlaylistBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`UpdatePlaylistBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetPlaylistContentsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`ClearPlaylistContentsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`AddPlaylistContentsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`UploadPlaylistBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetTransientTokenBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetSourceConnectionInformationBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetTokenDetailsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`PostUsersSignInDataBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetStatisticsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetResourcesStatisticsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetBandwidthStatisticsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetSessionsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetSessionHistoryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetTranscodeSessionsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`StopTranscodeSessionBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetUpdateStatusBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`CheckForUpdatesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`ApplyUpdatesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetUsersBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetServerCapabilitiesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetServerPreferencesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetAvailableClientsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetDevicesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetMyPlexAccountUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetResizedPhotoUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetMediaProvidersUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetServerListUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`MarkPlayedUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`MarkUnplayedUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`UpdatePlayProgressUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetBannerImageUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetThumbImageUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetTimelineUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`StartUniversalTranscodeUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetServerActivitiesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`CancelServerActivitiesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetButlerTasksUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`StartAllTasksUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`StopAllTasksUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`StartTaskUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`StopTaskUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetCompanionsDataUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetUserFriendsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetGeoDataUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetHomeDataUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetServerResourcesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetGlobalHubsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetLibraryHubsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`PerformSearchUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`PerformVoiceSearchUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetSearchResultsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetFileHashUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetRecentlyAddedLibraryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetAllLibrariesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetLibraryDetailsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`DeleteLibraryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetLibraryItemsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetLibrarySectionsAllUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetRefreshLibraryMetadataUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetSearchLibraryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetGenresLibraryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetCountriesLibraryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetActorsLibraryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetSearchAllLibrariesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetMediaMetaDataUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetMetadataChildrenUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetTopWatchedContentUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetWatchListUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`LogLineUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/LogLineUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`LogMultiLineUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`EnablePaperTrailUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`CreatePlaylistUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetPlaylistsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetPlaylistUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`DeletePlaylistUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`UpdatePlaylistUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetPlaylistContentsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`ClearPlaylistContentsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`AddPlaylistContentsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`UploadPlaylistUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetTransientTokenUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetSourceConnectionInformationUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetTokenDetailsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`PostUsersSignInDataUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetStatisticsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetResourcesStatisticsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetBandwidthStatisticsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetSessionsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetSessionHistoryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetTranscodeSessionsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`StopTranscodeSessionUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetUpdateStatusUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`CheckForUpdatesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`ApplyUpdatesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetUsersUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetTokenByPinIdResponseBody`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdResponseBody.cs): Not Found or Expired. Status code `404`. Applicable to 1 of 84 methods.* - * [`GetServerIdentityRequestTimeout`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerIdentityRequestTimeout.cs): Request Timeout. Status code `408`. Applicable to 1 of 84 methods.* * [`ResponseValidationError`](./LukeHagar/PlexAPI/SDK/Models/Errors/ResponseValidationError.cs): Thrown when the response data could not be deserialized into the expected type.
- -\* Refer to the [relevant documentation](#available-resources-and-operations) to determine whether an exception applies to a specific operation. ## Server Selection -### Server Variables +### Select Server by Index -The default server `{protocol}://{ip}:{port}` contains variables and is set to `https://10.10.10.47:32400` by default. To override default values, the following parameters are available when initializing the SDK client instance: +You can override the default server globally by passing a server index to the `serverIndex: int` optional parameter when initializing the SDK client instance. The selected server will then be used as the default on the operations that use it. This table lists the indexes associated with the available servers: -| Variable | Parameter | Supported Values | Default | Description | -| ---------- | ------------------------------------------------------- | -------------------------- | --------------- | ---------------------------------------------- | -| `protocol` | `protocol: LukeHagar.PlexAPI.SDK.Models.ServerProtocol` | - `"http"`
- `"https"` | `"https"` | The protocol to use for the server connection | -| `ip` | `ip: string` | string | `"10.10.10.47"` | The IP address or hostname of your Plex Server | -| `port` | `port: string` | string | `"32400"` | The port of your Plex Server | +| # | Server | Variables | Description | +| --- | ---------------------------------------------------------- | -------------------------------------------- | ----------- | +| 0 | `https://{IP-description}.{identifier}.plex.direct:{port}` | `identifier`
`IP-description`
`port` | | +| 1 | `{protocol}://{host}:{port}` | `protocol`
`host`
`port` | | +| 2 | `https://{full_server_url}` | `full_server_url` | | + +If the selected server has variables, you may override its default values through the additional parameters made available in the SDK constructor: + +| Variable | Parameter | Default | Description | +| ----------------- | ----------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `identifier` | `identifier: string` | `"0123456789abcdef0123456789abcdef"` | The unique identifier of this particular PMS | +| `IP-description` | `ipDescription: string` | `"1-2-3-4"` | A `-` separated string of the IPv4 or IPv6 address components | +| `port` | `port: string` | `"32400"` | The Port number configured on the PMS. Typically (`32400`).
If using a reverse proxy, this would be the port number configured on the proxy.
| +| `protocol` | `protocol: string` | `"http"` | The network protocol to use. Typically (`http` or `https`) | +| `host` | `host: string` | `"localhost"` | The Host of the PMS.
If using on a local network, this is the internal IP address of the server hosting the PMS.
If using on an external network, this is the external IP address for your network, and requires port forwarding.
If using a reverse proxy, this would be the external DNS domain for your network, and requires the proxy handle port forwarding.
| +| `full_server_url` | `fullServerUrl: string` | `"http://localhost:32400"` | The full manual URL to access the PMS | #### Example ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; var sdk = new PlexAPI( - protocol: "https", - ip: "4982:bc2a:b4f8:efb5:2394:5bc3:ab4f:0e6d", - port: "44765", - accessToken: "" + serverIndex: 1, + protocol: "", + host: "electric-excess.name", + port: "36393", + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); -var res = await sdk.Server.GetServerCapabilitiesAsync(); +GetServerInfoRequest req = new GetServerInfoRequest() {}; + +var res = await sdk.General.GetServerInfoAsync(req); // handle response ``` ### Override Server URL Per-Client -The default server can be overridden globally by passing a URL to the `serverUrl: string` optional parameter when initializing the SDK client instance. For example: +The default server can also be overridden globally by passing a URL to the `serverUrl: string` optional parameter when initializing the SDK client instance. For example: ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; var sdk = new PlexAPI( - serverUrl: "https://10.10.10.47:32400", - accessToken: "" + serverUrl: "https://http://localhost:32400", + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); -var res = await sdk.Server.GetServerCapabilitiesAsync(); +GetServerInfoRequest req = new GetServerInfoRequest() {}; -// handle response -``` - -### Override Server URL Per-Operation - -The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example: -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Plex.GetCompanionsDataAsync(serverUrl: "https://plex.tv/api/v2"); +var res = await sdk.General.GetServerInfoAsync(req); // handle response ``` + +## Custom HTTP Client + +The C# SDK makes API calls using an `ISpeakeasyHttpClient` that wraps the native +[HttpClient](https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient). This +client provides the ability to attach hooks around the request lifecycle that can be used to modify the request or handle +errors and response. + +The `ISpeakeasyHttpClient` interface allows you to either use the default `SpeakeasyHttpClient` that comes with the SDK, +or provide your own custom implementation with customized configuration such as custom message handlers, timeouts, +connection pooling, and other HTTP client settings. + +The following example shows how to create a custom HTTP client with request modification and error handling: + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Utils; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; + +// Create a custom HTTP client +public class CustomHttpClient : ISpeakeasyHttpClient +{ + private readonly ISpeakeasyHttpClient _defaultClient; + + public CustomHttpClient() + { + _defaultClient = new SpeakeasyHttpClient(); + } + + public async Task SendAsync(HttpRequestMessage request, CancellationToken? cancellationToken = null) + { + // Add custom header and timeout + request.Headers.Add("x-custom-header", "custom value"); + request.Headers.Add("x-request-timeout", "30"); + + try + { + var response = await _defaultClient.SendAsync(request, cancellationToken); + // Log successful response + Console.WriteLine($"Request successful: {response.StatusCode}"); + return response; + } + catch (Exception error) + { + // Log error + Console.WriteLine($"Request failed: {error.Message}"); + throw; + } + } + + public void Dispose() + { + _httpClient?.Dispose(); + _defaultClient?.Dispose(); + } +} + +// Use the custom HTTP client with the SDK +var customHttpClient = new CustomHttpClient(); +var sdk = new PlexAPI(client: customHttpClient); +``` + +
+You can also provide a completely custom HTTP client with your own configuration: + +```csharp +using LukeHagar.PlexAPI.SDK.Utils; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; + +// Custom HTTP client with custom configuration +public class AdvancedHttpClient : ISpeakeasyHttpClient +{ + private readonly HttpClient _httpClient; + + public AdvancedHttpClient() + { + var handler = new HttpClientHandler() + { + MaxConnectionsPerServer = 10, + // ServerCertificateCustomValidationCallback = customCertValidation, // Custom SSL validation if needed + }; + + _httpClient = new HttpClient(handler) + { + Timeout = TimeSpan.FromSeconds(30) + }; + } + + public async Task SendAsync(HttpRequestMessage request, CancellationToken? cancellationToken = null) + { + return await _httpClient.SendAsync(request, cancellationToken ?? CancellationToken.None); + } + + public void Dispose() + { + _httpClient?.Dispose(); + } +} + +var sdk = PlexAPI.Builder() + .WithClient(new AdvancedHttpClient()) + .Build(); +``` +
+ +
+For simple debugging, you can enable request/response logging by implementing a custom client: + +```csharp +public class LoggingHttpClient : ISpeakeasyHttpClient +{ + private readonly ISpeakeasyHttpClient _innerClient; + + public LoggingHttpClient(ISpeakeasyHttpClient innerClient = null) + { + _innerClient = innerClient ?? new SpeakeasyHttpClient(); + } + + public async Task SendAsync(HttpRequestMessage request, CancellationToken? cancellationToken = null) + { + // Log request + Console.WriteLine($"Sending {request.Method} request to {request.RequestUri}"); + + var response = await _innerClient.SendAsync(request, cancellationToken); + + // Log response + Console.WriteLine($"Received {response.StatusCode} response"); + + return response; + } + + public void Dispose() => _innerClient?.Dispose(); +} + +var sdk = new PlexAPI(client: new LoggingHttpClient()); +``` +
+ +The SDK also provides built-in hook support through the `SDKConfiguration.Hooks` system, which automatically handles +`BeforeRequestAsync`, `AfterSuccessAsync`, and `AfterErrorAsync` hooks for advanced request lifecycle management. + + \ No newline at end of file diff --git a/README.md b/README.md index d7e36e3..2d52e7f 100644 --- a/README.md +++ b/README.md @@ -33,10 +33,56 @@ dotnet add reference LukeHagar/PlexAPI/SDK/LukeHagar.PlexAPI.SDK.csproj ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); -var res = await sdk.Server.GetServerCapabilitiesAsync(); +StartTranscodeSessionRequest req = new StartTranscodeSessionRequest() { + TranscodeType = TranscodeType.Music, + Extension = Extension.Mpd, + AdvancedSubtitles = LukeHagar.PlexAPI.SDK.Models.Components.AdvancedSubtitles.Burn, + AudioBoost = 50, + AudioChannelCount = 5, + AutoAdjustQuality = BoolInt.One, + AutoAdjustSubtitle = BoolInt.One, + DirectPlay = BoolInt.One, + DirectStream = BoolInt.One, + DirectStreamAudio = BoolInt.One, + DisableResolutionRotation = BoolInt.One, + HasMDE = BoolInt.One, + Location = StartTranscodeSessionQueryParamLocation.Wan, + MediaBufferSize = 102400, + MediaIndex = 0, + MusicBitrate = 5000, + Offset = 90.5D, + PartIndex = 0, + Path = "/library/metadata/151671", + PeakBitrate = 12000, + PhotoResolution = "1080x1080", + Protocol = StartTranscodeSessionQueryParamProtocol.Dash, + SecondsPerSegment = 5, + SubtitleSize = 50, + VideoBitrate = 12000, + VideoQuality = 50, + VideoResolution = "1080x1080", + XPlexClientProfileExtra = "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + XPlexClientProfileName = "generic", +}; + +var res = await sdk.Transcoder.StartTranscodeSessionAsync(req); // handle response ``` @@ -50,139 +96,323 @@ var res = await sdk.Server.GetServerCapabilitiesAsync(); ### [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 - -### [Authentication](docs/sdks/authentication/README.md) - -* [GetTransientToken](docs/sdks/authentication/README.md#gettransienttoken) - Get a Transient Token -* [GetSourceConnectionInformation](docs/sdks/authentication/README.md#getsourceconnectioninformation) - Get Source Connection Information -* [GetTokenDetails](docs/sdks/authentication/README.md#gettokendetails) - Get Token Details -* [PostUsersSignInData](docs/sdks/authentication/README.md#postuserssignindata) - Get User Sign In Data +* [ListActivities](docs/sdks/activities/README.md#listactivities) - Get all activities +* [CancelActivity](docs/sdks/activities/README.md#cancelactivity) - Cancel a running activity ### [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 +* [StopTasks](docs/sdks/butler/README.md#stoptasks) - Stop all Butler tasks +* [GetTasks](docs/sdks/butler/README.md#gettasks) - Get all Butler tasks +* [StartTasks](docs/sdks/butler/README.md#starttasks) - Start all Butler tasks * [StopTask](docs/sdks/butler/README.md#stoptask) - Stop a single Butler task +* [StartTask](docs/sdks/butler/README.md#starttask) - Start a single Butler task + +### [Collections](docs/sdks/collections/README.md) + +* [CreateCollection](docs/sdks/collections/README.md#createcollection) - Create collection + +### [Content](docs/sdks/content/README.md) + +* [GetCollectionItems](docs/sdks/content/README.md#getcollectionitems) - Get items in a collection +* [GetMetadataItem](docs/sdks/content/README.md#getmetadataitem) - Get a metadata item +* [GetAlbums](docs/sdks/content/README.md#getalbums) - Set section albums +* [ListContent](docs/sdks/content/README.md#listcontent) - Get items in the section +* [GetAllLeaves](docs/sdks/content/README.md#getallleaves) - Set section leaves +* [GetArts](docs/sdks/content/README.md#getarts) - Set section artwork +* [GetCategories](docs/sdks/content/README.md#getcategories) - Set section categories +* [GetCluster](docs/sdks/content/README.md#getcluster) - Set section clusters +* [GetSonicPath](docs/sdks/content/README.md#getsonicpath) - Similar tracks to transition from one to another +* [GetFolders](docs/sdks/content/README.md#getfolders) - Get all folder locations +* [ListMoments](docs/sdks/content/README.md#listmoments) - Set section moments +* [GetSonicallySimilar](docs/sdks/content/README.md#getsonicallysimilar) - The nearest audio tracks +* [GetCollectionImage](docs/sdks/content/README.md#getcollectionimage) - Get a collection's image + +### [Devices](docs/sdks/devices/README.md) + +* [GetAvailableGrabbers](docs/sdks/devices/README.md#getavailablegrabbers) - Get available grabbers +* [ListDevices](docs/sdks/devices/README.md#listdevices) - Get all devices +* [AddDevice](docs/sdks/devices/README.md#adddevice) - Add a device +* [DiscoverDevices](docs/sdks/devices/README.md#discoverdevices) - Tell grabbers to discover devices +* [RemoveDevice](docs/sdks/devices/README.md#removedevice) - Remove a device +* [GetDeviceDetails](docs/sdks/devices/README.md#getdevicedetails) - Get device details +* [ModifyDevice](docs/sdks/devices/README.md#modifydevice) - Enable or disable a device +* [SetChannelmap](docs/sdks/devices/README.md#setchannelmap) - Set a device's channel mapping +* [GetDevicesChannels](docs/sdks/devices/README.md#getdeviceschannels) - Get a device's channels +* [SetDevicePreferences](docs/sdks/devices/README.md#setdevicepreferences) - Set device preferences +* [StopScan](docs/sdks/devices/README.md#stopscan) - Tell a device to stop scanning for channels +* [Scan](docs/sdks/devices/README.md#scan) - Tell a device to scan for channels +* [GetThumb](docs/sdks/devices/README.md#getthumb) - Get device thumb + +### [DownloadQueue](docs/sdks/downloadqueue/README.md) + +* [CreateDownloadQueue](docs/sdks/downloadqueue/README.md#createdownloadqueue) - Create download queue +* [GetDownloadQueue](docs/sdks/downloadqueue/README.md#getdownloadqueue) - Get a download queue +* [AddDownloadQueueItems](docs/sdks/downloadqueue/README.md#adddownloadqueueitems) - Add to download queue +* [ListDownloadQueueItems](docs/sdks/downloadqueue/README.md#listdownloadqueueitems) - Get download queue items +* [GetItemDecision](docs/sdks/downloadqueue/README.md#getitemdecision) - Grab download queue item decision +* [GetDownloadQueueMedia](docs/sdks/downloadqueue/README.md#getdownloadqueuemedia) - Grab download queue media +* [RemoveDownloadQueueItems](docs/sdks/downloadqueue/README.md#removedownloadqueueitems) - Delete download queue items +* [GetDownloadQueueItems](docs/sdks/downloadqueue/README.md#getdownloadqueueitems) - Get download queue items +* [RestartProcessingDownloadQueueItems](docs/sdks/downloadqueue/README.md#restartprocessingdownloadqueueitems) - Restart processing of items from the decision + +### [DVRs](docs/sdks/dvrs/README.md) + +* [ListDVRs](docs/sdks/dvrs/README.md#listdvrs) - Get DVRs +* [CreateDVR](docs/sdks/dvrs/README.md#createdvr) - Create a DVR +* [DeleteDVR](docs/sdks/dvrs/README.md#deletedvr) - Delete a single DVR +* [GetDVR](docs/sdks/dvrs/README.md#getdvr) - Get a single DVR +* [DeleteLineup](docs/sdks/dvrs/README.md#deletelineup) - Delete a DVR Lineup +* [AddLineup](docs/sdks/dvrs/README.md#addlineup) - Add a DVR Lineup +* [SetDVRPreferences](docs/sdks/dvrs/README.md#setdvrpreferences) - Set DVR preferences +* [StopDVRReload](docs/sdks/dvrs/README.md#stopdvrreload) - Tell a DVR to stop reloading program guide +* [ReloadGuide](docs/sdks/dvrs/README.md#reloadguide) - Tell a DVR to reload program guide +* [TuneChannel](docs/sdks/dvrs/README.md#tunechannel) - Tune a channel on a DVR +* [RemoveDeviceFromDVR](docs/sdks/dvrs/README.md#removedevicefromdvr) - Remove a device from an existing DVR +* [AddDeviceToDVR](docs/sdks/dvrs/README.md#adddevicetodvr) - Add a device to an existing DVR + +### [Epg](docs/sdks/epg/README.md) + +* [ComputeChannelMap](docs/sdks/epg/README.md#computechannelmap) - Compute the best channel map +* [GetChannels](docs/sdks/epg/README.md#getchannels) - Get channels for a lineup +* [GetCountries](docs/sdks/epg/README.md#getcountries) - Get all countries +* [GetAllLanguages](docs/sdks/epg/README.md#getalllanguages) - Get all languages +* [GetLineup](docs/sdks/epg/README.md#getlineup) - Compute the best lineup +* [GetLineupChannels](docs/sdks/epg/README.md#getlineupchannels) - Get the channels for mulitple lineups +* [GetCountriesLineups](docs/sdks/epg/README.md#getcountrieslineups) - Get lineups for a country via postal code +* [GetCountryRegions](docs/sdks/epg/README.md#getcountryregions) - Get regions for a country +* [ListLineups](docs/sdks/epg/README.md#listlineups) - Get lineups for a region + +### [Events](docs/sdks/events/README.md) + +* [GetNotifications](docs/sdks/events/README.md#getnotifications) - Connect to Eventsource +* [ConnectWebSocket](docs/sdks/events/README.md#connectwebsocket) - Connect to WebSocket + +### [General](docs/sdks/general/README.md) + +* [GetServerInfo](docs/sdks/general/README.md#getserverinfo) - Get PMS info +* [GetIdentity](docs/sdks/general/README.md#getidentity) - Get PMS identity +* [GetSourceConnectionInformation](docs/sdks/general/README.md#getsourceconnectioninformation) - Get Source Connection Information +* [GetTransientToken](docs/sdks/general/README.md#gettransienttoken) - Get Transient Tokens ### [Hubs](docs/sdks/hubs/README.md) -* [GetGlobalHubs](docs/sdks/hubs/README.md#getglobalhubs) - Get Global Hubs -* [GetRecentlyAdded](docs/sdks/hubs/README.md#getrecentlyadded) - Get Recently Added -* [GetLibraryHubs](docs/sdks/hubs/README.md#getlibraryhubs) - Get library specific hubs +* [GetAllHubs](docs/sdks/hubs/README.md#getallhubs) - Get global hubs +* [GetContinueWatching](docs/sdks/hubs/README.md#getcontinuewatching) - Get the continue watching hub +* [GetHubItems](docs/sdks/hubs/README.md#gethubitems) - Get a hub's items +* [GetPromotedHubs](docs/sdks/hubs/README.md#getpromotedhubs) - Get the hubs which are promoted +* [GetMetadataHubs](docs/sdks/hubs/README.md#getmetadatahubs) - Get hubs for section by metadata item +* [GetPostplayHubs](docs/sdks/hubs/README.md#getpostplayhubs) - Get postplay hubs +* [GetRelatedHubs](docs/sdks/hubs/README.md#getrelatedhubs) - Get related hubs +* [GetSectionHubs](docs/sdks/hubs/README.md#getsectionhubs) - Get section hubs +* [ResetSectionDefaults](docs/sdks/hubs/README.md#resetsectiondefaults) - Reset hubs to defaults +* [ListHubs](docs/sdks/hubs/README.md#listhubs) - Get hubs +* [CreateCustomHub](docs/sdks/hubs/README.md#createcustomhub) - Create a custom hub +* [MoveHub](docs/sdks/hubs/README.md#movehub) - Move Hub +* [DeleteCustomHub](docs/sdks/hubs/README.md#deletecustomhub) - Delete a custom hub +* [UpdateHubVisibility](docs/sdks/hubs/README.md#updatehubvisibility) - Change hub visibility ### [Library](docs/sdks/library/README.md) -* [GetFileHash](docs/sdks/library/README.md#getfilehash) - Get Hash Value -* [GetRecentlyAddedLibrary](docs/sdks/library/README.md#getrecentlyaddedlibrary) - Get Recently Added -* [GetAllLibraries](docs/sdks/library/README.md#getalllibraries) - Get All Libraries -* [GetLibraryDetails](docs/sdks/library/README.md#getlibrarydetails) - Get Library Details -* [DeleteLibrary](docs/sdks/library/README.md#deletelibrary) - Delete Library Section -* [GetLibraryItems](docs/sdks/library/README.md#getlibraryitems) - Get Library Items -* [GetLibrarySectionsAll](docs/sdks/library/README.md#getlibrarysectionsall) - Get Library section media by tag ALL -* [GetRefreshLibraryMetadata](docs/sdks/library/README.md#getrefreshlibrarymetadata) - Refresh Metadata Of The Library -* [GetSearchLibrary](docs/sdks/library/README.md#getsearchlibrary) - Search Library -* [GetGenresLibrary](docs/sdks/library/README.md#getgenreslibrary) - Get Genres of library media -* [GetCountriesLibrary](docs/sdks/library/README.md#getcountrieslibrary) - Get Countries of library media -* [GetActorsLibrary](docs/sdks/library/README.md#getactorslibrary) - Get Actors of library media -* [GetSearchAllLibraries](docs/sdks/library/README.md#getsearchalllibraries) - Search All Libraries -* [GetMediaMetaData](docs/sdks/library/README.md#getmediametadata) - Get Media Metadata -* [GetMediaArts](docs/sdks/library/README.md#getmediaarts) - Get Media Background Artwork -* [PostMediaArts](docs/sdks/library/README.md#postmediaarts) - Upload Media Background Artwork -* [GetMediaPosters](docs/sdks/library/README.md#getmediaposters) - Get Media Posters -* [PostMediaPoster](docs/sdks/library/README.md#postmediaposter) - Upload Media Poster -* [GetMetadataChildren](docs/sdks/library/README.md#getmetadatachildren) - Get Items Children -* [GetTopWatchedContent](docs/sdks/library/README.md#gettopwatchedcontent) - Get Top Watched Content +* [GetLibraryItems](docs/sdks/library/README.md#getlibraryitems) - Get all items in library +* [DeleteCaches](docs/sdks/library/README.md#deletecaches) - Delete library caches +* [CleanBundles](docs/sdks/library/README.md#cleanbundles) - Clean bundles +* [IngestTransientItem](docs/sdks/library/README.md#ingesttransientitem) - Ingest a transient item +* [GetLibraryMatches](docs/sdks/library/README.md#getlibrarymatches) - Get library matches +* [OptimizeDatabase](docs/sdks/library/README.md#optimizedatabase) - Optimize the Database +* [GetRandomArtwork](docs/sdks/library/README.md#getrandomartwork) - Get random artwork +* [GetSections](docs/sdks/library/README.md#getsections) - Get library sections (main Media Provider Only) +* [AddSection](docs/sdks/library/README.md#addsection) - Add a library section +* [StopAllRefreshes](docs/sdks/library/README.md#stopallrefreshes) - Stop refresh +* [GetSectionsPrefs](docs/sdks/library/README.md#getsectionsprefs) - Get section prefs +* [RefreshSectionsMetadata](docs/sdks/library/README.md#refreshsectionsmetadata) - Refresh all sections +* [GetTags](docs/sdks/library/README.md#gettags) - Get all library tags of a type +* [DeleteMetadataItem](docs/sdks/library/README.md#deletemetadataitem) - Delete a metadata item +* [EditMetadataItem](docs/sdks/library/README.md#editmetadataitem) - Edit a metadata item +* [DetectAds](docs/sdks/library/README.md#detectads) - Ad-detect an item +* [GetAllItemLeaves](docs/sdks/library/README.md#getallitemleaves) - Get the leaves of an item +* [AnalyzeMetadata](docs/sdks/library/README.md#analyzemetadata) - Analyze an item +* [GenerateThumbs](docs/sdks/library/README.md#generatethumbs) - Generate thumbs of chapters for an item +* [DetectCredits](docs/sdks/library/README.md#detectcredits) - Credit detect a metadata item +* [GetExtras](docs/sdks/library/README.md#getextras) - Get an item's extras +* [AddExtras](docs/sdks/library/README.md#addextras) - Add to an item's extras +* [GetFile](docs/sdks/library/README.md#getfile) - Get a file from a metadata or media bundle +* [StartBifGeneration](docs/sdks/library/README.md#startbifgeneration) - Start BIF generation of an item +* [DetectIntros](docs/sdks/library/README.md#detectintros) - Intro detect an item +* [CreateMarker](docs/sdks/library/README.md#createmarker) - Create a marker +* [MatchItem](docs/sdks/library/README.md#matchitem) - Match a metadata item +* [ListMatches](docs/sdks/library/README.md#listmatches) - Get metadata matches for an item +* [MergeItems](docs/sdks/library/README.md#mergeitems) - Merge a metadata item +* [ListSonicallySimilar](docs/sdks/library/README.md#listsonicallysimilar) - Get nearest tracks to metadata item +* [SetItemPreferences](docs/sdks/library/README.md#setitempreferences) - Set metadata preferences +* [RefreshItemsMetadata](docs/sdks/library/README.md#refreshitemsmetadata) - Refresh a metadata item +* [GetRelatedItems](docs/sdks/library/README.md#getrelateditems) - Get related items +* [ListSimilar](docs/sdks/library/README.md#listsimilar) - Get similar items +* [SplitItem](docs/sdks/library/README.md#splititem) - Split a metadata item +* [AddSubtitles](docs/sdks/library/README.md#addsubtitles) - Add subtitles +* [GetItemTree](docs/sdks/library/README.md#getitemtree) - Get metadata items as a tree +* [Unmatch](docs/sdks/library/README.md#unmatch) - Unmatch a metadata item +* [ListTopUsers](docs/sdks/library/README.md#listtopusers) - Get metadata top users +* [DetectVoiceActivity](docs/sdks/library/README.md#detectvoiceactivity) - Detect voice activity +* [GetAugmentationStatus](docs/sdks/library/README.md#getaugmentationstatus) - Get augmentation status +* [SetStreamSelection](docs/sdks/library/README.md#setstreamselection) - Set stream selection +* [GetPerson](docs/sdks/library/README.md#getperson) - Get person details +* [ListPersonMedia](docs/sdks/library/README.md#listpersonmedia) - Get media for a person +* [DeleteLibrarySection](docs/sdks/library/README.md#deletelibrarysection) - Delete a library section +* [GetLibraryDetails](docs/sdks/library/README.md#getlibrarydetails) - Get a library section by id +* [EditSection](docs/sdks/library/README.md#editsection) - Edit a library section +* [UpdateItems](docs/sdks/library/README.md#updateitems) - Set the fields of the filtered items +* [StartAnalysis](docs/sdks/library/README.md#startanalysis) - Analyze a section +* [Autocomplete](docs/sdks/library/README.md#autocomplete) - Get autocompletions for search +* [GetCollections](docs/sdks/library/README.md#getcollections) - Get collections in a section +* [GetCommon](docs/sdks/library/README.md#getcommon) - Get common fields for items +* [EmptyTrash](docs/sdks/library/README.md#emptytrash) - Empty section trash +* [GetSectionFilters](docs/sdks/library/README.md#getsectionfilters) - Get section filters +* [GetFirstCharacters](docs/sdks/library/README.md#getfirstcharacters) - Get list of first characters +* [DeleteIndexes](docs/sdks/library/README.md#deleteindexes) - Delete section indexes +* [DeleteIntros](docs/sdks/library/README.md#deleteintros) - Delete section intro markers +* [GetSectionPreferences](docs/sdks/library/README.md#getsectionpreferences) - Get section prefs +* [SetSectionPreferences](docs/sdks/library/README.md#setsectionpreferences) - Set section prefs +* [CancelRefresh](docs/sdks/library/README.md#cancelrefresh) - Cancel section refresh +* [RefreshSection](docs/sdks/library/README.md#refreshsection) - Refresh section +* [GetAvailableSorts](docs/sdks/library/README.md#getavailablesorts) - Get a section sorts +* [GetStreamLevels](docs/sdks/library/README.md#getstreamlevels) - Get loudness about a stream in json +* [GetStreamLoudness](docs/sdks/library/README.md#getstreamloudness) - Get loudness about a stream +* [GetChapterImage](docs/sdks/library/README.md#getchapterimage) - Get a chapter image +* [SetItemArtwork](docs/sdks/library/README.md#setitemartwork) - Set an item's artwork, theme, etc +* [UpdateItemArtwork](docs/sdks/library/README.md#updateitemartwork) - Set an item's artwork, theme, etc +* [DeleteMarker](docs/sdks/library/README.md#deletemarker) - Delete a marker +* [EditMarker](docs/sdks/library/README.md#editmarker) - Edit a marker +* [DeleteMediaItem](docs/sdks/library/README.md#deletemediaitem) - Delete a media item +* [GetPartIndex](docs/sdks/library/README.md#getpartindex) - Get BIF index for a part +* [DeleteCollection](docs/sdks/library/README.md#deletecollection) - Delete a collection +* [GetSectionImage](docs/sdks/library/README.md#getsectionimage) - Get a section composite image +* [DeleteStream](docs/sdks/library/README.md#deletestream) - Delete a stream +* [GetStream](docs/sdks/library/README.md#getstream) - Get a stream +* [SetStreamOffset](docs/sdks/library/README.md#setstreamoffset) - Set a stream offset +* [GetItemArtwork](docs/sdks/library/README.md#getitemartwork) - Get an item's artwork, theme, etc +* [GetMediaPart](docs/sdks/library/README.md#getmediapart) - Get a media part +* [GetImageFromBif](docs/sdks/library/README.md#getimagefrombif) - Get an image from part BIF + +### [LibraryCollections](docs/sdks/librarycollections/README.md) + +* [AddCollectionItems](docs/sdks/librarycollections/README.md#addcollectionitems) - Add items to a collection +* [DeleteCollectionItem](docs/sdks/librarycollections/README.md#deletecollectionitem) - Delete an item from a collection +* [MoveCollectionItem](docs/sdks/librarycollections/README.md#movecollectionitem) - Reorder an item in the collection + +### [LibraryPlaylists](docs/sdks/libraryplaylists/README.md) + +* [CreatePlaylist](docs/sdks/libraryplaylists/README.md#createplaylist) - Create a Playlist +* [UploadPlaylist](docs/sdks/libraryplaylists/README.md#uploadplaylist) - Upload +* [DeletePlaylist](docs/sdks/libraryplaylists/README.md#deleteplaylist) - Delete a Playlist +* [UpdatePlaylist](docs/sdks/libraryplaylists/README.md#updateplaylist) - Editing a Playlist +* [GetPlaylistGenerators](docs/sdks/libraryplaylists/README.md#getplaylistgenerators) - Get a playlist's generators +* [ClearPlaylistItems](docs/sdks/libraryplaylists/README.md#clearplaylistitems) - Clearing a playlist +* [AddPlaylistItems](docs/sdks/libraryplaylists/README.md#addplaylistitems) - Adding to a Playlist +* [DeletePlaylistItem](docs/sdks/libraryplaylists/README.md#deleteplaylistitem) - Delete a Generator +* [GetPlaylistGenerator](docs/sdks/libraryplaylists/README.md#getplaylistgenerator) - Get a playlist generator +* [GetPlaylistGeneratorItems](docs/sdks/libraryplaylists/README.md#getplaylistgeneratoritems) - Get a playlist generator's items +* [MovePlaylistItem](docs/sdks/libraryplaylists/README.md#moveplaylistitem) - Moving items in a playlist +* [RefreshPlaylist](docs/sdks/libraryplaylists/README.md#refreshplaylist) - Reprocess a generator + +### [LiveTV](docs/sdks/livetv/README.md) + +* [GetSessions](docs/sdks/livetv/README.md#getsessions) - Get all sessions +* [GetLiveTVSession](docs/sdks/livetv/README.md#getlivetvsession) - Get a single session +* [GetSessionPlaylistIndex](docs/sdks/livetv/README.md#getsessionplaylistindex) - Get a session playlist index +* [GetSessionSegment](docs/sdks/livetv/README.md#getsessionsegment) - Get a single session segment ### [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 +* [WriteLog](docs/sdks/log/README.md#writelog) - Logging a multi-line message to the Plex Media Server log +* [WriteMessage](docs/sdks/log/README.md#writemessage) - Logging a single-line message to the Plex Media Server log +* [EnablePapertrail](docs/sdks/log/README.md#enablepapertrail) - Enabling Papertrail -### [Media](docs/sdks/media/README.md) +### [Playlist](docs/sdks/playlist/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 -* [GetBannerImage](docs/sdks/media/README.md#getbannerimage) - Get Banner Image -* [GetThumbImage](docs/sdks/media/README.md#getthumbimage) - Get Thumb Image +* [ListPlaylists](docs/sdks/playlist/README.md#listplaylists) - List playlists +* [GetPlaylist](docs/sdks/playlist/README.md#getplaylist) - Retrieve Playlist +* [GetPlaylistItems](docs/sdks/playlist/README.md#getplaylistitems) - Retrieve Playlist Contents -### [Playlists](docs/sdks/playlists/README.md) +### [PlayQueue](docs/sdks/playqueue/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 +* [CreatePlayQueue](docs/sdks/playqueue/README.md#createplayqueue) - Create a play queue +* [GetPlayQueue](docs/sdks/playqueue/README.md#getplayqueue) - Retrieve a play queue +* [AddToPlayQueue](docs/sdks/playqueue/README.md#addtoplayqueue) - Add a generator or playlist to a play queue +* [ClearPlayQueue](docs/sdks/playqueue/README.md#clearplayqueue) - Clear a play queue +* [ResetPlayQueue](docs/sdks/playqueue/README.md#resetplayqueue) - Reset a play queue +* [Shuffle](docs/sdks/playqueue/README.md#shuffle) - Shuffle a play queue +* [Unshuffle](docs/sdks/playqueue/README.md#unshuffle) - Unshuffle a play queue +* [DeletePlayQueueItem](docs/sdks/playqueue/README.md#deleteplayqueueitem) - Delete an item from a play queue +* [MovePlayQueueItem](docs/sdks/playqueue/README.md#moveplayqueueitem) - Move an item in a play queue -### [Plex](docs/sdks/plex/README.md) +### [Preferences](docs/sdks/preferences/README.md) -* [GetCompanionsData](docs/sdks/plex/README.md#getcompanionsdata) - Get Companions Data -* [GetUserFriends](docs/sdks/plex/README.md#getuserfriends) - Get list of friends of the user logged in -* [GetGeoData](docs/sdks/plex/README.md#getgeodata) - Get Geo Data -* [GetHomeData](docs/sdks/plex/README.md#gethomedata) - Get Plex Home Data -* [GetServerResources](docs/sdks/plex/README.md#getserverresources) - Get Server Resources -* [GetPin](docs/sdks/plex/README.md#getpin) - Get a Pin -* [GetTokenByPinId](docs/sdks/plex/README.md#gettokenbypinid) - Get Access Token by PinId +* [GetAllPreferences](docs/sdks/preferences/README.md#getallpreferences) - Get all preferences +* [SetPreferences](docs/sdks/preferences/README.md#setpreferences) - Set preferences +* [GetPreference](docs/sdks/preferences/README.md#getpreference) - Get a preferences +### [Provider](docs/sdks/provider/README.md) + +* [ListProviders](docs/sdks/provider/README.md#listproviders) - Get the list of available media providers +* [AddProvider](docs/sdks/provider/README.md#addprovider) - Add a media provider +* [RefreshProviders](docs/sdks/provider/README.md#refreshproviders) - Refresh media providers +* [DeleteMediaProvider](docs/sdks/provider/README.md#deletemediaprovider) - Delete a media provider + +### [Rate](docs/sdks/rate/README.md) + +* [SetRating](docs/sdks/rate/README.md#setrating) - Rate an item ### [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 +* [SearchHubs](docs/sdks/search/README.md#searchhubs) - Search Hub +* [VoiceSearchHubs](docs/sdks/search/README.md#voicesearchhubs) - Voice Search Hub -### [Server](docs/sdks/server/README.md) +### [Status](docs/sdks/status/README.md) -* [GetServerCapabilities](docs/sdks/server/README.md#getservercapabilities) - Get 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 -* [GetMediaProviders](docs/sdks/server/README.md#getmediaproviders) - Get Media Providers -* [GetServerList](docs/sdks/server/README.md#getserverlist) - Get Server List +* [ListSessions](docs/sdks/status/README.md#listsessions) - List Sessions +* [GetBackgroundTasks](docs/sdks/status/README.md#getbackgroundtasks) - Get background tasks +* [ListPlaybackHistory](docs/sdks/status/README.md#listplaybackhistory) - List Playback History +* [TerminateSession](docs/sdks/status/README.md#terminatesession) - Terminate a session +* [DeleteHistory](docs/sdks/status/README.md#deletehistory) - Delete Single History Item +* [GetHistoryItem](docs/sdks/status/README.md#gethistoryitem) - Get Single History Item -### [Sessions](docs/sdks/sessions/README.md) +### [Subscriptions](docs/sdks/subscriptions/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 +* [GetAllSubscriptions](docs/sdks/subscriptions/README.md#getallsubscriptions) - Get all subscriptions +* [CreateSubscription](docs/sdks/subscriptions/README.md#createsubscription) - Create a subscription +* [ProcessSubscriptions](docs/sdks/subscriptions/README.md#processsubscriptions) - Process all subscriptions +* [GetScheduledRecordings](docs/sdks/subscriptions/README.md#getscheduledrecordings) - Get all scheduled recordings +* [GetTemplate](docs/sdks/subscriptions/README.md#gettemplate) - Get the subscription template +* [CancelGrab](docs/sdks/subscriptions/README.md#cancelgrab) - Cancel an existing grab +* [DeleteSubscription](docs/sdks/subscriptions/README.md#deletesubscription) - Delete a subscription +* [GetSubscription](docs/sdks/subscriptions/README.md#getsubscription) - Get a single subscription +* [EditSubscriptionPreferences](docs/sdks/subscriptions/README.md#editsubscriptionpreferences) - Edit a subscription +* [ReorderSubscription](docs/sdks/subscriptions/README.md#reordersubscription) - Re-order a subscription -### [Statistics](docs/sdks/statistics/README.md) +### [Timeline](docs/sdks/timeline/README.md) -* [GetStatistics](docs/sdks/statistics/README.md#getstatistics) - Get Media Statistics -* [GetResourcesStatistics](docs/sdks/statistics/README.md#getresourcesstatistics) - Get Resources Statistics -* [GetBandwidthStatistics](docs/sdks/statistics/README.md#getbandwidthstatistics) - Get Bandwidth Statistics +* [MarkPlayed](docs/sdks/timeline/README.md#markplayed) - Mark an item as played +* [Report](docs/sdks/timeline/README.md#report) - Report media timeline +* [Unscrobble](docs/sdks/timeline/README.md#unscrobble) - Mark an item as unplayed + +### [Transcoder](docs/sdks/transcoder/README.md) + +* [TranscodeImage](docs/sdks/transcoder/README.md#transcodeimage) - Transcode an image +* [MakeDecision](docs/sdks/transcoder/README.md#makedecision) - Make a decision on media playback +* [TriggerFallback](docs/sdks/transcoder/README.md#triggerfallback) - Manually trigger a transcoder fallback +* [TranscodeSubtitles](docs/sdks/transcoder/README.md#transcodesubtitles) - Transcode subtitles +* [StartTranscodeSession](docs/sdks/transcoder/README.md#starttranscodesession) - Start A Transcoding Session + +### [UltraBlur](docs/sdks/ultrablur/README.md) + +* [GetColors](docs/sdks/ultrablur/README.md#getcolors) - Get UltraBlur Colors +* [GetImage](docs/sdks/ultrablur/README.md#getimage) - Get UltraBlur Image ### [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 - -### [Users](docs/sdks/users/README.md) - -* [GetUsers](docs/sdks/users/README.md#getusers) - Get list of all connected users - -### [Video](docs/sdks/video/README.md) - -* [GetTimeline](docs/sdks/video/README.md#gettimeline) - Get the timeline for a media item -* [StartUniversalTranscode](docs/sdks/video/README.md#startuniversaltranscode) - Start Universal Transcode - -### [Watchlist](docs/sdks/watchlist/README.md) - -* [GetWatchList](docs/sdks/watchlist/README.md#getwatchlist) - Get User Watchlist +* [ApplyUpdates](docs/sdks/updater/README.md#applyupdates) - Applying updates +* [CheckUpdates](docs/sdks/updater/README.md#checkupdates) - Checking for updates +* [GetUpdatesStatus](docs/sdks/updater/README.md#getupdatesstatus) - Querying status of updates
@@ -190,61 +420,87 @@ var res = await sdk.Server.GetServerCapabilitiesAsync(); ## Server Selection -### Server Variables +### Select Server by Index -The default server `{protocol}://{ip}:{port}` contains variables and is set to `https://10.10.10.47:32400` by default. To override default values, the following parameters are available when initializing the SDK client instance: +You can override the default server globally by passing a server index to the `serverIndex: int` optional parameter when initializing the SDK client instance. The selected server will then be used as the default on the operations that use it. This table lists the indexes associated with the available servers: -| Variable | Parameter | Supported Values | Default | Description | -| ---------- | ------------------------------------------------------- | -------------------------- | --------------- | ---------------------------------------------- | -| `protocol` | `protocol: LukeHagar.PlexAPI.SDK.Models.ServerProtocol` | - `"http"`
- `"https"` | `"https"` | The protocol to use for the server connection | -| `ip` | `ip: string` | string | `"10.10.10.47"` | The IP address or hostname of your Plex Server | -| `port` | `port: string` | string | `"32400"` | The port of your Plex Server | +| # | Server | Variables | Description | +| --- | ---------------------------------------------------------- | -------------------------------------------- | ----------- | +| 0 | `https://{IP-description}.{identifier}.plex.direct:{port}` | `identifier`
`IP-description`
`port` | | +| 1 | `{protocol}://{host}:{port}` | `protocol`
`host`
`port` | | +| 2 | `https://{full_server_url}` | `full_server_url` | | + +If the selected server has variables, you may override its default values through the additional parameters made available in the SDK constructor: + +| Variable | Parameter | Default | Description | +| ----------------- | ----------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `identifier` | `identifier: string` | `"0123456789abcdef0123456789abcdef"` | The unique identifier of this particular PMS | +| `IP-description` | `ipDescription: string` | `"1-2-3-4"` | A `-` separated string of the IPv4 or IPv6 address components | +| `port` | `port: string` | `"32400"` | The Port number configured on the PMS. Typically (`32400`).
If using a reverse proxy, this would be the port number configured on the proxy.
| +| `protocol` | `protocol: string` | `"http"` | The network protocol to use. Typically (`http` or `https`) | +| `host` | `host: string` | `"localhost"` | The Host of the PMS.
If using on a local network, this is the internal IP address of the server hosting the PMS.
If using on an external network, this is the external IP address for your network, and requires port forwarding.
If using a reverse proxy, this would be the external DNS domain for your network, and requires the proxy handle port forwarding.
| +| `full_server_url` | `fullServerUrl: string` | `"http://localhost:32400"` | The full manual URL to access the PMS | #### Example ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; var sdk = new PlexAPI( - protocol: "https", - ip: "4982:bc2a:b4f8:efb5:2394:5bc3:ab4f:0e6d", - port: "44765", - accessToken: "" + serverIndex: 1, + protocol: "", + host: "electric-excess.name", + port: "36393", + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); -var res = await sdk.Server.GetServerCapabilitiesAsync(); +GetServerInfoRequest req = new GetServerInfoRequest() {}; + +var res = await sdk.General.GetServerInfoAsync(req); // handle response ``` ### Override Server URL Per-Client -The default server can be overridden globally by passing a URL to the `serverUrl: string` optional parameter when initializing the SDK client instance. For example: +The default server can also be overridden globally by passing a URL to the `serverUrl: string` optional parameter when initializing the SDK client instance. For example: ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; var sdk = new PlexAPI( - serverUrl: "https://10.10.10.47:32400", - accessToken: "" + serverUrl: "https://http://localhost:32400", + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); -var res = await sdk.Server.GetServerCapabilitiesAsync(); +GetServerInfoRequest req = new GetServerInfoRequest() {}; -// handle response -``` - -### Override Server URL Per-Operation - -The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example: -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Plex.GetCompanionsDataAsync(serverUrl: "https://plex.tv/api/v2"); +var res = await sdk.General.GetServerInfoAsync(req); // handle response ``` @@ -257,18 +513,34 @@ var res = await sdk.Plex.GetCompanionsDataAsync(serverUrl: "https://plex.tv/api/ This SDK supports the following security scheme globally: -| Name | Type | Scheme | -| ------------- | ------ | ------- | -| `AccessToken` | apiKey | API key | +| Name | Type | Scheme | +| ------- | ------ | ------- | +| `Token` | apiKey | API key | -To authenticate with the API the `AccessToken` parameter must be set when initializing the SDK client instance. For example: +To authenticate with the API the `Token` parameter must be set when initializing the SDK client instance. For example: ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + token: "", + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay" +); -var res = await sdk.Server.GetServerCapabilitiesAsync(); +GetServerInfoRequest req = new GetServerInfoRequest() {}; + +var res = await sdk.General.GetServerInfoAsync(req); // handle response ``` @@ -288,21 +560,34 @@ var res = await sdk.Server.GetServerCapabilitiesAsync(); | `RawResponse` | *HttpResponseMessage* | HTTP response object | | `Body` | *string* | HTTP response body | -Some exceptions in this SDK include an additional `Payload` field, which will contain deserialized custom error data when present. Possible exceptions are listed in the [Error Classes](#error-classes) section. - ### Example ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Errors; -using System.Collections.Generic; +using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); try { - var res = await sdk.Server.GetServerCapabilitiesAsync(); + GetServerInfoRequest req = new GetServerInfoRequest() {}; + + var res = await sdk.General.GetServerInfoAsync(req); // handle response } @@ -317,20 +602,6 @@ catch (PlexAPIError ex) // all SDK exceptions inherit from PlexAPIError int statusCode = ex.StatusCode; string? contentType = ex.ContentType; var responseBody = ex.Body; - - if (ex is GetServerCapabilitiesBadRequest) // different exceptions may be thrown depending on the method - { - // Check error data fields - GetServerCapabilitiesBadRequestPayload payload = ex.Payload; - List Errors = payload.Errors; - HttpResponseMessage RawResponse = payload.RawResponse; - } - - // An underlying cause may be provided - if (ex.InnerException != null) - { - Exception cause = ex.InnerException; - } } catch (System.Net.Http.HttpRequestException ex) { @@ -343,202 +614,19 @@ catch (System.Net.Http.HttpRequestException ex) **Primary exception:** * [`PlexAPIError`](./LukeHagar/PlexAPI/SDK/Models/Errors/PlexAPIError.cs): The base class for HTTP error responses. -
Less common exceptions (158) +
Less common exceptions (2) * [`System.Net.Http.HttpRequestException`](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httprequestexception): Network connectivity error. For more details about the underlying cause, inspect the `ex.InnerException`. * Inheriting from [`PlexAPIError`](./LukeHagar/PlexAPI/SDK/Models/Errors/PlexAPIError.cs): - * [`GetServerCapabilitiesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetServerPreferencesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetAvailableClientsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetDevicesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetMyPlexAccountBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetResizedPhotoBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetMediaProvidersBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetServerListBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`MarkPlayedBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`MarkUnplayedBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`UpdatePlayProgressBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetBannerImageBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetThumbImageBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetTimelineBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`StartUniversalTranscodeBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetServerActivitiesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`CancelServerActivitiesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetButlerTasksBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`StartAllTasksBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`StopAllTasksBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`StartTaskBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`StopTaskBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetCompanionsDataBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetUserFriendsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetGeoDataBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetHomeDataBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetServerResourcesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetPinBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPinBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetTokenByPinIdBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetGlobalHubsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetLibraryHubsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`PerformSearchBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`PerformVoiceSearchBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetSearchResultsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetFileHashBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetRecentlyAddedLibraryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetAllLibrariesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetLibraryDetailsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`DeleteLibraryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetLibraryItemsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetLibrarySectionsAllBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetRefreshLibraryMetadataBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetSearchLibraryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetGenresLibraryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetCountriesLibraryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetActorsLibraryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetSearchAllLibrariesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetMediaMetaDataBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetMetadataChildrenBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetTopWatchedContentBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetWatchListBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`LogLineBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/LogLineBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`LogMultiLineBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`EnablePaperTrailBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`CreatePlaylistBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetPlaylistsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetPlaylistBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`DeletePlaylistBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`UpdatePlaylistBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetPlaylistContentsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`ClearPlaylistContentsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`AddPlaylistContentsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`UploadPlaylistBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetTransientTokenBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetSourceConnectionInformationBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetTokenDetailsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`PostUsersSignInDataBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetStatisticsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetResourcesStatisticsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetBandwidthStatisticsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetSessionsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetSessionHistoryBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetTranscodeSessionsBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`StopTranscodeSessionBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetUpdateStatusBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`CheckForUpdatesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`ApplyUpdatesBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetUsersBadRequest`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersBadRequest.cs): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* - * [`GetServerCapabilitiesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerCapabilitiesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetServerPreferencesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerPreferencesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetAvailableClientsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetAvailableClientsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetDevicesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetMyPlexAccountUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetResizedPhotoUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetResizedPhotoUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetMediaProvidersUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaProvidersUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetServerListUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerListUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`MarkPlayedUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/MarkPlayedUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`MarkUnplayedUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/MarkUnplayedUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`UpdatePlayProgressUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlayProgressUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetBannerImageUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetBannerImageUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetThumbImageUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetThumbImageUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetTimelineUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTimelineUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`StartUniversalTranscodeUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/StartUniversalTranscodeUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetServerActivitiesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerActivitiesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`CancelServerActivitiesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/CancelServerActivitiesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetButlerTasksUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetButlerTasksUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`StartAllTasksUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/StartAllTasksUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`StopAllTasksUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/StopAllTasksUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`StartTaskUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/StartTaskUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`StopTaskUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/StopTaskUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetCompanionsDataUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetCompanionsDataUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetUserFriendsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetUserFriendsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetGeoDataUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetHomeDataUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetHomeDataUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetServerResourcesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerResourcesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetGlobalHubsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetGlobalHubsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetLibraryHubsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryHubsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`PerformSearchUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/PerformSearchUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`PerformVoiceSearchUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/PerformVoiceSearchUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetSearchResultsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchResultsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetFileHashUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetRecentlyAddedLibraryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetRecentlyAddedLibraryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetAllLibrariesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetAllLibrariesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetLibraryDetailsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryDetailsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`DeleteLibraryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/DeleteLibraryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetLibraryItemsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibraryItemsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetLibrarySectionsAllUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetLibrarySectionsAllUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetRefreshLibraryMetadataUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetRefreshLibraryMetadataUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetSearchLibraryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchLibraryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetGenresLibraryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetGenresLibraryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetCountriesLibraryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetCountriesLibraryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetActorsLibraryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetActorsLibraryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetSearchAllLibrariesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSearchAllLibrariesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetMediaMetaDataUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMediaMetaDataUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetMetadataChildrenUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetMetadataChildrenUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetTopWatchedContentUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTopWatchedContentUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetWatchListUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetWatchListUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`LogLineUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/LogLineUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`LogMultiLineUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/LogMultiLineUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`EnablePaperTrailUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/EnablePaperTrailUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`CreatePlaylistUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/CreatePlaylistUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetPlaylistsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetPlaylistUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`DeletePlaylistUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/DeletePlaylistUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`UpdatePlaylistUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/UpdatePlaylistUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetPlaylistContentsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistContentsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`ClearPlaylistContentsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/ClearPlaylistContentsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`AddPlaylistContentsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/AddPlaylistContentsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`UploadPlaylistUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/UploadPlaylistUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetTransientTokenUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTransientTokenUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetSourceConnectionInformationUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSourceConnectionInformationUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetTokenDetailsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenDetailsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`PostUsersSignInDataUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/PostUsersSignInDataUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetStatisticsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetStatisticsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetResourcesStatisticsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetResourcesStatisticsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetBandwidthStatisticsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetBandwidthStatisticsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetSessionsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetSessionHistoryUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetSessionHistoryUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetTranscodeSessionsUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTranscodeSessionsUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`StopTranscodeSessionUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/StopTranscodeSessionUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetUpdateStatusUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetUpdateStatusUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`CheckForUpdatesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/CheckForUpdatesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`ApplyUpdatesUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/ApplyUpdatesUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetUsersUnauthorized`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetUsersUnauthorized.cs): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* - * [`GetTokenByPinIdResponseBody`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetTokenByPinIdResponseBody.cs): Not Found or Expired. Status code `404`. Applicable to 1 of 84 methods.* - * [`GetServerIdentityRequestTimeout`](./LukeHagar/PlexAPI/SDK/Models/Errors/GetServerIdentityRequestTimeout.cs): Request Timeout. Status code `408`. Applicable to 1 of 84 methods.* * [`ResponseValidationError`](./LukeHagar/PlexAPI/SDK/Models/Errors/ResponseValidationError.cs): Thrown when the response data could not be deserialized into the expected type.
- -\* Refer to the [relevant documentation](#available-resources-and-operations) to determine whether an exception applies to a specific operation. ## Summary -Plex-API: An Open API Spec for interacting with Plex.tv and Plex Media Server -# Plex Media Server OpenAPI Specification - -An Open Source OpenAPI Specification for Plex Media Server - -Automation and SDKs provided by [Speakeasy](https://speakeasyapi.dev/) - -## Documentation - -[API Documentation](https://plexapi.dev) - -## SDKs - -The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the [main specification Repository](https://github.com/LukeHagar/plex-api-spec). - -| Language | Repository | Releases | Other | -| --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | -| Python | [GitHub](https://github.com/LukeHagar/plexpy) | [PyPI](https://pypi.org/project/plex-api-client/) | - | -| JavaScript/TypeScript | [GitHub](https://github.com/LukeHagar/plexjs) | [NPM](https://www.npmjs.com/package/@lukehagar/plexjs) \ [JSR](https://jsr.io/@lukehagar/plexjs) | - | -| Go | [GitHub](https://github.com/LukeHagar/plexgo) | [Releases](https://github.com/LukeHagar/plexgo/releases) | [GoDoc](https://pkg.go.dev/github.com/LukeHagar/plexgo) | -| Ruby | [GitHub](https://github.com/LukeHagar/plexruby) | [Releases](https://github.com/LukeHagar/plexruby/releases) | - | -| Swift | [GitHub](https://github.com/LukeHagar/plexswift) | [Releases](https://github.com/LukeHagar/plexswift/releases) | - | -| PHP | [GitHub](https://github.com/LukeHagar/plexphp) | [Releases](https://github.com/LukeHagar/plexphp/releases) | - | -| Java | [GitHub](https://github.com/LukeHagar/plexjava) | [Releases](https://github.com/LukeHagar/plexjava/releases) | - | -| C# | [GitHub](https://github.com/LukeHagar/plexcsharp) | [Releases](https://github.com/LukeHagar/plexcsharp/releases) | - @@ -551,15 +639,159 @@ The following SDKs are generated from the OpenAPI Specification. They are automa * [Server Selection](#server-selection) * [Authentication](#authentication) * [Error Handling](#error-handling) -* [Plex Media Server OpenAPI Specification](#plex-media-server-openapi-specification) - * [Documentation](#documentation) - * [SDKs](#sdks) + * [Custom HTTP Client](#custom-http-client) * [Development](#development) * [Maturity](#maturity) * [Contributions](#contributions) + +## Custom HTTP Client + +The C# SDK makes API calls using an `ISpeakeasyHttpClient` that wraps the native +[HttpClient](https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient). This +client provides the ability to attach hooks around the request lifecycle that can be used to modify the request or handle +errors and response. + +The `ISpeakeasyHttpClient` interface allows you to either use the default `SpeakeasyHttpClient` that comes with the SDK, +or provide your own custom implementation with customized configuration such as custom message handlers, timeouts, +connection pooling, and other HTTP client settings. + +The following example shows how to create a custom HTTP client with request modification and error handling: + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Utils; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; + +// Create a custom HTTP client +public class CustomHttpClient : ISpeakeasyHttpClient +{ + private readonly ISpeakeasyHttpClient _defaultClient; + + public CustomHttpClient() + { + _defaultClient = new SpeakeasyHttpClient(); + } + + public async Task SendAsync(HttpRequestMessage request, CancellationToken? cancellationToken = null) + { + // Add custom header and timeout + request.Headers.Add("x-custom-header", "custom value"); + request.Headers.Add("x-request-timeout", "30"); + + try + { + var response = await _defaultClient.SendAsync(request, cancellationToken); + // Log successful response + Console.WriteLine($"Request successful: {response.StatusCode}"); + return response; + } + catch (Exception error) + { + // Log error + Console.WriteLine($"Request failed: {error.Message}"); + throw; + } + } + + public void Dispose() + { + _httpClient?.Dispose(); + _defaultClient?.Dispose(); + } +} + +// Use the custom HTTP client with the SDK +var customHttpClient = new CustomHttpClient(); +var sdk = new PlexAPI(client: customHttpClient); +``` + +
+You can also provide a completely custom HTTP client with your own configuration: + +```csharp +using LukeHagar.PlexAPI.SDK.Utils; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; + +// Custom HTTP client with custom configuration +public class AdvancedHttpClient : ISpeakeasyHttpClient +{ + private readonly HttpClient _httpClient; + + public AdvancedHttpClient() + { + var handler = new HttpClientHandler() + { + MaxConnectionsPerServer = 10, + // ServerCertificateCustomValidationCallback = customCertValidation, // Custom SSL validation if needed + }; + + _httpClient = new HttpClient(handler) + { + Timeout = TimeSpan.FromSeconds(30) + }; + } + + public async Task SendAsync(HttpRequestMessage request, CancellationToken? cancellationToken = null) + { + return await _httpClient.SendAsync(request, cancellationToken ?? CancellationToken.None); + } + + public void Dispose() + { + _httpClient?.Dispose(); + } +} + +var sdk = PlexAPI.Builder() + .WithClient(new AdvancedHttpClient()) + .Build(); +``` +
+ +
+For simple debugging, you can enable request/response logging by implementing a custom client: + +```csharp +public class LoggingHttpClient : ISpeakeasyHttpClient +{ + private readonly ISpeakeasyHttpClient _innerClient; + + public LoggingHttpClient(ISpeakeasyHttpClient innerClient = null) + { + _innerClient = innerClient ?? new SpeakeasyHttpClient(); + } + + public async Task SendAsync(HttpRequestMessage request, CancellationToken? cancellationToken = null) + { + // Log request + Console.WriteLine($"Sending {request.Method} request to {request.RequestUri}"); + + var response = await _innerClient.SendAsync(request, cancellationToken); + + // Log response + Console.WriteLine($"Received {response.StatusCode} response"); + + return response; + } + + public void Dispose() => _innerClient?.Dispose(); +} + +var sdk = new PlexAPI(client: new LoggingHttpClient()); +``` +
+ +The SDK also provides built-in hook support through the `SDKConfiguration.Hooks` system, which automatically handles +`BeforeRequestAsync`, `AfterSuccessAsync`, and `AfterErrorAsync` hooks for advanced request lifecycle management. + + # Development diff --git a/RELEASES.md b/RELEASES.md index 39cd7d3..f0f33b7 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -634,4 +634,14 @@ Based on: ### Generated - [csharp v0.17.0] . ### Releases -- [NuGet v0.17.0] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.17.0 - . \ No newline at end of file +- [NuGet v0.17.0] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.17.0 - . + +## 2025-10-26 10:41:06 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.639.3 (2.730.5) https://github.com/speakeasy-api/speakeasy +### Generated +- [csharp v0.18.0] . +### Releases +- [NuGet v0.18.0] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.18.0 - . \ No newline at end of file diff --git a/USAGE.md b/USAGE.md index 618e807..8e17b82 100644 --- a/USAGE.md +++ b/USAGE.md @@ -2,10 +2,56 @@ ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); -var res = await sdk.Server.GetServerCapabilitiesAsync(); +StartTranscodeSessionRequest req = new StartTranscodeSessionRequest() { + TranscodeType = TranscodeType.Music, + Extension = Extension.Mpd, + AdvancedSubtitles = LukeHagar.PlexAPI.SDK.Models.Components.AdvancedSubtitles.Burn, + AudioBoost = 50, + AudioChannelCount = 5, + AutoAdjustQuality = BoolInt.One, + AutoAdjustSubtitle = BoolInt.One, + DirectPlay = BoolInt.One, + DirectStream = BoolInt.One, + DirectStreamAudio = BoolInt.One, + DisableResolutionRotation = BoolInt.One, + HasMDE = BoolInt.One, + Location = StartTranscodeSessionQueryParamLocation.Wan, + MediaBufferSize = 102400, + MediaIndex = 0, + MusicBitrate = 5000, + Offset = 90.5D, + PartIndex = 0, + Path = "/library/metadata/151671", + PeakBitrate = 12000, + PhotoResolution = "1080x1080", + Protocol = StartTranscodeSessionQueryParamProtocol.Dash, + SecondsPerSegment = 5, + SubtitleSize = 50, + VideoBitrate = 12000, + VideoQuality = 50, + VideoResolution = "1080x1080", + XPlexClientProfileExtra = "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + XPlexClientProfileName = "generic", +}; + +var res = await sdk.Transcoder.StartTranscodeSessionAsync(req); // handle response ``` diff --git a/codeSamples.yaml b/codeSamples.yaml index 293b57e..512571e 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -11,10 +11,56 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Server.GetServerCapabilitiesAsync(); + GetServerInfoRequest req = new GetServerInfoRequest() {}; + + var res = await sdk.General.GetServerInfoAsync(req); + + // handle response + - target: $["paths"]["/:/eventsource/notifications"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetNotificationsRequest req = new GetNotificationsRequest() {}; + + var res = await sdk.Events.GetNotificationsAsync(req); // handle response - target: $["paths"]["/:/prefs"]["get"] @@ -26,44 +72,12 @@ actions: using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI(token: ""); - var res = await sdk.Server.GetServerPreferencesAsync(); + var res = await sdk.Preferences.GetAllPreferencesAsync(); // handle response - - target: $["paths"]["/:/progress"]["post"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Media.UpdatePlayProgressAsync( - key: "", - time: 90000D, - state: "played" - ); - - // handle response - - target: $["paths"]["/:/scrobble"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Media.MarkPlayedAsync(key: 59398D); - - // handle response - - target: $["paths"]["/:/timeline"]["get"] + - target: $["paths"]["/:/prefs"]["put"] update: x-codeSamples: - lang: csharp @@ -73,25 +87,29 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - GetTimelineRequest req = new GetTimelineRequest() { - RatingKey = 23409D, - Key = "/library/metadata/23409", - State = State.Playing, - HasMDE = 1D, - Time = 2000D, - Duration = 10000D, - Context = "home:hub.continueWatching", - PlayQueueItemID = 1D, - PlayBackTime = 2000D, - Row = 1D, + SetPreferencesRequest req = new SetPreferencesRequest() { + Prefs = new Prefs() {}, }; - var res = await sdk.Video.GetTimelineAsync(req); + var res = await sdk.Preferences.SetPreferencesAsync(req); // handle response - - target: $["paths"]["/:/unscrobble"]["get"] + - target: $["paths"]["/:/prefs/get"]["get"] update: x-codeSamples: - lang: csharp @@ -99,10 +117,199 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Media.MarkUnplayedAsync(key: 59398D); + GetPreferenceRequest req = new GetPreferenceRequest() {}; + + var res = await sdk.Preferences.GetPreferenceAsync(req); + + // handle response + - target: $["paths"]["/:/rate"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + SetRatingRequest req = new SetRatingRequest() { + Identifier = "", + Key = "", + Rating = 8722.46D, + }; + + var res = await sdk.Rate.SetRatingAsync(req); + + // handle response + - target: $["paths"]["/:/scrobble"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + MarkPlayedRequest req = new MarkPlayedRequest() { + Identifier = "", + }; + + var res = await sdk.Timeline.MarkPlayedAsync(req); + + // handle response + - target: $["paths"]["/:/timeline"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ReportRequest req = new ReportRequest() { + Key = "/foo", + RatingKey = "xyz", + State = State.Playing, + PlayQueueItemID = "123", + Time = 0, + Duration = 10000, + Continuing = BoolInt.One, + Updated = 14200000, + Offline = BoolInt.One, + TimeToFirstFrame = 1000, + TimeStalled = 1000, + Bandwidth = 100, + BufferedTime = 100, + BufferedSize = 1024, + }; + + var res = await sdk.Timeline.ReportAsync(req); + + // handle response + - target: $["paths"]["/:/unscrobble"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + UnscrobbleRequest req = new UnscrobbleRequest() { + Identifier = "", + }; + + var res = await sdk.Timeline.UnscrobbleAsync(req); + + // handle response + - target: $["paths"]["/:/websocket/notifications"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ConnectWebSocketRequest req = new ConnectWebSocketRequest() {}; + + var res = await sdk.Events.ConnectWebSocketAsync(req); // handle response - target: $["paths"]["/activities"]["get"] @@ -114,12 +321,12 @@ actions: using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI(token: ""); - var res = await sdk.Activities.GetServerActivitiesAsync(); + var res = await sdk.Activities.ListActivitiesAsync(); // handle response - - target: $["paths"]["/activities/{activityUUID}"]["delete"] + - target: $["paths"]["/activities/{activityId}"]["delete"] update: x-codeSamples: - lang: csharp @@ -127,10 +334,28 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Activities.CancelServerActivitiesAsync(activityUUID: "25b71ed5-0f9d-461c-baa7-d404e9e10d3e"); + CancelActivityRequest req = new CancelActivityRequest() { + ActivityId = "d6199ba1-fb5e-4cae-bf17-1a5369c1cf1e", + }; + + var res = await sdk.Activities.CancelActivityAsync(req); // handle response - target: $["paths"]["/butler"]["delete"] @@ -142,9 +367,9 @@ actions: using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI(token: ""); - var res = await sdk.Butler.StopAllTasksAsync(); + var res = await sdk.Butler.StopTasksAsync(); // handle response - target: $["paths"]["/butler"]["get"] @@ -156,9 +381,9 @@ actions: using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI(token: ""); - var res = await sdk.Butler.GetButlerTasksAsync(); + var res = await sdk.Butler.GetTasksAsync(); // handle response - target: $["paths"]["/butler"]["post"] @@ -170,12 +395,12 @@ actions: using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI(token: ""); - var res = await sdk.Butler.StartAllTasksAsync(); + var res = await sdk.Butler.StartTasksAsync(); // handle response - - target: $["paths"]["/butler/{taskName}"]["delete"] + - target: $["paths"]["/butler/{task}"]["delete"] update: x-codeSamples: - lang: csharp @@ -185,12 +410,29 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Butler.StopTaskAsync(taskName: PathParamTaskName.CleanOldCacheFiles); + StopTaskRequest req = new StopTaskRequest() { + Task = Task.CleanOldBundles, + }; + + var res = await sdk.Butler.StopTaskAsync(req); // handle response - - target: $["paths"]["/butler/{taskName}"]["post"] + - target: $["paths"]["/butler/{task}"]["post"] update: x-codeSamples: - lang: csharp @@ -200,12 +442,29 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Butler.StartTaskAsync(taskName: TaskName.RefreshPeriodicMetadata); + StartTaskRequest req = new StartTaskRequest() { + Task = PathParamTask.RefreshLocalMedia, + }; + + var res = await sdk.Butler.StartTaskAsync(req); // handle response - - target: $["paths"]["/clients"]["get"] + - target: $["paths"]["/downloadQueue"]["post"] update: x-codeSamples: - lang: csharp @@ -214,12 +473,12 @@ actions: using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI(token: ""); - var res = await sdk.Server.GetAvailableClientsAsync(); + var res = await sdk.DownloadQueue.CreateDownloadQueueAsync(); // handle response - - target: $["paths"]["/companions"]["get"] + - target: $["paths"]["/downloadQueue/{queueId}"]["get"] update: x-codeSamples: - lang: csharp @@ -227,13 +486,31 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Plex.GetCompanionsDataAsync(); + GetDownloadQueueRequest req = new GetDownloadQueueRequest() { + QueueId = 922802, + }; + + var res = await sdk.DownloadQueue.GetDownloadQueueAsync(req); // handle response - - target: $["paths"]["/devices"]["get"] + - target: $["paths"]["/downloadQueue/{queueId}/add"]["post"] update: x-codeSamples: - lang: csharp @@ -241,13 +518,61 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Server.GetDevicesAsync(); + AddDownloadQueueItemsRequest req = new AddDownloadQueueItemsRequest() { + QueueId = 984925, + Keys = new List() { + "/library/metadata/3", + "/library/metadata/6", + }, + AdvancedSubtitles = LukeHagar.PlexAPI.SDK.Models.Components.AdvancedSubtitles.Burn, + AudioBoost = 50, + AudioChannelCount = 5, + AutoAdjustQuality = BoolInt.One, + AutoAdjustSubtitle = BoolInt.One, + DirectPlay = BoolInt.One, + DirectStream = BoolInt.One, + DirectStreamAudio = BoolInt.One, + DisableResolutionRotation = BoolInt.One, + HasMDE = BoolInt.One, + Location = LukeHagar.PlexAPI.SDK.Models.Components.Location.Wan, + MediaBufferSize = 102400, + MediaIndex = 0, + MusicBitrate = 5000, + Offset = 90.5D, + PartIndex = 0, + Path = "/library/metadata/151671", + PeakBitrate = 12000, + PhotoResolution = "1080x1080", + Protocol = LukeHagar.PlexAPI.SDK.Models.Components.Protocol.Dash, + SecondsPerSegment = 5, + SubtitleSize = 50, + VideoBitrate = 12000, + VideoQuality = 50, + VideoResolution = "1080x1080", + }; + + var res = await sdk.DownloadQueue.AddDownloadQueueItemsAsync(req); // handle response - - target: $["paths"]["/friends"]["get"] + - target: $["paths"]["/downloadQueue/{queueId}/item/{itemId}/decision"]["get"] update: x-codeSamples: - lang: csharp @@ -255,26 +580,32 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Plex.GetUserFriendsAsync(); + GetItemDecisionRequest req = new GetItemDecisionRequest() { + QueueId = 231605, + ItemId = 32, + }; + + var res = await sdk.DownloadQueue.GetItemDecisionAsync(req); // handle response - - target: $["paths"]["/geoip"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - - var sdk = new PlexAPI(); - - var res = await sdk.Plex.GetGeoDataAsync(); - - // handle response - - target: $["paths"]["/home"]["get"] + - target: $["paths"]["/downloadQueue/{queueId}/item/{itemId}/media"]["get"] update: x-codeSamples: - lang: csharp @@ -282,10 +613,175 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Plex.GetHomeDataAsync(); + GetDownloadQueueMediaRequest req = new GetDownloadQueueMediaRequest() { + QueueId = 663184, + ItemId = 32, + }; + + var res = await sdk.DownloadQueue.GetDownloadQueueMediaAsync(req); + + // handle response + - target: $["paths"]["/downloadQueue/{queueId}/items"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ListDownloadQueueItemsRequest req = new ListDownloadQueueItemsRequest() { + QueueId = 524138, + }; + + var res = await sdk.DownloadQueue.ListDownloadQueueItemsAsync(req); + + // handle response + - target: $["paths"]["/downloadQueue/{queueId}/items/{itemId}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + RemoveDownloadQueueItemsRequest req = new RemoveDownloadQueueItemsRequest() { + QueueId = 946275, + ItemId = new List() { + 32, + 345, + 23, + }, + }; + + var res = await sdk.DownloadQueue.RemoveDownloadQueueItemsAsync(req); + + // handle response + - target: $["paths"]["/downloadQueue/{queueId}/items/{itemId}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetDownloadQueueItemsRequest req = new GetDownloadQueueItemsRequest() { + QueueId = 809886, + ItemId = new List() { + 32, + 345, + 23, + }, + }; + + var res = await sdk.DownloadQueue.GetDownloadQueueItemsAsync(req); + + // handle response + - target: $["paths"]["/downloadQueue/{queueId}/items/{itemId}/restart"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + RestartProcessingDownloadQueueItemsRequest req = new RestartProcessingDownloadQueueItemsRequest() { + QueueId = 713001, + ItemId = new List() { + 32, + 345, + 23, + }, + }; + + var res = await sdk.DownloadQueue.RestartProcessingDownloadQueueItemsAsync(req); // handle response - target: $["paths"]["/hubs"]["get"] @@ -296,13 +792,31 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Hubs.GetGlobalHubsAsync(); + GetAllHubsRequest req = new GetAllHubsRequest() { + OnlyTransient = BoolInt.One, + }; + + var res = await sdk.Hubs.GetAllHubsAsync(req); // handle response - - target: $["paths"]["/hubs/home/recentlyAdded"]["get"] + - target: $["paths"]["/hubs/continueWatching"]["get"] update: x-codeSamples: - lang: csharp @@ -312,16 +826,190 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - GetRecentlyAddedRequest req = new GetRecentlyAddedRequest() { - ContentDirectoryID = 39486, - SectionID = 2, - Type = LukeHagar.PlexAPI.SDK.Models.Requests.Type.TvShow, - IncludeMeta = IncludeMeta.Enable, + GetContinueWatchingRequest req = new GetContinueWatchingRequest() {}; + + var res = await sdk.Hubs.GetContinueWatchingAsync(req); + + // handle response + - target: $["paths"]["/hubs/items"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetHubItemsRequest req = new GetHubItemsRequest() { + Identifier = new List() { + "", + "", + "", + }, }; - var res = await sdk.Hubs.GetRecentlyAddedAsync(req); + var res = await sdk.Hubs.GetHubItemsAsync(req); + + // handle response + - target: $["paths"]["/hubs/metadata/{metadataId}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetMetadataHubsRequest req = new GetMetadataHubsRequest() { + MetadataId = 605482, + OnlyTransient = BoolInt.One, + }; + + var res = await sdk.Hubs.GetMetadataHubsAsync(req); + + // handle response + - target: $["paths"]["/hubs/metadata/{metadataId}/postplay"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetPostplayHubsRequest req = new GetPostplayHubsRequest() { + MetadataId = 441419, + OnlyTransient = BoolInt.One, + }; + + var res = await sdk.Hubs.GetPostplayHubsAsync(req); + + // handle response + - target: $["paths"]["/hubs/metadata/{metadataId}/related"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetRelatedHubsRequest req = new GetRelatedHubsRequest() { + MetadataId = 8858, + OnlyTransient = BoolInt.One, + }; + + var res = await sdk.Hubs.GetRelatedHubsAsync(req); + + // handle response + - target: $["paths"]["/hubs/promoted"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetPromotedHubsRequest req = new GetPromotedHubsRequest() {}; + + var res = await sdk.Hubs.GetPromotedHubsAsync(req); // handle response - target: $["paths"]["/hubs/search"]["get"] @@ -332,14 +1020,30 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Search.PerformSearchAsync( - query: "arnold", - limit: 5D + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); + SearchHubsRequest req = new SearchHubsRequest() { + Query = "", + SectionId = 1, + }; + + var res = await sdk.Search.SearchHubsAsync(req); + // handle response - target: $["paths"]["/hubs/search/voice"]["get"] update: @@ -349,14 +1053,29 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Search.PerformVoiceSearchAsync( - query: "dead+poop", - limit: 5D + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); + VoiceSearchHubsRequest req = new VoiceSearchHubsRequest() { + Query = "", + }; + + var res = await sdk.Search.VoiceSearchHubsAsync(req); + // handle response - target: $["paths"]["/hubs/sections/{sectionId}"]["get"] update: @@ -366,10 +1085,231 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Hubs.GetLibraryHubsAsync(sectionId: 492.74D); + GetSectionHubsRequest req = new GetSectionHubsRequest() { + SectionId = 336924, + OnlyTransient = BoolInt.One, + }; + + var res = await sdk.Hubs.GetSectionHubsAsync(req); + + // handle response + - target: $["paths"]["/hubs/sections/{sectionId}/manage"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ResetSectionDefaultsRequest req = new ResetSectionDefaultsRequest() { + SectionId = 383022, + }; + + var res = await sdk.Hubs.ResetSectionDefaultsAsync(req); + + // handle response + - target: $["paths"]["/hubs/sections/{sectionId}/manage"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ListHubsRequest req = new ListHubsRequest() { + SectionId = 442546, + }; + + var res = await sdk.Hubs.ListHubsAsync(req); + + // handle response + - target: $["paths"]["/hubs/sections/{sectionId}/manage"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + CreateCustomHubRequest req = new CreateCustomHubRequest() { + SectionId = 869922, + MetadataItemId = 703843, + PromotedToRecommended = BoolInt.One, + PromotedToOwnHome = BoolInt.One, + PromotedToSharedHome = BoolInt.One, + }; + + var res = await sdk.Hubs.CreateCustomHubAsync(req); + + // handle response + - target: $["paths"]["/hubs/sections/{sectionId}/manage/move"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + MoveHubRequest req = new MoveHubRequest() { + SectionId = 755710, + Identifier = "", + }; + + var res = await sdk.Hubs.MoveHubAsync(req); + + // handle response + - target: $["paths"]["/hubs/sections/{sectionId}/manage/{identifier}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteCustomHubRequest req = new DeleteCustomHubRequest() { + SectionId = 625677, + Identifier = "", + }; + + var res = await sdk.Hubs.DeleteCustomHubAsync(req); + + // handle response + - target: $["paths"]["/hubs/sections/{sectionId}/manage/{identifier}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + UpdateHubVisibilityRequest req = new UpdateHubVisibilityRequest() { + SectionId = 341650, + Identifier = "", + PromotedToRecommended = BoolInt.One, + PromotedToOwnHome = BoolInt.One, + PromotedToSharedHome = BoolInt.One, + }; + + var res = await sdk.Hubs.UpdateHubVisibilityAsync(req); // handle response - target: $["paths"]["/identity"]["get"] @@ -382,10 +1322,10 @@ actions: var sdk = new PlexAPI(); - var res = await sdk.Server.GetServerIdentityAsync(); + var res = await sdk.General.GetIdentityAsync(); // handle response - - target: $["paths"]["/library/all/top"]["get"] + - target: $["paths"]["/library/all"]["get"] update: x-codeSamples: - lang: csharp @@ -395,455 +1335,55 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetTopWatchedContentAsync( - type: GetTopWatchedContentQueryParamType.TvShow, - includeGuids: GetTopWatchedContentQueryParamIncludeGuids.Enable + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); - // handle response - - target: $["paths"]["/library/hashes"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetFileHashAsync(url: "file://C:\Image.png&type=13"); - - // handle response - - target: $["paths"]["/library/metadata/{ratingKey}"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(accessToken: ""); - - GetMediaMetaDataRequest req = new GetMediaMetaDataRequest() { - RatingKey = "21119,21617", - IncludeConcerts = true, - IncludeExtras = true, - IncludeOnDeck = true, - IncludePopularLeaves = true, - IncludePreferences = true, - IncludeReviews = true, - IncludeChapters = true, - IncludeStations = true, - IncludeExternalMedia = true, - AsyncAugmentMetadata = true, - AsyncCheckFiles = true, - AsyncRefreshAnalysis = true, - AsyncRefreshLocalMediaAgent = true, - }; - - var res = await sdk.Library.GetMediaMetaDataAsync(req); - - // handle response - - target: $["paths"]["/library/metadata/{ratingKey}/arts"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetMediaArtsAsync(ratingKey: 16099); - - // handle response - - target: $["paths"]["/library/metadata/{ratingKey}/arts"]["post"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.PostMediaArtsAsync( - ratingKey: 2268, - url: "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b" - ); - - // handle response - - target: $["paths"]["/library/metadata/{ratingKey}/banner"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(accessToken: ""); - - GetBannerImageRequest req = new GetBannerImageRequest() { - RatingKey = 9518, - Width = 396, - Height = 396, - MinSize = 1, - Upscale = 1, - XPlexToken = "CV5xoxjTpFKUzBTShsaf", - }; - - var res = await sdk.Media.GetBannerImageAsync(req); - - // handle response - - target: $["paths"]["/library/metadata/{ratingKey}/children"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetMetadataChildrenAsync( - ratingKey: 2403.67D, - includeElements: "Stream" - ); - - // handle response - - target: $["paths"]["/library/metadata/{ratingKey}/posters"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetMediaPostersAsync(ratingKey: 16099); - - // handle response - - target: $["paths"]["/library/metadata/{ratingKey}/posters"]["post"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.PostMediaPosterAsync( - ratingKey: 2268, - url: "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b" - ); - - // handle response - - target: $["paths"]["/library/metadata/{ratingKey}/thumb"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(accessToken: ""); - - GetThumbImageRequest req = new GetThumbImageRequest() { - RatingKey = 9518, - Width = 396, - Height = 396, - MinSize = 1, - Upscale = 1, - XPlexToken = "CV5xoxjTpFKUzBTShsaf", - }; - - var res = await sdk.Media.GetThumbImageAsync(req); - - // handle response - - target: $["paths"]["/library/recentlyAdded"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using System.Collections.Generic; - - var sdk = new PlexAPI(accessToken: ""); - - GetRecentlyAddedLibraryRequest req = new GetRecentlyAddedLibraryRequest() { - ContentDirectoryID = 2, - PinnedContentDirectoryID = new List() { - 3, - 5, - 7, - 13, - 12, - 1, - 6, - 14, - 2, - 10, - 16, - 17, - }, - SectionID = 2, - Type = QueryParamType.TvShow, - IncludeMeta = QueryParamIncludeMeta.Enable, - }; - - var res = await sdk.Library.GetRecentlyAddedLibraryAsync(req); - - // handle response - - target: $["paths"]["/library/search"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - using System.Collections.Generic; - - var sdk = new PlexAPI(accessToken: ""); - - GetSearchAllLibrariesRequest req = new GetSearchAllLibrariesRequest() { - Query = "", - ClientID = "3381b62b-9ab7-4e37-827b-203e9809eb58", - SearchTypes = new List() { - SearchTypes.People, - }, - IncludeCollections = GetSearchAllLibrariesQueryParamIncludeCollections.Enable, - IncludeExternalMedia = GetSearchAllLibrariesQueryParamIncludeExternalMedia.Enable, - }; - - var res = await sdk.Library.GetSearchAllLibrariesAsync(req); - - // handle response - - target: $["paths"]["/library/sections"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetAllLibrariesAsync(); - - // handle response - - target: $["paths"]["/library/sections/watchlist/{filter}"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(accessToken: ""); - - GetWatchListRequest req = new GetWatchListRequest() { - Filter = Filter.Released, - XPlexToken = "CV5xoxjTpFKUzBTShsaf", - }; - - var res = await sdk.Watchlist.GetWatchListAsync(req); - - // handle response - - target: $["paths"]["/library/sections/{sectionKey}"]["delete"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.DeleteLibraryAsync(sectionKey: 9518); - - // handle response - - target: $["paths"]["/library/sections/{sectionKey}"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetLibraryDetailsAsync( - sectionKey: 9518, - includeDetails: IncludeDetails.Zero - ); - - // handle response - - target: $["paths"]["/library/sections/{sectionKey}/actor"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetActorsLibraryAsync( - sectionKey: 9518, - type: GetActorsLibraryQueryParamType.TvShow - ); - - // handle response - - target: $["paths"]["/library/sections/{sectionKey}/all"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(accessToken: ""); - - GetLibrarySectionsAllRequest req = new GetLibrarySectionsAllRequest() { - SectionKey = 9518, - Type = GetLibrarySectionsAllQueryParamType.TvShow, - IncludeMeta = GetLibrarySectionsAllQueryParamIncludeMeta.Enable, - IncludeGuids = QueryParamIncludeGuids.Enable, - IncludeAdvanced = IncludeAdvanced.Enable, - IncludeCollections = QueryParamIncludeCollections.Enable, - IncludeExternalMedia = QueryParamIncludeExternalMedia.Enable, - }; - - var res = await sdk.Library.GetLibrarySectionsAllAsync(req); - - // handle response - - target: $["paths"]["/library/sections/{sectionKey}/country"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetCountriesLibraryAsync( - sectionKey: 9518, - type: GetCountriesLibraryQueryParamType.TvShow - ); - - // handle response - - target: $["paths"]["/library/sections/{sectionKey}/genre"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetGenresLibraryAsync( - sectionKey: 9518, - type: GetGenresLibraryQueryParamType.TvShow - ); - - // handle response - - target: $["paths"]["/library/sections/{sectionKey}/refresh"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetRefreshLibraryMetadataAsync( - sectionKey: 9518, - force: Force.Zero - ); - - // handle response - - target: $["paths"]["/library/sections/{sectionKey}/search"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetSearchLibraryAsync( - sectionKey: 9518, - type: GetSearchLibraryQueryParamType.TvShow - ); - - // handle response - - target: $["paths"]["/library/sections/{sectionKey}/{tag}"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(accessToken: ""); - - GetLibraryItemsRequest req = new GetLibraryItemsRequest() { - Tag = Tag.Newest, - IncludeGuids = IncludeGuids.Enable, - Type = GetLibraryItemsQueryParamType.TvShow, - SectionKey = 9518, - IncludeMeta = GetLibraryItemsQueryParamIncludeMeta.Enable, - }; + GetLibraryItemsRequest req = new GetLibraryItemsRequest() {}; var res = await sdk.Library.GetLibraryItemsAsync(req); // handle response - - target: $["paths"]["/log"]["get"] + - target: $["paths"]["/library/caches"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + + var sdk = new PlexAPI(token: ""); + + var res = await sdk.Library.DeleteCachesAsync(); + + // handle response + - target: $["paths"]["/library/clean/bundles"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + + var sdk = new PlexAPI(token: ""); + + var res = await sdk.Library.CleanBundlesAsync(); + + // handle response + - target: $["paths"]["/library/collections"]["post"] update: x-codeSamples: - lang: csharp @@ -853,14 +1393,3829 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Log.LogLineAsync( - level: Level.Three, - message: "Test log message", - source: "Postman" + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); + CreateCollectionRequest req = new CreateCollectionRequest() { + SectionId = "", + }; + + var res = await sdk.Collections.CreateCollectionAsync(req); + + // handle response + - target: $["paths"]["/library/collections/{collectionId}/composite/{updatedAt}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetCollectionImageRequest req = new GetCollectionImageRequest() { + CollectionId = 474227, + UpdatedAt = 759379, + }; + + var res = await sdk.Content.GetCollectionImageAsync(req); + + // handle response + - target: $["paths"]["/library/collections/{collectionId}/items"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetCollectionItemsRequest req = new GetCollectionItemsRequest() { + CollectionId = 314585, + }; + + var res = await sdk.Content.GetCollectionItemsAsync(req); + + // handle response + - target: $["paths"]["/library/collections/{collectionId}/items"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + AddCollectionItemsRequest req = new AddCollectionItemsRequest() { + CollectionId = 338144, + Uri = "https://expensive-bakeware.com", + }; + + var res = await sdk.LibraryCollections.AddCollectionItemsAsync(req); + + // handle response + - target: $["paths"]["/library/collections/{collectionId}/items/{itemId}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteCollectionItemRequest req = new DeleteCollectionItemRequest() { + CollectionId = 320928, + ItemId = 406983, + }; + + var res = await sdk.LibraryCollections.DeleteCollectionItemAsync(req); + + // handle response + - target: $["paths"]["/library/collections/{collectionId}/items/{itemId}/move"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + MoveCollectionItemRequest req = new MoveCollectionItemRequest() { + CollectionId = 239532, + ItemId = 513864, + }; + + var res = await sdk.LibraryCollections.MoveCollectionItemAsync(req); + + // handle response + - target: $["paths"]["/library/file"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + IngestTransientItemRequest req = new IngestTransientItemRequest() { + Url = "file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv", + VirtualFilePath = "/Avatar.mkv", + ComputeHashes = BoolInt.One, + IngestNonMatches = BoolInt.One, + }; + + var res = await sdk.Library.IngestTransientItemAsync(req); + + // handle response + - target: $["paths"]["/library/matches"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetLibraryMatchesRequest req = new GetLibraryMatchesRequest() { + IncludeFullMetadata = BoolInt.One, + IncludeAncestorMetadata = BoolInt.One, + IncludeAlternateMetadataSources = BoolInt.One, + }; + + var res = await sdk.Library.GetLibraryMatchesAsync(req); + + // handle response + - target: $["paths"]["/library/media/{mediaId}/chapterImages/{chapter}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetChapterImageRequest req = new GetChapterImageRequest() { + MediaId = 892563, + Chapter = 48348, + }; + + var res = await sdk.Library.GetChapterImageAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/augmentations/{augmentationId}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetAugmentationStatusRequest req = new GetAugmentationStatusRequest() { + AugmentationId = "", + Wait = BoolInt.One, + }; + + var res = await sdk.Library.GetAugmentationStatusAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteMetadataItemRequest req = new DeleteMetadataItemRequest() { + Ids = "", + Proxy = BoolInt.One, + }; + + var res = await sdk.Library.DeleteMetadataItemAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetMetadataItemRequest req = new GetMetadataItemRequest() { + Ids = new List() {}, + AsyncCheckFiles = BoolInt.One, + AsyncRefreshLocalMediaAgent = BoolInt.One, + AsyncRefreshAnalysis = BoolInt.One, + CheckFiles = BoolInt.One, + SkipRefresh = BoolInt.One, + CheckFileAvailability = BoolInt.One, + AsyncAugmentMetadata = BoolInt.One, + AugmentCount = BoolInt.One, + }; + + var res = await sdk.Content.GetMetadataItemAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + EditMetadataItemRequest req = new EditMetadataItemRequest() { + Ids = new List() { + "", + "", + }, + }; + + var res = await sdk.Library.EditMetadataItemAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/addetect"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DetectAdsRequest req = new DetectAdsRequest() { + Ids = "", + }; + + var res = await sdk.Library.DetectAdsAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/allLeaves"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetAllItemLeavesRequest req = new GetAllItemLeavesRequest() { + Ids = "", + }; + + var res = await sdk.Library.GetAllItemLeavesAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/analyze"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + AnalyzeMetadataRequest req = new AnalyzeMetadataRequest() { + Ids = "", + }; + + var res = await sdk.Library.AnalyzeMetadataAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/chapterThumbs"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GenerateThumbsRequest req = new GenerateThumbsRequest() { + Ids = "", + Force = BoolInt.One, + }; + + var res = await sdk.Library.GenerateThumbsAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/credits"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DetectCreditsRequest req = new DetectCreditsRequest() { + Ids = "", + Force = BoolInt.One, + Manual = BoolInt.One, + }; + + var res = await sdk.Library.DetectCreditsAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/extras"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetExtrasRequest req = new GetExtrasRequest() { + Ids = "", + }; + + var res = await sdk.Library.GetExtrasAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/extras"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + AddExtrasRequest req = new AddExtrasRequest() { + Ids = "", + Url = "https://super-mortise.biz/", + }; + + var res = await sdk.Library.AddExtrasAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/file"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetFileRequest req = new GetFileRequest() { + Ids = "", + }; + + var res = await sdk.Library.GetFileAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/index"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + StartBifGenerationRequest req = new StartBifGenerationRequest() { + Ids = "", + Force = BoolInt.One, + }; + + var res = await sdk.Library.StartBifGenerationAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/intro"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DetectIntrosRequest req = new DetectIntrosRequest() { + Ids = "", + Force = BoolInt.One, + }; + + var res = await sdk.Library.DetectIntrosAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/marker"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + CreateMarkerRequest req = new CreateMarkerRequest() { + Ids = "", + Type = 248391, + StartTimeOffset = 535191, + Attributes = new Attributes() {}, + }; + + var res = await sdk.Library.CreateMarkerAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/marker/{marker}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteMarkerRequest req = new DeleteMarkerRequest() { + Ids = "", + Marker = "", + }; + + var res = await sdk.Library.DeleteMarkerAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/marker/{marker}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + EditMarkerRequest req = new EditMarkerRequest() { + Ids = "", + Marker = "", + Type = 884347, + StartTimeOffset = 517251, + Attributes = new QueryParamAttributes() {}, + }; + + var res = await sdk.Library.EditMarkerAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/match"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + MatchItemRequest req = new MatchItemRequest() { + Ids = "", + }; + + var res = await sdk.Library.MatchItemAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/matches"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ListMatchesRequest req = new ListMatchesRequest() { + Ids = "", + Manual = BoolInt.One, + }; + + var res = await sdk.Library.ListMatchesAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/media/{mediaItem}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteMediaItemRequest req = new DeleteMediaItemRequest() { + Ids = "", + MediaItem = "", + Proxy = BoolInt.One, + }; + + var res = await sdk.Library.DeleteMediaItemAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/merge"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + MergeItemsRequest req = new MergeItemsRequest() { + IdsPathParameter = "", + }; + + var res = await sdk.Library.MergeItemsAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/nearest"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ListSonicallySimilarRequest req = new ListSonicallySimilarRequest() { + Ids = "", + }; + + var res = await sdk.Library.ListSonicallySimilarAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/prefs"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + SetItemPreferencesRequest req = new SetItemPreferencesRequest() { + Ids = "", + }; + + var res = await sdk.Library.SetItemPreferencesAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/refresh"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + RefreshItemsMetadataRequest req = new RefreshItemsMetadataRequest() { + Ids = "", + MarkUpdated = BoolInt.One, + }; + + var res = await sdk.Library.RefreshItemsMetadataAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/related"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetRelatedItemsRequest req = new GetRelatedItemsRequest() { + Ids = "", + }; + + var res = await sdk.Library.GetRelatedItemsAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/similar"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ListSimilarRequest req = new ListSimilarRequest() { + Ids = "", + }; + + var res = await sdk.Library.ListSimilarAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/split"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + SplitItemRequest req = new SplitItemRequest() { + Ids = "", + }; + + var res = await sdk.Library.SplitItemAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/subtitles"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + AddSubtitlesRequest req = new AddSubtitlesRequest() { + Ids = "", + Forced = BoolInt.One, + HearingImpaired = BoolInt.One, + }; + + var res = await sdk.Library.AddSubtitlesAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/tree"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetItemTreeRequest req = new GetItemTreeRequest() { + Ids = "", + }; + + var res = await sdk.Library.GetItemTreeAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/unmatch"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + UnmatchRequest req = new UnmatchRequest() { + Ids = "", + }; + + var res = await sdk.Library.UnmatchAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/users/top"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ListTopUsersRequest req = new ListTopUsersRequest() { + Ids = "", + }; + + var res = await sdk.Library.ListTopUsersAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/voiceActivity"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DetectVoiceActivityRequest req = new DetectVoiceActivityRequest() { + Ids = "", + Force = BoolInt.One, + Manual = BoolInt.One, + }; + + var res = await sdk.Library.DetectVoiceActivityAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/{element}"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + SetItemArtworkRequest req = new SetItemArtworkRequest() { + Ids = "", + Element = Element.Banner, + }; + + var res = await sdk.Library.SetItemArtworkAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/{element}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + UpdateItemArtworkRequest req = new UpdateItemArtworkRequest() { + Ids = "", + Element = PathParamElement.ClearLogo, + }; + + var res = await sdk.Library.UpdateItemArtworkAsync(req); + + // handle response + - target: $["paths"]["/library/metadata/{ids}/{element}/{timestamp}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetItemArtworkRequest req = new GetItemArtworkRequest() { + Ids = "", + Element = GetItemArtworkPathParamElement.Poster, + Timestamp = 999555, + }; + + var res = await sdk.Library.GetItemArtworkAsync(req); + + // handle response + - target: $["paths"]["/library/optimize"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + OptimizeDatabaseRequest req = new OptimizeDatabaseRequest() { + Async = BoolInt.One, + }; + + var res = await sdk.Library.OptimizeDatabaseAsync(req); + + // handle response + - target: $["paths"]["/library/parts/{partId}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + SetStreamSelectionRequest req = new SetStreamSelectionRequest() { + PartId = 360489, + AllParts = BoolInt.One, + }; + + var res = await sdk.Library.SetStreamSelectionAsync(req); + + // handle response + - target: $["paths"]["/library/parts/{partId}/indexes/{index}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetPartIndexRequest req = new GetPartIndexRequest() { + PartId = 724750, + Index = Index.Sd, + }; + + var res = await sdk.Library.GetPartIndexAsync(req); + + // handle response + - target: $["paths"]["/library/parts/{partId}/indexes/{index}/{offset}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetImageFromBifRequest req = new GetImageFromBifRequest() { + PartId = 304273, + Index = PathParamIndex.Sd, + Offset = 939569, + }; + + var res = await sdk.Library.GetImageFromBifAsync(req); + + // handle response + - target: $["paths"]["/library/parts/{partId}/{changestamp}/{filename}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetMediaPartRequest req = new GetMediaPartRequest() { + PartId = 877105, + Changestamp = 970622, + Filename = "example.file", + Download = BoolInt.One, + }; + + var res = await sdk.Library.GetMediaPartAsync(req); + + // handle response + - target: $["paths"]["/library/people/{personId}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetPersonRequest req = new GetPersonRequest() { + PersonId = "", + }; + + var res = await sdk.Library.GetPersonAsync(req); + + // handle response + - target: $["paths"]["/library/people/{personId}/media"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ListPersonMediaRequest req = new ListPersonMediaRequest() { + PersonId = "", + }; + + var res = await sdk.Library.ListPersonMediaAsync(req); + + // handle response + - target: $["paths"]["/library/randomArtwork"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetRandomArtworkRequest req = new GetRandomArtworkRequest() { + Sections = new List() { + 5, + 6, + }, + }; + + var res = await sdk.Library.GetRandomArtworkAsync(req); + + // handle response + - target: $["paths"]["/library/sections/all"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + + var sdk = new PlexAPI(token: ""); + + var res = await sdk.Library.GetSectionsAsync(); + + // handle response + - target: $["paths"]["/library/sections/all"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + AddSectionRequest req = new AddSectionRequest() { + Name = "", + Type = 39544, + Agent = "", + Language = "", + Locations = new List() { + "O:\fatboy\Media\Ripped\Music", + "O:\fatboy\Media\My Music", + }, + Prefs = new QueryParamPrefs() {}, + Relative = BoolInt.One, + ImportFromiTunes = BoolInt.One, + }; + + var res = await sdk.Library.AddSectionAsync(req); + + // handle response + - target: $["paths"]["/library/sections/all/refresh"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + + var sdk = new PlexAPI(token: ""); + + var res = await sdk.Library.StopAllRefreshesAsync(); + + // handle response + - target: $["paths"]["/library/sections/prefs"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetSectionsPrefsRequest req = new GetSectionsPrefsRequest() { + Type = 460221, + }; + + var res = await sdk.Library.GetSectionsPrefsAsync(req); + + // handle response + - target: $["paths"]["/library/sections/refresh"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + RefreshSectionsMetadataRequest req = new RefreshSectionsMetadataRequest() {}; + + var res = await sdk.Library.RefreshSectionsMetadataAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteLibrarySectionRequest req = new DeleteLibrarySectionRequest() { + SectionId = "", + Async = BoolInt.One, + }; + + var res = await sdk.Library.DeleteLibrarySectionAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetLibraryDetailsRequest req = new GetLibraryDetailsRequest() { + SectionId = "", + IncludeDetails = BoolInt.One, + }; + + var res = await sdk.Library.GetLibraryDetailsAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + EditSectionRequest req = new EditSectionRequest() { + SectionId = "", + Agent = "", + Locations = new List() { + "O:\fatboy\Media\Ripped\Music", + "O:\fatboy\Media\My Music", + }, + Prefs = new EditSectionQueryParamPrefs() {}, + }; + + var res = await sdk.Library.EditSectionAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/albums"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetAlbumsRequest req = new GetAlbumsRequest() { + SectionId = 817133, + }; + + var res = await sdk.Content.GetAlbumsAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/all"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ListContentRequest req = new ListContentRequest() { + SectionId = "", + }; + + var res = await sdk.Content.ListContentAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/all"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + UpdateItemsRequest req = new UpdateItemsRequest() { + SectionId = "", + FieldLocked = BoolInt.One, + }; + + var res = await sdk.Library.UpdateItemsAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/allLeaves"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetAllLeavesRequest req = new GetAllLeavesRequest() { + SectionId = 633197, + }; + + var res = await sdk.Content.GetAllLeavesAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/analyze"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + StartAnalysisRequest req = new StartAnalysisRequest() { + SectionId = 158829, + }; + + var res = await sdk.Library.StartAnalysisAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/arts"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetArtsRequest req = new GetArtsRequest() { + SectionId = 859200, + }; + + var res = await sdk.Content.GetArtsAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/autocomplete"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + AutocompleteRequest req = new AutocompleteRequest() { + SectionId = 942007, + }; + + var res = await sdk.Library.AutocompleteAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/categories"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetCategoriesRequest req = new GetCategoriesRequest() { + SectionId = 21841, + }; + + var res = await sdk.Content.GetCategoriesAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/cluster"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetClusterRequest req = new GetClusterRequest() { + SectionId = 138560, + }; + + var res = await sdk.Content.GetClusterAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/collection/{collectionId}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteCollectionRequest req = new DeleteCollectionRequest() { + SectionId = 283619, + CollectionId = 680895, + }; + + var res = await sdk.Library.DeleteCollectionAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/collections"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetCollectionsRequest req = new GetCollectionsRequest() { + SectionId = 348838, + }; + + var res = await sdk.Library.GetCollectionsAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/common"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetCommonRequest req = new GetCommonRequest() { + SectionId = 298154, + }; + + var res = await sdk.Library.GetCommonAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/composite/{updatedAt}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetSectionImageRequest req = new GetSectionImageRequest() { + SectionId = 925611, + UpdatedAt = 117413, + }; + + var res = await sdk.Library.GetSectionImageAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/computePath"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetSonicPathRequest req = new GetSonicPathRequest() { + SectionId = 914549, + StartID = 629990, + EndID = 687740, + }; + + var res = await sdk.Content.GetSonicPathAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/emptyTrash"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + EmptyTrashRequest req = new EmptyTrashRequest() { + SectionId = 30052, + }; + + var res = await sdk.Library.EmptyTrashAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/filters"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetSectionFiltersRequest req = new GetSectionFiltersRequest() { + SectionId = 380557, + }; + + var res = await sdk.Library.GetSectionFiltersAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/firstCharacters"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetFirstCharactersRequest req = new GetFirstCharactersRequest() { + SectionId = 3947, + }; + + var res = await sdk.Library.GetFirstCharactersAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/indexes"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteIndexesRequest req = new DeleteIndexesRequest() { + SectionId = 588437, + }; + + var res = await sdk.Library.DeleteIndexesAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/intros"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteIntrosRequest req = new DeleteIntrosRequest() { + SectionId = 498656, + }; + + var res = await sdk.Library.DeleteIntrosAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/location"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetFoldersRequest req = new GetFoldersRequest() { + SectionId = 892532, + }; + + var res = await sdk.Content.GetFoldersAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/moment"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ListMomentsRequest req = new ListMomentsRequest() { + SectionId = 403239, + }; + + var res = await sdk.Content.ListMomentsAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/nearest"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetSonicallySimilarRequest req = new GetSonicallySimilarRequest() { + SectionId = 525956, + Values = new List() {}, + }; + + var res = await sdk.Content.GetSonicallySimilarAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/prefs"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetSectionPreferencesRequest req = new GetSectionPreferencesRequest() { + SectionId = 754869, + }; + + var res = await sdk.Library.GetSectionPreferencesAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/prefs"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + SetSectionPreferencesRequest req = new SetSectionPreferencesRequest() { + SectionId = 349936, + Prefs = new SetSectionPreferencesQueryParamPrefs() {}, + }; + + var res = await sdk.Library.SetSectionPreferencesAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/refresh"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + CancelRefreshRequest req = new CancelRefreshRequest() { + SectionId = 326852, + }; + + var res = await sdk.Library.CancelRefreshAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/refresh"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + RefreshSectionRequest req = new RefreshSectionRequest() { + SectionId = 450300, + Force = BoolInt.One, + }; + + var res = await sdk.Library.RefreshSectionAsync(req); + + // handle response + - target: $["paths"]["/library/sections/{sectionId}/sorts"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetAvailableSortsRequest req = new GetAvailableSortsRequest() { + SectionId = 212498, + }; + + var res = await sdk.Library.GetAvailableSortsAsync(req); + + // handle response + - target: $["paths"]["/library/streams/{streamId}.{ext}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteStreamRequest req = new DeleteStreamRequest() { + StreamId = 841510, + Ext = "", + }; + + var res = await sdk.Library.DeleteStreamAsync(req); + + // handle response + - target: $["paths"]["/library/streams/{streamId}.{ext}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetStreamRequest req = new GetStreamRequest() { + StreamId = 314506, + Ext = "", + AutoAdjustSubtitle = BoolInt.One, + }; + + var res = await sdk.Library.GetStreamAsync(req); + + // handle response + - target: $["paths"]["/library/streams/{streamId}.{ext}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + SetStreamOffsetRequest req = new SetStreamOffsetRequest() { + StreamId = 606295, + Ext = "", + }; + + var res = await sdk.Library.SetStreamOffsetAsync(req); + + // handle response + - target: $["paths"]["/library/streams/{streamId}/levels"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetStreamLevelsRequest req = new GetStreamLevelsRequest() { + StreamId = 447611, + }; + + var res = await sdk.Library.GetStreamLevelsAsync(req); + + // handle response + - target: $["paths"]["/library/streams/{streamId}/loudness"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetStreamLoudnessRequest req = new GetStreamLoudnessRequest() { + StreamId = 277271, + }; + + var res = await sdk.Library.GetStreamLoudnessAsync(req); + + // handle response + - target: $["paths"]["/library/tags"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetTagsRequest req = new GetTagsRequest() {}; + + var res = await sdk.Library.GetTagsAsync(req); + + // handle response + - target: $["paths"]["/livetv/dvrs"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + + var sdk = new PlexAPI(token: ""); + + var res = await sdk.DVRs.ListDVRsAsync(); + + // handle response + - target: $["paths"]["/livetv/dvrs"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + CreateDVRRequest req = new CreateDVRRequest() { + Lineup = "lineup://tv.plex.providers.epg.onconnect/USA-HI51418-DEFAULT", + DeviceQueryParameter = new List() { + "d", + "e", + "v", + "i", + "c", + "e", + "[", + "]", + "=", + "d", + "e", + "v", + "i", + "c", + "e", + ":", + "/", + "/", + "t", + "v", + ".", + "p", + "l", + "e", + "x", + ".", + "g", + "r", + "a", + "b", + "b", + "e", + "r", + "s", + ".", + "h", + "d", + "h", + "o", + "m", + "e", + "r", + "u", + "n", + "/", + "1", + "0", + "5", + "3", + "C", + "0", + "C", + "A", + }, + Language = "eng", + }; + + var res = await sdk.DVRs.CreateDVRAsync(req); + + // handle response + - target: $["paths"]["/livetv/dvrs/{dvrId}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteDVRRequest req = new DeleteDVRRequest() { + DvrId = 855088, + }; + + var res = await sdk.DVRs.DeleteDVRAsync(req); + + // handle response + - target: $["paths"]["/livetv/dvrs/{dvrId}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetDVRRequest req = new GetDVRRequest() { + DvrId = 973518, + }; + + var res = await sdk.DVRs.GetDVRAsync(req); + + // handle response + - target: $["paths"]["/livetv/dvrs/{dvrId}/channels/{channel}/tune"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + TuneChannelRequest req = new TuneChannelRequest() { + DvrId = 834281, + Channel = "2.1", + }; + + var res = await sdk.DVRs.TuneChannelAsync(req); + + // handle response + - target: $["paths"]["/livetv/dvrs/{dvrId}/devices/{deviceId}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + RemoveDeviceFromDVRRequest req = new RemoveDeviceFromDVRRequest() { + DvrId = 945416, + DeviceId = 260761, + }; + + var res = await sdk.DVRs.RemoveDeviceFromDVRAsync(req); + + // handle response + - target: $["paths"]["/livetv/dvrs/{dvrId}/devices/{deviceId}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + AddDeviceToDVRRequest req = new AddDeviceToDVRRequest() { + DvrId = 334755, + DeviceId = 852930, + }; + + var res = await sdk.DVRs.AddDeviceToDVRAsync(req); + + // handle response + - target: $["paths"]["/livetv/dvrs/{dvrId}/lineups"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteLineupRequest req = new DeleteLineupRequest() { + DvrId = 454470, + Lineup = "", + }; + + var res = await sdk.DVRs.DeleteLineupAsync(req); + + // handle response + - target: $["paths"]["/livetv/dvrs/{dvrId}/lineups"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + AddLineupRequest req = new AddLineupRequest() { + DvrId = 945235, + Lineup = "", + }; + + var res = await sdk.DVRs.AddLineupAsync(req); + + // handle response + - target: $["paths"]["/livetv/dvrs/{dvrId}/prefs"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + SetDVRPreferencesRequest req = new SetDVRPreferencesRequest() { + DvrId = 116357, + }; + + var res = await sdk.DVRs.SetDVRPreferencesAsync(req); + + // handle response + - target: $["paths"]["/livetv/dvrs/{dvrId}/reloadGuide"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + StopDVRReloadRequest req = new StopDVRReloadRequest() { + DvrId = 348053, + }; + + var res = await sdk.DVRs.StopDVRReloadAsync(req); + + // handle response + - target: $["paths"]["/livetv/dvrs/{dvrId}/reloadGuide"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ReloadGuideRequest req = new ReloadGuideRequest() { + DvrId = 140753, + }; + + var res = await sdk.DVRs.ReloadGuideAsync(req); + + // handle response + - target: $["paths"]["/livetv/epg/channelmap"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ComputeChannelMapRequest req = new ComputeChannelMapRequest() { + DeviceQueryParameter = "", + Lineup = "", + }; + + var res = await sdk.Epg.ComputeChannelMapAsync(req); + + // handle response + - target: $["paths"]["/livetv/epg/channels"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetChannelsRequest req = new GetChannelsRequest() { + Lineup = "", + }; + + var res = await sdk.Epg.GetChannelsAsync(req); + + // handle response + - target: $["paths"]["/livetv/epg/countries"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + + var sdk = new PlexAPI(token: ""); + + var res = await sdk.Epg.GetCountriesAsync(); + + // handle response + - target: $["paths"]["/livetv/epg/countries/{country}/{epgId}/lineups"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetCountriesLineupsRequest req = new GetCountriesLineupsRequest() { + Country = "Malawi", + EpgId = "", + }; + + var res = await sdk.Epg.GetCountriesLineupsAsync(req); + + // handle response + - target: $["paths"]["/livetv/epg/countries/{country}/{epgId}/regions"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetCountryRegionsRequest req = new GetCountryRegionsRequest() { + Country = "Morocco", + EpgId = "", + }; + + var res = await sdk.Epg.GetCountryRegionsAsync(req); + + // handle response + - target: $["paths"]["/livetv/epg/countries/{country}/{epgId}/regions/{region}/lineups"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ListLineupsRequest req = new ListLineupsRequest() { + Country = "Vanuatu", + EpgId = "", + Region = "", + }; + + var res = await sdk.Epg.ListLineupsAsync(req); + + // handle response + - target: $["paths"]["/livetv/epg/languages"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + + var sdk = new PlexAPI(token: ""); + + var res = await sdk.Epg.GetAllLanguagesAsync(); + + // handle response + - target: $["paths"]["/livetv/epg/lineup"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetLineupRequest req = new GetLineupRequest() { + DeviceQueryParameter = "", + LineupGroup = "", + }; + + var res = await sdk.Epg.GetLineupAsync(req); + + // handle response + - target: $["paths"]["/livetv/epg/lineupchannels"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetLineupChannelsRequest req = new GetLineupChannelsRequest() { + Lineup = new List() { + "", + "", + }, + }; + + var res = await sdk.Epg.GetLineupChannelsAsync(req); + + // handle response + - target: $["paths"]["/livetv/sessions"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + + var sdk = new PlexAPI(token: ""); + + var res = await sdk.LiveTV.GetSessionsAsync(); + + // handle response + - target: $["paths"]["/livetv/sessions/{sessionId}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetLiveTVSessionRequest req = new GetLiveTVSessionRequest() { + SessionId = "", + }; + + var res = await sdk.LiveTV.GetLiveTVSessionAsync(req); + + // handle response + - target: $["paths"]["/livetv/sessions/{sessionId}/{consumerId}/index.m3u8"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetSessionPlaylistIndexRequest req = new GetSessionPlaylistIndexRequest() { + SessionId = "", + ConsumerId = "", + }; + + var res = await sdk.LiveTV.GetSessionPlaylistIndexAsync(req); + + // handle response + - target: $["paths"]["/livetv/sessions/{sessionId}/{consumerId}/{segmentId}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetSessionSegmentRequest req = new GetSessionSegmentRequest() { + SessionId = "", + ConsumerId = "", + SegmentId = "", + }; + + var res = await sdk.LiveTV.GetSessionSegmentAsync(req); + // handle response - target: $["paths"]["/log"]["post"] update: @@ -870,17 +5225,108 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using System; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI(token: ""); - string req = @"level=4&message=Test%20message%201&source=postman - level=3&message=Test%20message%202&source=postman - level=1&message=Test%20message%203&source=postman"; + byte[] req = System.Text.Encoding.UTF8.GetBytes("0x0Ce2fFcEBF"); - var res = await sdk.Log.LogMultiLineAsync(req); + var res = await sdk.Log.WriteLogAsync(req); // handle response - - target: $["paths"]["/log/networked"]["get"] + - target: $["paths"]["/log"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + WriteMessageRequest req = new WriteMessageRequest() {}; + + var res = await sdk.Log.WriteMessageAsync(req); + + // handle response + - target: $["paths"]["/log/networked"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + EnablePapertrailRequest req = new EnablePapertrailRequest() {}; + + var res = await sdk.Log.EnablePapertrailAsync(req); + + // handle response + - target: $["paths"]["/media/grabbers"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetAvailableGrabbersRequest req = new GetAvailableGrabbersRequest() { + Protocol = "livetv", + }; + + var res = await sdk.Devices.GetAvailableGrabbersAsync(req); + + // handle response + - target: $["paths"]["/media/grabbers/devices"]["get"] update: x-codeSamples: - lang: csharp @@ -889,9 +5335,397 @@ actions: using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI(token: ""); - var res = await sdk.Log.EnablePaperTrailAsync(); + var res = await sdk.Devices.ListDevicesAsync(); + + // handle response + - target: $["paths"]["/media/grabbers/devices"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + AddDeviceRequest req = new AddDeviceRequest() { + Uri = "http://10.0.0.5", + }; + + var res = await sdk.Devices.AddDeviceAsync(req); + + // handle response + - target: $["paths"]["/media/grabbers/devices/discover"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + + var sdk = new PlexAPI(token: ""); + + var res = await sdk.Devices.DiscoverDevicesAsync(); + + // handle response + - target: $["paths"]["/media/grabbers/devices/{deviceId}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + RemoveDeviceRequest req = new RemoveDeviceRequest() { + DeviceId = 685908, + }; + + var res = await sdk.Devices.RemoveDeviceAsync(req); + + // handle response + - target: $["paths"]["/media/grabbers/devices/{deviceId}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetDeviceDetailsRequest req = new GetDeviceDetailsRequest() { + DeviceId = 170949, + }; + + var res = await sdk.Devices.GetDeviceDetailsAsync(req); + + // handle response + - target: $["paths"]["/media/grabbers/devices/{deviceId}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ModifyDeviceRequest req = new ModifyDeviceRequest() { + DeviceId = 879135, + Enabled = BoolInt.One, + }; + + var res = await sdk.Devices.ModifyDeviceAsync(req); + + // handle response + - target: $["paths"]["/media/grabbers/devices/{deviceId}/channelmap"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + SetChannelmapRequest req = new SetChannelmapRequest() { + DeviceId = 937661, + ChannelMapping = new LukeHagar.PlexAPI.SDK.Models.Requests.ChannelMapping() {}, + ChannelMappingByKey = new ChannelMappingByKey() {}, + ChannelsEnabled = new List() { + "4", + "6", + ".", + "1", + ",", + "4", + "4", + ".", + "1", + ",", + "4", + "5", + ".", + "1", + }, + }; + + var res = await sdk.Devices.SetChannelmapAsync(req); + + // handle response + - target: $["paths"]["/media/grabbers/devices/{deviceId}/channels"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetDevicesChannelsRequest req = new GetDevicesChannelsRequest() { + DeviceId = 517209, + }; + + var res = await sdk.Devices.GetDevicesChannelsAsync(req); + + // handle response + - target: $["paths"]["/media/grabbers/devices/{deviceId}/prefs"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + SetDevicePreferencesRequest req = new SetDevicePreferencesRequest() { + DeviceId = 420973, + }; + + var res = await sdk.Devices.SetDevicePreferencesAsync(req); + + // handle response + - target: $["paths"]["/media/grabbers/devices/{deviceId}/scan"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + StopScanRequest req = new StopScanRequest() { + DeviceId = 576494, + }; + + var res = await sdk.Devices.StopScanAsync(req); + + // handle response + - target: $["paths"]["/media/grabbers/devices/{deviceId}/scan"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ScanRequest req = new ScanRequest() { + DeviceId = 57391, + Source = "Cable", + }; + + var res = await sdk.Devices.ScanAsync(req); + + // handle response + - target: $["paths"]["/media/grabbers/devices/{deviceId}/thumb/{version}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetThumbRequest req = new GetThumbRequest() { + DeviceId = 960617, + VersionPathParameter = 1025, + }; + + var res = await sdk.Devices.GetThumbAsync(req); + + // handle response + - target: $["paths"]["/media/grabbers/operations/{operationId}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + CancelGrabRequest req = new CancelGrabRequest() { + OperationId = "", + }; + + var res = await sdk.Subscriptions.CancelGrabAsync(req); // handle response - target: $["paths"]["/media/providers"]["get"] @@ -903,12 +5737,44 @@ actions: using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI(token: ""); - var res = await sdk.Server.GetMediaProvidersAsync(xPlexToken: "CV5xoxjTpFKUzBTShsaf"); + var res = await sdk.Provider.ListProvidersAsync(); // handle response - - target: $["paths"]["/myplex/account"]["get"] + - target: $["paths"]["/media/providers"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + AddProviderRequest req = new AddProviderRequest() { + Url = "https://steep-obedience.name/", + }; + + var res = await sdk.Provider.AddProviderAsync(req); + + // handle response + - target: $["paths"]["/media/providers/refresh"]["post"] update: x-codeSamples: - lang: csharp @@ -917,9 +5783,302 @@ actions: using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI(token: ""); - var res = await sdk.Server.GetMyPlexAccountAsync(); + var res = await sdk.Provider.RefreshProvidersAsync(); + + // handle response + - target: $["paths"]["/media/providers/{provider}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteMediaProviderRequest req = new DeleteMediaProviderRequest() { + Provider = "", + }; + + var res = await sdk.Provider.DeleteMediaProviderAsync(req); + + // handle response + - target: $["paths"]["/media/subscriptions"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetAllSubscriptionsRequest req = new GetAllSubscriptionsRequest() { + IncludeGrabs = BoolInt.One, + IncludeStorage = BoolInt.One, + }; + + var res = await sdk.Subscriptions.GetAllSubscriptionsAsync(req); + + // handle response + - target: $["paths"]["/media/subscriptions"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + CreateSubscriptionRequest req = new CreateSubscriptionRequest() { + TargetLibrarySectionID = 1, + TargetSectionLocationID = 3, + Type = 2, + Hints = new Hints() {}, + Prefs = new CreateSubscriptionQueryParamPrefs() {}, + Params = new Params() {}, + }; + + var res = await sdk.Subscriptions.CreateSubscriptionAsync(req); + + // handle response + - target: $["paths"]["/media/subscriptions/process"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + + var sdk = new PlexAPI(token: ""); + + var res = await sdk.Subscriptions.ProcessSubscriptionsAsync(); + + // handle response + - target: $["paths"]["/media/subscriptions/scheduled"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + + var sdk = new PlexAPI(token: ""); + + var res = await sdk.Subscriptions.GetScheduledRecordingsAsync(); + + // handle response + - target: $["paths"]["/media/subscriptions/template"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetTemplateRequest req = new GetTemplateRequest() { + Guid = "plex://episode/5fc70265c40548002d539d23", + }; + + var res = await sdk.Subscriptions.GetTemplateAsync(req); + + // handle response + - target: $["paths"]["/media/subscriptions/{subscriptionId}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeleteSubscriptionRequest req = new DeleteSubscriptionRequest() { + SubscriptionId = 974618, + }; + + var res = await sdk.Subscriptions.DeleteSubscriptionAsync(req); + + // handle response + - target: $["paths"]["/media/subscriptions/{subscriptionId}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetSubscriptionRequest req = new GetSubscriptionRequest() { + SubscriptionId = 186713, + IncludeGrabs = BoolInt.One, + IncludeStorage = BoolInt.One, + }; + + var res = await sdk.Subscriptions.GetSubscriptionAsync(req); + + // handle response + - target: $["paths"]["/media/subscriptions/{subscriptionId}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + EditSubscriptionPreferencesRequest req = new EditSubscriptionPreferencesRequest() { + SubscriptionId = 673918, + Prefs = new EditSubscriptionPreferencesQueryParamPrefs() {}, + }; + + var res = await sdk.Subscriptions.EditSubscriptionPreferencesAsync(req); + + // handle response + - target: $["paths"]["/media/subscriptions/{subscriptionId}/move"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ReorderSubscriptionRequest req = new ReorderSubscriptionRequest() { + SubscriptionId = 440634, + }; + + var res = await sdk.Subscriptions.ReorderSubscriptionAsync(req); // handle response - target: $["paths"]["/photo/:/transcode"]["get"] @@ -932,63 +6091,330 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - GetResizedPhotoRequest req = new GetResizedPhotoRequest() { - Width = 110D, - Height = 165D, - Blur = 0D, - MinSize = MinSize.Zero, - Upscale = Upscale.Zero, - Url = "/library/metadata/49564/thumb/1654258204", + TranscodeImageRequest req = new TranscodeImageRequest() { + Url = "/library/metadata/265/thumb/1715112705", + Background = "#ff5522", + Upscale = BoolInt.One, + MinSize = BoolInt.One, + Rotate = BoolInt.One, + BlendColor = "#ff5522", }; - var res = await sdk.Server.GetResizedPhotoAsync(req); + var res = await sdk.Transcoder.TranscodeImageAsync(req); // handle response - - target: $["paths"]["/pins"]["post"] + - target: $["paths"]["/playQueues"]["post"] update: x-codeSamples: - lang: csharp label: PlexCSharp source: |- using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - GetPinRequest req = new GetPinRequest() { - ClientID = "3381b62b-9ab7-4e37-827b-203e9809eb58", - ClientName = "Plex for Roku", - DeviceNickname = "Roku 3", - ClientVersion = "2.4.1", - Platform = "Roku", + CreatePlayQueueRequest req = new CreatePlayQueueRequest() { + Type = LukeHagar.PlexAPI.SDK.Models.Requests.Type.Audio, + Shuffle = BoolInt.One, + Repeat = BoolInt.One, + Continuous = BoolInt.One, + Recursive = BoolInt.One, + OnDeck = BoolInt.One, }; - var res = await sdk.Plex.GetPinAsync(req); + var res = await sdk.PlayQueue.CreatePlayQueueAsync(req); // handle response - - target: $["paths"]["/pins/{pinID}"]["get"] + - target: $["paths"]["/playQueues/{playQueueId}"]["get"] update: x-codeSamples: - lang: csharp label: PlexCSharp source: |- using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - GetTokenByPinIdRequest req = new GetTokenByPinIdRequest() { - PinID = 232248, - ClientID = "3381b62b-9ab7-4e37-827b-203e9809eb58", - ClientName = "Plex for Roku", - DeviceNickname = "Roku 3", - ClientVersion = "2.4.1", - Platform = "Roku", + GetPlayQueueRequest req = new GetPlayQueueRequest() { + PlayQueueId = 210646, + Own = BoolInt.One, + IncludeBefore = BoolInt.One, + IncludeAfter = BoolInt.One, }; - var res = await sdk.Plex.GetTokenByPinIdAsync(req); + var res = await sdk.PlayQueue.GetPlayQueueAsync(req); + + // handle response + - target: $["paths"]["/playQueues/{playQueueId}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + AddToPlayQueueRequest req = new AddToPlayQueueRequest() { + PlayQueueId = 919248, + Next = BoolInt.One, + }; + + var res = await sdk.PlayQueue.AddToPlayQueueAsync(req); + + // handle response + - target: $["paths"]["/playQueues/{playQueueId}/items"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ClearPlayQueueRequest req = new ClearPlayQueueRequest() { + PlayQueueId = 86357, + }; + + var res = await sdk.PlayQueue.ClearPlayQueueAsync(req); + + // handle response + - target: $["paths"]["/playQueues/{playQueueId}/items/{playQueueItemId}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeletePlayQueueItemRequest req = new DeletePlayQueueItemRequest() { + PlayQueueId = 285738, + PlayQueueItemId = 464354, + }; + + var res = await sdk.PlayQueue.DeletePlayQueueItemAsync(req); + + // handle response + - target: $["paths"]["/playQueues/{playQueueId}/items/{playQueueItemId}/move"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + MovePlayQueueItemRequest req = new MovePlayQueueItemRequest() { + PlayQueueId = 31341, + PlayQueueItemId = 495865, + }; + + var res = await sdk.PlayQueue.MovePlayQueueItemAsync(req); + + // handle response + - target: $["paths"]["/playQueues/{playQueueId}/reset"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ResetPlayQueueRequest req = new ResetPlayQueueRequest() { + PlayQueueId = 581891, + }; + + var res = await sdk.PlayQueue.ResetPlayQueueAsync(req); + + // handle response + - target: $["paths"]["/playQueues/{playQueueId}/shuffle"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ShuffleRequest req = new ShuffleRequest() { + PlayQueueId = 316150, + }; + + var res = await sdk.PlayQueue.ShuffleAsync(req); + + // handle response + - target: $["paths"]["/playQueues/{playQueueId}/unshuffle"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + UnshuffleRequest req = new UnshuffleRequest() { + PlayQueueId = 484388, + }; + + var res = await sdk.PlayQueue.UnshuffleAsync(req); // handle response - target: $["paths"]["/playlists"]["get"] @@ -999,10 +6425,26 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Playlists.GetPlaylistsAsync(); + ListPlaylistsRequest req = new ListPlaylistsRequest() {}; + + var res = await sdk.Playlist.ListPlaylistsAsync(req); // handle response - target: $["paths"]["/playlists"]["post"] @@ -1015,16 +6457,24 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - CreatePlaylistRequest req = new CreatePlaylistRequest() { - Title = "", - Type = CreatePlaylistQueryParamType.Audio, - Smart = Smart.One, - Uri = "https://short-term-disconnection.name/", - }; + CreatePlaylistRequest req = new CreatePlaylistRequest() {}; - var res = await sdk.Playlists.CreatePlaylistAsync(req); + var res = await sdk.LibraryPlaylists.CreatePlaylistAsync(req); // handle response - target: $["paths"]["/playlists/upload"]["post"] @@ -1037,72 +6487,30 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Playlists.UploadPlaylistAsync( - path: "/home/barkley/playlist.m3u", - force: QueryParamForce.One, - sectionID: 1 + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); - // handle response - - target: $["paths"]["/playlists/{playlistID}"]["delete"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; + UploadPlaylistRequest req = new UploadPlaylistRequest() { + Path = "/home/barkley/playlist.m3u", + Force = BoolInt.One, + }; - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Playlists.DeletePlaylistAsync(playlistID: 3432.93D); + var res = await sdk.LibraryPlaylists.UploadPlaylistAsync(req); // handle response - - target: $["paths"]["/playlists/{playlistID}"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Playlists.GetPlaylistAsync(playlistID: 8419.53D); - - // handle response - - target: $["paths"]["/playlists/{playlistID}"]["put"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Playlists.UpdatePlaylistAsync(playlistID: 1579.66D); - - // handle response - - target: $["paths"]["/playlists/{playlistID}/items"]["delete"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Playlists.ClearPlaylistContentsAsync(playlistID: 4137.37D); - - // handle response - - target: $["paths"]["/playlists/{playlistID}/items"]["get"] + - target: $["paths"]["/playlists/{playlistId}"]["delete"] update: x-codeSamples: - lang: csharp @@ -1112,33 +6520,29 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Playlists.GetPlaylistContentsAsync( - playlistID: 5535.42D, - type: GetPlaylistContentsQueryParamType.TvShow + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); - // handle response - - target: $["paths"]["/playlists/{playlistID}/items"]["put"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; + DeletePlaylistRequest req = new DeletePlaylistRequest() { + PlaylistId = 343293, + }; - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Playlists.AddPlaylistContentsAsync( - playlistID: 7013.44D, - uri: "server://12345/com.plexapp.plugins.library/library/metadata/1", - playQueueID: 123D - ); + var res = await sdk.LibraryPlaylists.DeletePlaylistAsync(req); // handle response - - target: $["paths"]["/resources"]["get"] + - target: $["paths"]["/playlists/{playlistId}"]["get"] update: x-codeSamples: - lang: csharp @@ -1148,17 +6552,29 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Plex.GetServerResourcesAsync( - clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58", - includeHttps: IncludeHttps.Enable, - includeRelay: IncludeRelay.Enable, - includeIPv6: IncludeIPv6.Enable + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); + GetPlaylistRequest req = new GetPlaylistRequest() { + PlaylistId = 841953, + }; + + var res = await sdk.Playlist.GetPlaylistAsync(req); + // handle response - - target: $["paths"]["/search"]["get"] + - target: $["paths"]["/playlists/{playlistId}"]["put"] update: x-codeSamples: - lang: csharp @@ -1166,10 +6582,323 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Search.GetSearchResultsAsync(query: "110"); + UpdatePlaylistRequest req = new UpdatePlaylistRequest() { + PlaylistId = 157966, + }; + + var res = await sdk.LibraryPlaylists.UpdatePlaylistAsync(req); + + // handle response + - target: $["paths"]["/playlists/{playlistId}/generators"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetPlaylistGeneratorsRequest req = new GetPlaylistGeneratorsRequest() { + PlaylistId = 162342, + }; + + var res = await sdk.LibraryPlaylists.GetPlaylistGeneratorsAsync(req); + + // handle response + - target: $["paths"]["/playlists/{playlistId}/items"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + ClearPlaylistItemsRequest req = new ClearPlaylistItemsRequest() { + PlaylistId = 552140, + }; + + var res = await sdk.LibraryPlaylists.ClearPlaylistItemsAsync(req); + + // handle response + - target: $["paths"]["/playlists/{playlistId}/items"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetPlaylistItemsRequest req = new GetPlaylistItemsRequest() { + PlaylistId = 118195, + }; + + var res = await sdk.Playlist.GetPlaylistItemsAsync(req); + + // handle response + - target: $["paths"]["/playlists/{playlistId}/items"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + AddPlaylistItemsRequest req = new AddPlaylistItemsRequest() { + PlaylistId = 533723, + }; + + var res = await sdk.LibraryPlaylists.AddPlaylistItemsAsync(req); + + // handle response + - target: $["paths"]["/playlists/{playlistId}/items/{generatorId}"]["delete"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + DeletePlaylistItemRequest req = new DeletePlaylistItemRequest() { + PlaylistId = 981646, + GeneratorId = 194010, + }; + + var res = await sdk.LibraryPlaylists.DeletePlaylistItemAsync(req); + + // handle response + - target: $["paths"]["/playlists/{playlistId}/items/{generatorId}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetPlaylistGeneratorRequest req = new GetPlaylistGeneratorRequest() { + PlaylistId = 744880, + GeneratorId = 322168, + }; + + var res = await sdk.LibraryPlaylists.GetPlaylistGeneratorAsync(req); + + // handle response + - target: $["paths"]["/playlists/{playlistId}/items/{generatorId}/items"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + GetPlaylistGeneratorItemsRequest req = new GetPlaylistGeneratorItemsRequest() { + PlaylistId = 77230, + GeneratorId = 979714, + }; + + var res = await sdk.LibraryPlaylists.GetPlaylistGeneratorItemsAsync(req); + + // handle response + - target: $["paths"]["/playlists/{playlistId}/items/{generatorId}/{metadataId}/{action}"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + RefreshPlaylistRequest req = new RefreshPlaylistRequest() { + PlaylistId = 895314, + GeneratorId = 629742, + MetadataId = 724422, + Action = Action.Disable, + }; + + var res = await sdk.LibraryPlaylists.RefreshPlaylistAsync(req); + + // handle response + - target: $["paths"]["/playlists/{playlistId}/items/{playlistItemId}/move"]["put"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + MovePlaylistItemRequest req = new MovePlaylistItemRequest() { + PlaylistId = 940298, + PlaylistItemId = 375626, + }; + + var res = await sdk.LibraryPlaylists.MovePlaylistItemAsync(req); // handle response - target: $["paths"]["/security/resources"]["get"] @@ -1180,13 +6909,32 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Authentication.GetSourceConnectionInformationAsync(source: "server://client-identifier"); + GetSourceConnectionInformationRequest req = new GetSourceConnectionInformationRequest() { + Source = "", + Refresh = BoolInt.One, + }; + + var res = await sdk.General.GetSourceConnectionInformationAsync(req); // handle response - - target: $["paths"]["/security/token"]["get"] + - target: $["paths"]["/security/token"]["post"] update: x-codeSamples: - lang: csharp @@ -1196,15 +6944,30 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Authentication.GetTransientTokenAsync( - type: GetTransientTokenQueryParamType.Delegation, - scope: Scope.All + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); + GetTransientTokenRequest req = new GetTransientTokenRequest() { + Type = QueryParamType.Delegation, + Scope = Scope.All, + }; + + var res = await sdk.General.GetTransientTokenAsync(req); + // handle response - - target: $["paths"]["/servers"]["get"] + - target: $["paths"]["/services/ultrablur/colors"]["get"] update: x-codeSamples: - lang: csharp @@ -1212,13 +6975,31 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Server.GetServerListAsync(); + GetColorsRequest req = new GetColorsRequest() { + Url = "/library/metadata/217745/art/1718931408", + }; + + var res = await sdk.UltraBlur.GetColorsAsync(req); // handle response - - target: $["paths"]["/statistics/bandwidth"]["get"] + - target: $["paths"]["/services/ultrablur/image"]["get"] update: x-codeSamples: - lang: csharp @@ -1226,38 +7007,34 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Statistics.GetBandwidthStatisticsAsync(timespan: 4); + GetImageRequest req = new GetImageRequest() { + TopLeft = "3f280a", + TopRight = "6b4713", + BottomRight = "0f2a43", + BottomLeft = "1c425d", + Width = 1920, + Height = 1080, + Noise = BoolInt.One, + }; - // handle response - - target: $["paths"]["/statistics/media"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Statistics.GetStatisticsAsync(timespan: 4); - - // handle response - - target: $["paths"]["/statistics/resources"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Statistics.GetResourcesStatisticsAsync(timespan: 4); + var res = await sdk.UltraBlur.GetImageAsync(req); // handle response - target: $["paths"]["/status/sessions"]["get"] @@ -1269,9 +7046,23 @@ actions: using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI(token: ""); - var res = await sdk.Sessions.GetSessionsAsync(); + var res = await sdk.Status.ListSessionsAsync(); + + // handle response + - target: $["paths"]["/status/sessions/background"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + + var sdk = new PlexAPI(token: ""); + + var res = await sdk.Status.GetBackgroundTasksAsync(); // handle response - target: $["paths"]["/status/sessions/history/all"]["get"] @@ -1283,18 +7074,55 @@ actions: using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; + using System.Collections.Generic; - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Sessions.GetSessionHistoryAsync( - sort: "viewedAt:desc", - accountId: 1, - filter: new QueryParamFilter() {}, - librarySectionID: 12 + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); + ListPlaybackHistoryRequest req = new ListPlaybackHistoryRequest() { + Sort = new List() { + "v", + "i", + "e", + "w", + "e", + "d", + "A", + "t", + ":", + "d", + "e", + "s", + "c", + ",", + "a", + "c", + "c", + "o", + "u", + "n", + "t", + "I", + "D", + }, + }; + + var res = await sdk.Status.ListPlaybackHistoryAsync(req); + // handle response - - target: $["paths"]["/transcode/sessions"]["get"] + - target: $["paths"]["/status/sessions/history/{historyId}"]["delete"] update: x-codeSamples: - lang: csharp @@ -1302,13 +7130,31 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Sessions.GetTranscodeSessionsAsync(); + DeleteHistoryRequest req = new DeleteHistoryRequest() { + HistoryId = 953579, + }; + + var res = await sdk.Status.DeleteHistoryAsync(req); // handle response - - target: $["paths"]["/transcode/sessions/{sessionKey}"]["delete"] + - target: $["paths"]["/status/sessions/history/{historyId}"]["get"] update: x-codeSamples: - lang: csharp @@ -1316,10 +7162,61 @@ actions: source: |- using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Sessions.StopTranscodeSessionAsync(sessionKey: "zz7llzqlx8w9vnrsbnwhbmep"); + GetHistoryItemRequest req = new GetHistoryItemRequest() { + HistoryId = 832213, + }; + + var res = await sdk.Status.GetHistoryItemAsync(req); + + // handle response + - target: $["paths"]["/status/sessions/terminate"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + TerminateSessionRequest req = new TerminateSessionRequest() { + SessionId = "cdefghijklmnopqrstuvwxyz", + Reason = "Stop Playing", + }; + + var res = await sdk.Status.TerminateSessionAsync(req); // handle response - target: $["paths"]["/updater/apply"]["put"] @@ -1332,13 +7229,28 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Updater.ApplyUpdatesAsync( - tonight: Tonight.One, - skip: Skip.One + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); + ApplyUpdatesRequest req = new ApplyUpdatesRequest() { + Tonight = BoolInt.One, + Skip = BoolInt.One, + }; + + var res = await sdk.Updater.ApplyUpdatesAsync(req); + // handle response - target: $["paths"]["/updater/check"]["put"] update: @@ -1350,9 +7262,26 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - var res = await sdk.Updater.CheckForUpdatesAsync(download: Download.One); + CheckUpdatesRequest req = new CheckUpdatesRequest() { + Download = BoolInt.One, + }; + + var res = await sdk.Updater.CheckUpdatesAsync(req); // handle response - target: $["paths"]["/updater/status"]["get"] @@ -1364,83 +7293,12 @@ actions: using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI(token: ""); - var res = await sdk.Updater.GetUpdateStatusAsync(); + var res = await sdk.Updater.GetUpdatesStatusAsync(); // handle response - - target: $["paths"]["/user"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Authentication.GetTokenDetailsAsync(); - - // handle response - - target: $["paths"]["/users"]["get"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(); - - GetUsersRequest req = new GetUsersRequest() { - ClientID = "3381b62b-9ab7-4e37-827b-203e9809eb58", - ClientName = "Plex for Roku", - DeviceNickname = "Roku 3", - DeviceName = "Chrome", - DeviceScreenResolution = "1487x1165,2560x1440", - ClientVersion = "2.4.1", - Platform = "Roku", - ClientFeatures = "external-media,indirect-media,hub-style-list", - Model = "4200X", - XPlexSessionId = "97e136ef-4ddd-4ff3-89a7-a5820c96c2ca", - XPlexLanguage = "en", - PlatformVersion = "4.3 build 1057", - XPlexToken = "CV5xoxjTpFKUzBTShsaf", - }; - - var res = await sdk.Users.GetUsersAsync(req); - - // handle response - - target: $["paths"]["/users/signin"]["post"] - update: - x-codeSamples: - - lang: csharp - label: PlexCSharp - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Requests; - - var sdk = new PlexAPI(); - - PostUsersSignInDataRequest req = new PostUsersSignInDataRequest() { - ClientID = "3381b62b-9ab7-4e37-827b-203e9809eb58", - ClientName = "Plex for Roku", - DeviceNickname = "Roku 3", - ClientVersion = "2.4.1", - Platform = "Roku", - RequestBody = new PostUsersSignInDataRequestBody() { - Login = "username@email.com", - Password = "password123", - VerificationCode = "123456", - }, - }; - - var res = await sdk.Authentication.PostUsersSignInDataAsync(req); - - // handle response - - target: $["paths"]["/video/:/transcode/universal/start.mpd"]["get"] + - target: $["paths"]["/{transcodeType}/:/transcode/universal/decision"]["get"] update: x-codeSamples: - lang: csharp @@ -1450,27 +7308,203 @@ actions: using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; - var sdk = new PlexAPI(accessToken: ""); + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); - StartUniversalTranscodeRequest req = new StartUniversalTranscodeRequest() { - HasMDE = 1D, - Path = "/library/metadata/23409", - MediaIndex = 0D, - PartIndex = 0D, - Protocol = "hls", - FastSeek = 0D, - DirectPlay = 0D, - DirectStream = 0D, - SubtitleSize = 100D, - Subtites = "burn", - AudioBoost = 100D, - Location = "lan", - MediaBufferSize = 102400D, - Session = "zvcage8b7rkioqcm8f4uns4c", - AddDebugOverlay = 0D, - AutoAdjustQuality = 0D, + MakeDecisionRequest req = new MakeDecisionRequest() { + TranscodeType = TranscodeType.Music, + AdvancedSubtitles = LukeHagar.PlexAPI.SDK.Models.Components.AdvancedSubtitles.Burn, + AudioBoost = 50, + AudioChannelCount = 5, + AutoAdjustQuality = BoolInt.One, + AutoAdjustSubtitle = BoolInt.One, + DirectPlay = BoolInt.One, + DirectStream = BoolInt.One, + DirectStreamAudio = BoolInt.One, + DisableResolutionRotation = BoolInt.One, + HasMDE = BoolInt.One, + Location = LukeHagar.PlexAPI.SDK.Models.Requests.Location.Wan, + MediaBufferSize = 102400, + MediaIndex = 0, + MusicBitrate = 5000, + Offset = 90.5D, + PartIndex = 0, + Path = "/library/metadata/151671", + PeakBitrate = 12000, + PhotoResolution = "1080x1080", + Protocol = LukeHagar.PlexAPI.SDK.Models.Requests.Protocol.Dash, + SecondsPerSegment = 5, + SubtitleSize = 50, + VideoBitrate = 12000, + VideoQuality = 50, + VideoResolution = "1080x1080", + XPlexClientProfileExtra = "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + XPlexClientProfileName = "generic", }; - var res = await sdk.Video.StartUniversalTranscodeAsync(req); + var res = await sdk.Transcoder.MakeDecisionAsync(req); + + // handle response + - target: $["paths"]["/{transcodeType}/:/transcode/universal/fallback"]["post"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + TriggerFallbackRequest req = new TriggerFallbackRequest() { + TranscodeType = TranscodeType.Audio, + }; + + var res = await sdk.Transcoder.TriggerFallbackAsync(req); + + // handle response + - target: $["paths"]["/{transcodeType}/:/transcode/universal/start.{extension}"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + StartTranscodeSessionRequest req = new StartTranscodeSessionRequest() { + TranscodeType = TranscodeType.Music, + Extension = Extension.Mpd, + AdvancedSubtitles = LukeHagar.PlexAPI.SDK.Models.Components.AdvancedSubtitles.Burn, + AudioBoost = 50, + AudioChannelCount = 5, + AutoAdjustQuality = BoolInt.One, + AutoAdjustSubtitle = BoolInt.One, + DirectPlay = BoolInt.One, + DirectStream = BoolInt.One, + DirectStreamAudio = BoolInt.One, + DisableResolutionRotation = BoolInt.One, + HasMDE = BoolInt.One, + Location = StartTranscodeSessionQueryParamLocation.Wan, + MediaBufferSize = 102400, + MediaIndex = 0, + MusicBitrate = 5000, + Offset = 90.5D, + PartIndex = 0, + Path = "/library/metadata/151671", + PeakBitrate = 12000, + PhotoResolution = "1080x1080", + Protocol = StartTranscodeSessionQueryParamProtocol.Dash, + SecondsPerSegment = 5, + SubtitleSize = 50, + VideoBitrate = 12000, + VideoQuality = 50, + VideoResolution = "1080x1080", + XPlexClientProfileExtra = "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + XPlexClientProfileName = "generic", + }; + + var res = await sdk.Transcoder.StartTranscodeSessionAsync(req); + + // handle response + - target: $["paths"]["/{transcodeType}/:/transcode/universal/subtitles"]["get"] + update: + x-codeSamples: + - lang: csharp + label: PlexCSharp + source: |- + using LukeHagar.PlexAPI.SDK; + using LukeHagar.PlexAPI.SDK.Models.Components; + using LukeHagar.PlexAPI.SDK.Models.Requests; + + var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" + ); + + TranscodeSubtitlesRequest req = new TranscodeSubtitlesRequest() { + TranscodeType = TranscodeType.Audio, + AdvancedSubtitles = LukeHagar.PlexAPI.SDK.Models.Components.AdvancedSubtitles.Burn, + AudioBoost = 50, + AudioChannelCount = 5, + AutoAdjustQuality = BoolInt.One, + AutoAdjustSubtitle = BoolInt.One, + DirectPlay = BoolInt.One, + DirectStream = BoolInt.One, + DirectStreamAudio = BoolInt.One, + DisableResolutionRotation = BoolInt.One, + HasMDE = BoolInt.One, + Location = QueryParamLocation.Wan, + MediaBufferSize = 102400, + MediaIndex = 0, + MusicBitrate = 5000, + Offset = 90.5D, + PartIndex = 0, + Path = "/library/metadata/151671", + PeakBitrate = 12000, + PhotoResolution = "1080x1080", + Protocol = QueryParamProtocol.Dash, + SecondsPerSegment = 5, + SubtitleSize = 50, + VideoBitrate = 12000, + VideoQuality = 50, + VideoResolution = "1080x1080", + XPlexClientProfileExtra = "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + XPlexClientProfileName = "generic", + }; + + var res = await sdk.Transcoder.TranscodeSubtitlesAsync(req); // handle response diff --git a/docs/Models/Components/Accepts.md b/docs/Models/Components/Accepts.md new file mode 100644 index 0000000..3d930ba --- /dev/null +++ b/docs/Models/Components/Accepts.md @@ -0,0 +1,9 @@ +# Accepts + + +## Values + +| Name | Value | +| ----------------- | ----------------- | +| `ApplicationJson` | application/json | +| `ApplicationXml` | application/xml | \ No newline at end of file diff --git a/docs/Models/Components/AdvancedSubtitles.md b/docs/Models/Components/AdvancedSubtitles.md new file mode 100644 index 0000000..386fb6a --- /dev/null +++ b/docs/Models/Components/AdvancedSubtitles.md @@ -0,0 +1,10 @@ +# AdvancedSubtitles + + +## Values + +| Name | Value | +| --------- | --------- | +| `Burn` | burn | +| `Text` | text | +| `Unknown` | unknown | \ No newline at end of file diff --git a/docs/Models/Components/AiringsType.md b/docs/Models/Components/AiringsType.md new file mode 100644 index 0000000..5e347b2 --- /dev/null +++ b/docs/Models/Components/AiringsType.md @@ -0,0 +1,9 @@ +# AiringsType + + +## Values + +| Name | Value | +| ---------------------- | ---------------------- | +| `NewAiringsOnly` | New Airings Only | +| `NewAndRepeatAirings` | New and Repeat Airings | \ No newline at end of file diff --git a/docs/Models/Components/BoolInt.md b/docs/Models/Components/BoolInt.md new file mode 100644 index 0000000..543fdbf --- /dev/null +++ b/docs/Models/Components/BoolInt.md @@ -0,0 +1,9 @@ +# BoolInt + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Components/Channel.md b/docs/Models/Components/Channel.md new file mode 100644 index 0000000..74d59d1 --- /dev/null +++ b/docs/Models/Components/Channel.md @@ -0,0 +1,15 @@ +# Channel + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `CallSign` | *string* | :heavy_minus_sign: | N/A | +| `ChannelVcn` | *string* | :heavy_minus_sign: | N/A | +| `Hd` | *bool* | :heavy_minus_sign: | N/A | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Language` | *string* | :heavy_minus_sign: | N/A | +| `Thumb` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/ChannelMapping.md b/docs/Models/Components/ChannelMapping.md new file mode 100644 index 0000000..af14ebb --- /dev/null +++ b/docs/Models/Components/ChannelMapping.md @@ -0,0 +1,11 @@ +# ChannelMapping + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `ChannelKey` | *string* | :heavy_minus_sign: | N/A | +| `DeviceIdentifier` | *string* | :heavy_minus_sign: | N/A | +| `Enabled` | *string* | :heavy_minus_sign: | N/A | +| `LineupIdentifier` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/Composite.md b/docs/Models/Components/Composite.md new file mode 100644 index 0000000..6d34757 --- /dev/null +++ b/docs/Models/Components/Composite.md @@ -0,0 +1,18 @@ +# Composite + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `Type` | *long* | :heavy_minus_sign: | Limit composite to specified metadata types | +| `Format` | [Models.Components.Format](../../Models/Components/Format.md) | :heavy_minus_sign: | The image type | +| `BackgroundColor` | *string* | :heavy_minus_sign: | 6 character hex RGB value for background color for image | +| `Border` | *long* | :heavy_minus_sign: | The width of the intra-image border | +| `Cols` | *long* | :heavy_minus_sign: | Number of columns to construct in the composite image | +| `Crop` | [Crop](../../Models/Components/Crop.md) | :heavy_minus_sign: | Where to crop source images to fit into composite image proportions | +| `Height` | *long* | :heavy_minus_sign: | The height of the image | +| `Media` | [CompositeMedia](../../Models/Components/CompositeMedia.md) | :heavy_minus_sign: | The default image type to use as the sources | +| `Repeat` | *bool* | :heavy_minus_sign: | Allow repetion of images if there are not enough source images to fill grid | +| `Rows` | *long* | :heavy_minus_sign: | Number of rows to construct in the composite image | +| `Width` | *long* | :heavy_minus_sign: | The width of the image | \ No newline at end of file diff --git a/docs/Models/Components/CompositeMedia.md b/docs/Models/Components/CompositeMedia.md new file mode 100644 index 0000000..847663e --- /dev/null +++ b/docs/Models/Components/CompositeMedia.md @@ -0,0 +1,12 @@ +# CompositeMedia + +The default image type to use as the sources + + +## Values + +| Name | Value | +| -------- | -------- | +| `Thumb` | thumb | +| `Art` | art | +| `Banner` | banner | \ No newline at end of file diff --git a/docs/Models/Components/Crop.md b/docs/Models/Components/Crop.md new file mode 100644 index 0000000..0c08136 --- /dev/null +++ b/docs/Models/Components/Crop.md @@ -0,0 +1,11 @@ +# Crop + +Where to crop source images to fit into composite image proportions + + +## Values + +| Name | Value | +| -------- | -------- | +| `Center` | center | +| `Top` | top | \ No newline at end of file diff --git a/docs/Models/Components/Decision.md b/docs/Models/Components/Decision.md new file mode 100644 index 0000000..4706a81 --- /dev/null +++ b/docs/Models/Components/Decision.md @@ -0,0 +1,10 @@ +# Decision + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Directplay` | directplay | +| `Transcode` | transcode | +| `None` | none | \ No newline at end of file diff --git a/docs/Models/Components/Default.md b/docs/Models/Components/Default.md new file mode 100644 index 0000000..5ca2207 --- /dev/null +++ b/docs/Models/Components/Default.md @@ -0,0 +1,24 @@ +# Default + +The default value of this setting + + +## Supported Types + +### Str + +```csharp +Default.CreateStr(/* values here */); +``` + +### Number + +```csharp +Default.CreateNumber(/* values here */); +``` + +### Boolean + +```csharp +Default.CreateBoolean(/* values here */); +``` diff --git a/docs/Models/Components/DefaultDirection.md b/docs/Models/Components/DefaultDirection.md new file mode 100644 index 0000000..c7d9a50 --- /dev/null +++ b/docs/Models/Components/DefaultDirection.md @@ -0,0 +1,11 @@ +# DefaultDirection + +This default diction of this sort + + +## Values + +| Name | Value | +| ------ | ------ | +| `Asc` | asc | +| `Desc` | desc | \ No newline at end of file diff --git a/docs/Models/Components/Device.md b/docs/Models/Components/Device.md new file mode 100644 index 0000000..3658469 --- /dev/null +++ b/docs/Models/Components/Device.md @@ -0,0 +1,20 @@ +# Device + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `ChannelMapping` | List<[Models.Components.ChannelMapping](../../Models/Components/ChannelMapping.md)> | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `LastSeenAt` | *long* | :heavy_minus_sign: | N/A | +| `Make` | *string* | :heavy_minus_sign: | N/A | +| `Model` | *string* | :heavy_minus_sign: | N/A | +| `ModelNumber` | *string* | :heavy_minus_sign: | N/A | +| `Protocol` | *string* | :heavy_minus_sign: | N/A | +| `Sources` | *string* | :heavy_minus_sign: | N/A | +| `State` | *string* | :heavy_minus_sign: | N/A | +| `Status` | *string* | :heavy_minus_sign: | N/A | +| `Tuners` | *string* | :heavy_minus_sign: | N/A | +| `Uri` | *string* | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/Directory.md b/docs/Models/Components/Directory.md new file mode 100644 index 0000000..a6aa75d --- /dev/null +++ b/docs/Models/Components/Directory.md @@ -0,0 +1,23 @@ +# Directory + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | *string* | :heavy_minus_sign: | N/A | +| `Art` | *string* | :heavy_minus_sign: | N/A | +| `Content` | *bool* | :heavy_minus_sign: | N/A | +| `Filter` | *string* | :heavy_minus_sign: | N/A | +| `HasPrefs` | *bool* | :heavy_minus_sign: | N/A | +| `HasStoreServices` | *bool* | :heavy_minus_sign: | N/A | +| `HubKey` | *string* | :heavy_minus_sign: | N/A | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `LastAccessedAt` | *long* | :heavy_minus_sign: | N/A | +| `Pivot` | List<[Pivot](../../Models/Components/Pivot.md)> | :heavy_minus_sign: | N/A | +| `Share` | *long* | :heavy_minus_sign: | N/A | +| `Thumb` | *string* | :heavy_minus_sign: | N/A | +| `TitleBar` | *string* | :heavy_minus_sign: | N/A | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/Dvr.md b/docs/Models/Components/Dvr.md new file mode 100644 index 0000000..a852e47 --- /dev/null +++ b/docs/Models/Components/Dvr.md @@ -0,0 +1,12 @@ +# Dvr + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Device` | List<[Models.Components.Device](../../Models/Components/Device.md)> | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Language` | *string* | :heavy_minus_sign: | N/A | +| `Lineup` | *string* | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/DvrRequestHandlerSlashGetResponses200.md b/docs/Models/Components/DvrRequestHandlerSlashGetResponses200.md new file mode 100644 index 0000000..631632e --- /dev/null +++ b/docs/Models/Components/DvrRequestHandlerSlashGetResponses200.md @@ -0,0 +1,10 @@ +# DvrRequestHandlerSlashGetResponses200 + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [DvrRequestHandlerSlashGetResponses200MediaContainer](../../Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainer.md b/docs/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainer.md new file mode 100644 index 0000000..78bc5dd --- /dev/null +++ b/docs/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainer.md @@ -0,0 +1,9 @@ +# DvrRequestHandlerSlashGetResponses200MediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer](../../Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer.md) | :heavy_minus_sign: | N/A | +| `Dvr` | List<[Models.Components.Dvr](../../Models/Components/Dvr.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer.md b/docs/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer.md new file mode 100644 index 0000000..a4dcf3f --- /dev/null +++ b/docs/Models/Components/DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer.md @@ -0,0 +1,17 @@ +# DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Status` | *long* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/Models/Components/Filter.md b/docs/Models/Components/Filter.md new file mode 100644 index 0000000..9d00929 --- /dev/null +++ b/docs/Models/Components/Filter.md @@ -0,0 +1,27 @@ +# Filter + +Each `Filter` object contains a description of the filter. Note that it is not an exhaustive list of the full media query language, but an important subset useful for top-level API. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Title` | *string* | :heavy_minus_sign: | The title for the filter. | +| `Type` | *string* | :heavy_minus_sign: | N/A | +| `Art` | *string* | :heavy_minus_sign: | N/A | +| `Content` | *bool* | :heavy_minus_sign: | N/A | +| `FilterValue` | *string* | :heavy_minus_sign: | This represents the filter name used for the filter, which can be used to construct complex media queries with. | +| `HasPrefs` | *bool* | :heavy_minus_sign: | N/A | +| `HasStoreServices` | *bool* | :heavy_minus_sign: | N/A | +| `HubKey` | *string* | :heavy_minus_sign: | N/A | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | This provides the endpoint where the possible range of values for the filter can be retrieved (e.g. for a "Genre" filter, it returns a list of all the genres in the library). This will include a `type` argument that matches the metadata type of the Type element. | +| `LastAccessedAt` | *long* | :heavy_minus_sign: | N/A | +| `Pivot` | List<[FilterPivot](../../Models/Components/FilterPivot.md)> | :heavy_minus_sign: | N/A | +| `Share` | *long* | :heavy_minus_sign: | N/A | +| `Thumb` | *string* | :heavy_minus_sign: | N/A | +| `TitleBar` | *string* | :heavy_minus_sign: | N/A | +| `FilterType` | *string* | :heavy_minus_sign: | This is either `string`, `integer`, or `boolean`, and describes the type of values used for the filter. | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/FilterPivot.md b/docs/Models/Components/FilterPivot.md new file mode 100644 index 0000000..1711cfc --- /dev/null +++ b/docs/Models/Components/FilterPivot.md @@ -0,0 +1,13 @@ +# FilterPivot + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | *string* | :heavy_minus_sign: | N/A | +| `Context` | *string* | :heavy_minus_sign: | N/A | +| `Id` | *string* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Symbol` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/Format.md b/docs/Models/Components/Format.md new file mode 100644 index 0000000..4313773 --- /dev/null +++ b/docs/Models/Components/Format.md @@ -0,0 +1,11 @@ +# Format + +The image type + + +## Values + +| Name | Value | +| ----- | ----- | +| `Jpg` | jpg | +| `Png` | png | \ No newline at end of file diff --git a/docs/Models/Components/GetResponses200.md b/docs/Models/Components/GetResponses200.md new file mode 100644 index 0000000..6545309 --- /dev/null +++ b/docs/Models/Components/GetResponses200.md @@ -0,0 +1,10 @@ +# GetResponses200 + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetResponses200MediaContainer](../../Models/Components/GetResponses200MediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/GetResponses200Hub.md b/docs/Models/Components/GetResponses200Hub.md new file mode 100644 index 0000000..54c62c4 --- /dev/null +++ b/docs/Models/Components/GetResponses200Hub.md @@ -0,0 +1,14 @@ +# GetResponses200Hub + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `HomeVisibility` | [Models.Components.HomeVisibility](../../Models/Components/HomeVisibility.md) | :heavy_minus_sign: | Whether this hub is visible on the home screen
- all: Visible to all users
- none: Visible to no users
- admin: Visible to only admin users
- shared: Visible to shared users
| +| `Identifier` | *string* | :heavy_minus_sign: | The identifier for this hub | +| `PromotedToOwnHome` | *bool* | :heavy_minus_sign: | Whether this hub is visible to admin user home | +| `PromotedToRecommended` | *bool* | :heavy_minus_sign: | Whether this hub is promoted to all for recommendations | +| `PromotedToSharedHome` | *bool* | :heavy_minus_sign: | Whether this hub is visible to shared user's home | +| `RecommendationsVisibility` | [Models.Components.RecommendationsVisibility](../../Models/Components/RecommendationsVisibility.md) | :heavy_minus_sign: | The visibility of this hub in recommendations:
- all: Visible to all users
- none: Visible to no users
- admin: Visible to only admin users
- shared: Visible to shared users
| +| `Title` | *string* | :heavy_minus_sign: | The title of this hub | \ No newline at end of file diff --git a/docs/Models/Components/GetResponses200MediaContainer.md b/docs/Models/Components/GetResponses200MediaContainer.md new file mode 100644 index 0000000..c522e36 --- /dev/null +++ b/docs/Models/Components/GetResponses200MediaContainer.md @@ -0,0 +1,17 @@ +# GetResponses200MediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Hub` | List<[GetResponses200Hub](../../Models/Components/GetResponses200Hub.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/HistoryAllGetResponses200.md b/docs/Models/Components/HistoryAllGetResponses200.md new file mode 100644 index 0000000..151fd0f --- /dev/null +++ b/docs/Models/Components/HistoryAllGetResponses200.md @@ -0,0 +1,10 @@ +# HistoryAllGetResponses200 + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [HistoryAllGetResponses200MediaContainer](../../Models/Components/HistoryAllGetResponses200MediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/HistoryAllGetResponses200MediaContainer.md b/docs/Models/Components/HistoryAllGetResponses200MediaContainer.md new file mode 100644 index 0000000..1086d75 --- /dev/null +++ b/docs/Models/Components/HistoryAllGetResponses200MediaContainer.md @@ -0,0 +1,17 @@ +# HistoryAllGetResponses200MediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Metadata` | List<[HistoryAllGetResponses200Metadata](../../Models/Components/HistoryAllGetResponses200Metadata.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/HistoryAllGetResponses200Metadata.md b/docs/Models/Components/HistoryAllGetResponses200Metadata.md new file mode 100644 index 0000000..e868500 --- /dev/null +++ b/docs/Models/Components/HistoryAllGetResponses200Metadata.md @@ -0,0 +1,18 @@ +# HistoryAllGetResponses200Metadata + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `AccountID` | *long* | :heavy_minus_sign: | The account id of this playback | +| `DeviceID` | *long* | :heavy_minus_sign: | The device id which played the item | +| `HistoryKey` | *string* | :heavy_minus_sign: | The key for this individual history item | +| `Key` | *string* | :heavy_minus_sign: | The metadata key for the item played | +| `LibrarySectionID` | *string* | :heavy_minus_sign: | The library section id containing the item played | +| `OriginallyAvailableAt` | *string* | :heavy_minus_sign: | The originally available at of the item played | +| `RatingKey` | *string* | :heavy_minus_sign: | The rating key for the item played | +| `Thumb` | *string* | :heavy_minus_sign: | The thumb of the item played | +| `Title` | *string* | :heavy_minus_sign: | The title of the item played | +| `Type` | *string* | :heavy_minus_sign: | The metadata type of the item played | +| `ViewedAt` | *long* | :heavy_minus_sign: | The time when the item was played | \ No newline at end of file diff --git a/docs/Models/Components/HomeVisibility.md b/docs/Models/Components/HomeVisibility.md new file mode 100644 index 0000000..e799ee4 --- /dev/null +++ b/docs/Models/Components/HomeVisibility.md @@ -0,0 +1,18 @@ +# HomeVisibility + +Whether this hub is visible on the home screen + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + + +## Values + +| Name | Value | +| -------- | -------- | +| `All` | all | +| `None` | none | +| `Admin` | admin | +| `Shared` | shared | \ No newline at end of file diff --git a/docs/Models/Components/Hub.md b/docs/Models/Components/Hub.md new file mode 100644 index 0000000..70af071 --- /dev/null +++ b/docs/Models/Components/Hub.md @@ -0,0 +1,22 @@ +# Hub + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Title` | *string* | :heavy_minus_sign: | A title for this grouping of content | | +| `Type` | *string* | :heavy_minus_sign: | The type of the items contained in this hub, or possibly `mixed` if there are multiple types | track | +| `Context` | *string* | :heavy_minus_sign: | N/A | hub.home.onDeck | +| `HubIdentifier` | *string* | :heavy_minus_sign: | A unique identifier for the hub | home.onDeck | +| `HubKey` | *string* | :heavy_minus_sign: | A key at which the exact content currently displayed can be fetched again. This is particularly important when a hub is marked as random and requesting the `key` may get different results. It's otherwise optional.
| | +| `Key` | *string* | :heavy_minus_sign: | The key at which all of the content for this hub can be retrieved | /hubs/sections/home/onDeck | +| `Metadata` | List<[Models.Components.Metadata](../../Models/Components/Metadata.md)> | :heavy_minus_sign: | N/A | | +| `More` | *bool* | :heavy_minus_sign: | "A boolean indicating that the hub contains more than what's included in the current response."
| | +| `Promoted` | *bool* | :heavy_minus_sign: | Indicating if the hub should be promoted to the user's homescreen | | +| `Random` | *bool* | :heavy_minus_sign: | Indicating that the contents of the hub may change on each request | | +| `Size` | *long* | :heavy_minus_sign: | N/A | 1 | +| `Style` | *string* | :heavy_minus_sign: | A suggestion on how this hub's contents might be displayed by a client. Some examples include `hero`, `list`, `spotlight`, and `upsell` | | +| `Subtype` | *string* | :heavy_minus_sign: | The subtype of the items contained in this hub, or possibly `mixed` if there are multiple types | podcast | +| `TotalSize` | *long* | :heavy_minus_sign: | N/A | 8 | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Components/Image.md b/docs/Models/Components/Image.md new file mode 100644 index 0000000..f5202d2 --- /dev/null +++ b/docs/Models/Components/Image.md @@ -0,0 +1,13 @@ +# Image + +Images such as movie posters and background artwork are represented by Image elements. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `Type` | [ImageType](../../Models/Components/ImageType.md) | :heavy_minus_sign: | Describes both the purpose and intended presentation of the image. | +| `Alt` | *string* | :heavy_minus_sign: | Title to use for accessibility. | +| `Url` | *string* | :heavy_minus_sign: | The relative path or absolute url for the image. | \ No newline at end of file diff --git a/docs/Models/Components/ImageType.md b/docs/Models/Components/ImageType.md new file mode 100644 index 0000000..c19a90e --- /dev/null +++ b/docs/Models/Components/ImageType.md @@ -0,0 +1,14 @@ +# ImageType + +Describes both the purpose and intended presentation of the image. + + +## Values + +| Name | Value | +| ------------- | ------------- | +| `Background` | background | +| `Banner` | banner | +| `ClearLogo` | clearLogo | +| `CoverPoster` | coverPoster | +| `Snapshot` | snapshot | \ No newline at end of file diff --git a/docs/Models/Components/Items.md b/docs/Models/Components/Items.md new file mode 100644 index 0000000..ef692be --- /dev/null +++ b/docs/Models/Components/Items.md @@ -0,0 +1,83 @@ +# Items + +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Title` | *object* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `Type` | *object* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `AbsoluteIndex` | *long* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `AddedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `Art` | *object* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `AudienceRating` | *double* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `AudienceRatingImage` | *object* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `Autotag` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Banner` | *object* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `ChapterSource` | *object* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `Composite` | *object* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `ContentRating` | *object* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `Country` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Director` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Duration` | *long* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `Filter` | List<[Filter](../../Models/Components/Filter.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Genre` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `GrandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | +| `GrandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | +| `GrandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | +| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `GrandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | +| `GrandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `GrandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | +| `Guid` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Hero` | *object* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `Image` | List<[Image](../../Models/Components/Image.md)> | :heavy_minus_sign: | N/A | +| `Index` | *long* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `Key` | *object* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `LastViewedAt` | *long* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `LeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `Media` | List<[Media](../../Models/Components/Media.md)> | :heavy_minus_sign: | N/A | +| `OriginallyAvailableAt` | *object* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `OriginalTitle` | *object* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `ParentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | +| `ParentIndex` | *long* | :heavy_minus_sign: | The `index` of the parent | +| `ParentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | +| `ParentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `ParentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | +| `ParentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | +| `PrimaryExtraKey` | *object* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `Prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `Rating` | *double* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `RatingArray` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `RatingCount` | *long* | :heavy_minus_sign: | Number of ratings under this metadata | +| `RatingImage` | *object* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `RatingKey` | *object* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `Role` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Search` | *bool* | :heavy_minus_sign: | Indicates this is a search directory | +| `Secondary` | *bool* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `SkipChildren` | *bool* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `SkipParent` | *bool* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `Sort` | List<[Sort](../../Models/Components/Sort.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Studio` | *object* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `Subtype` | *object* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `Summary` | *object* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `Tagline` | *object* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `Theme` | *object* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `Thumb` | *object* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `TitleSort` | *object* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `UpdatedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `UserRating` | *double* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `ViewCount` | *long* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `ViewedLeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `ViewOffset` | *long* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `Writer` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Year` | *long* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `MetadataItem` | List<[Items](../../Models/Components/Items.md)> | :heavy_minus_sign: | N/A | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/LibrarySection.md b/docs/Models/Components/LibrarySection.md new file mode 100644 index 0000000..7533430 --- /dev/null +++ b/docs/Models/Components/LibrarySection.md @@ -0,0 +1,27 @@ +# LibrarySection + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | *string* | :heavy_minus_sign: | N/A | +| `Agent` | *string* | :heavy_minus_sign: | N/A | +| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | +| `Art` | *string* | :heavy_minus_sign: | N/A | +| `Composite` | *string* | :heavy_minus_sign: | N/A | +| `Content` | *bool* | :heavy_minus_sign: | N/A | +| `ContentChangedAt` | *long* | :heavy_minus_sign: | N/A | +| `CreatedAt` | *long* | :heavy_minus_sign: | N/A | +| `Directory` | *bool* | :heavy_minus_sign: | N/A | +| `Filters` | *bool* | :heavy_minus_sign: | Indicates whether this section has filtering capabilities | +| `Hidden` | *bool* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Language` | *string* | :heavy_minus_sign: | N/A | +| `Location` | List<[LibrarySectionLocation](../../Models/Components/LibrarySectionLocation.md)> | :heavy_minus_sign: | N/A | +| `Refreshing` | *bool* | :heavy_minus_sign: | Indicates whether this library section is currently scanning | +| `ScannedAt` | *long* | :heavy_minus_sign: | N/A | +| `Scanner` | *string* | :heavy_minus_sign: | N/A | +| `Thumb` | *string* | :heavy_minus_sign: | N/A | +| `UpdatedAt` | *long* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/LibrarySectionLocation.md b/docs/Models/Components/LibrarySectionLocation.md new file mode 100644 index 0000000..4ff78aa --- /dev/null +++ b/docs/Models/Components/LibrarySectionLocation.md @@ -0,0 +1,11 @@ +# LibrarySectionLocation + +Represents a top-level location on disk where media in this library section is stored + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| `Id` | *long* | :heavy_minus_sign: | N/A | +| `Path` | *object* | :heavy_minus_sign: | The path of where this directory exists on disk | \ No newline at end of file diff --git a/docs/Models/Components/Lineup.md b/docs/Models/Components/Lineup.md new file mode 100644 index 0000000..7a43f9d --- /dev/null +++ b/docs/Models/Components/Lineup.md @@ -0,0 +1,12 @@ +# Lineup + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | *string* | :heavy_minus_sign: | The type of this object (`lineup` in this case) | +| `LineupType` | [Models.Components.LineupType](../../Models/Components/LineupType.md) | :heavy_minus_sign: | - `-1`: N/A
- `0`: Over the air
- `1`: Cable
- `2`: Satellite
- `3`: IPTV
- `4`: Virtual
| +| `Location` | *string* | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | The uuid of this lineup | \ No newline at end of file diff --git a/docs/Models/Components/LineupType.md b/docs/Models/Components/LineupType.md new file mode 100644 index 0000000..ffda93e --- /dev/null +++ b/docs/Models/Components/LineupType.md @@ -0,0 +1,21 @@ +# LineupType + +- `-1`: N/A +- `0`: Over the air +- `1`: Cable +- `2`: Satellite +- `3`: IPTV +- `4`: Virtual + + + +## Values + +| Name | Value | +| -------- | -------- | +| `Minus1` | -1 | +| `Zero` | 0 | +| `One` | 1 | +| `Two` | 2 | +| `Three` | 3 | +| `Four` | 4 | \ No newline at end of file diff --git a/docs/Models/Components/Location.md b/docs/Models/Components/Location.md new file mode 100644 index 0000000..f1196d8 --- /dev/null +++ b/docs/Models/Components/Location.md @@ -0,0 +1,10 @@ +# Location + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `Lan` | lan | +| `Wan` | wan | +| `Cellular` | cellular | \ No newline at end of file diff --git a/docs/Models/Components/Media.md b/docs/Models/Components/Media.md new file mode 100644 index 0000000..f3539e7 --- /dev/null +++ b/docs/Models/Components/Media.md @@ -0,0 +1,29 @@ +# Media + +`Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element. + + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | +| `AspectRatio` | *double* | :heavy_minus_sign: | N/A | 2.35 | +| `AudioChannels` | *long* | :heavy_minus_sign: | N/A | 2 | +| `AudioCodec` | *object* | :heavy_minus_sign: | N/A | aac | +| `AudioProfile` | *object* | :heavy_minus_sign: | N/A | lc | +| `Bitrate` | *long* | :heavy_minus_sign: | N/A | 5612 | +| `Container` | *object* | :heavy_minus_sign: | N/A | mov | +| `Duration` | *long* | :heavy_minus_sign: | N/A | 150192 | +| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | +| `HasVoiceActivity` | *bool* | :heavy_minus_sign: | N/A | true | +| `Height` | *long* | :heavy_minus_sign: | N/A | 544 | +| `Id` | *long* | :heavy_minus_sign: | N/A | 1 | +| `OptimizedForStreaming` | *bool* | :heavy_minus_sign: | N/A | false | +| `Part` | List<[Part](../../Models/Components/Part.md)> | :heavy_minus_sign: | N/A | | +| `VideoCodec` | *object* | :heavy_minus_sign: | N/A | h264 | +| `VideoFrameRate` | *object* | :heavy_minus_sign: | N/A | 24p | +| `VideoProfile` | *object* | :heavy_minus_sign: | N/A | main | +| `VideoResolution` | *object* | :heavy_minus_sign: | N/A | 720 | +| `Width` | *long* | :heavy_minus_sign: | N/A | 1280 | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainer.md b/docs/Models/Components/MediaContainer.md new file mode 100644 index 0000000..16542b8 --- /dev/null +++ b/docs/Models/Components/MediaContainer.md @@ -0,0 +1,16 @@ +# MediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithArtwork.md b/docs/Models/Components/MediaContainerWithArtwork.md new file mode 100644 index 0000000..00a61d0 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithArtwork.md @@ -0,0 +1,8 @@ +# MediaContainerWithArtwork + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [MediaContainerWithArtworkMediaContainer](../../Models/Components/MediaContainerWithArtworkMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithArtworkMediaContainer.md b/docs/Models/Components/MediaContainerWithArtworkMediaContainer.md new file mode 100644 index 0000000..e0c1985 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithArtworkMediaContainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithArtworkMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Metadata` | List<[MediaContainerWithArtworkMetadata](../../Models/Components/MediaContainerWithArtworkMetadata.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithArtworkMetadata.md b/docs/Models/Components/MediaContainerWithArtworkMetadata.md new file mode 100644 index 0000000..6580f03 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithArtworkMetadata.md @@ -0,0 +1,11 @@ +# MediaContainerWithArtworkMetadata + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `Title` | *string* | :heavy_minus_sign: | The title of the item | +| `Type` | [MediaContainerWithArtworkType](../../Models/Components/MediaContainerWithArtworkType.md) | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | The path to the artwork | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithArtworkType.md b/docs/Models/Components/MediaContainerWithArtworkType.md new file mode 100644 index 0000000..c4cfd47 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithArtworkType.md @@ -0,0 +1,8 @@ +# MediaContainerWithArtworkType + + +## Values + +| Name | Value | +| ------- | ------- | +| `Image` | image | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDecision.md b/docs/Models/Components/MediaContainerWithDecision.md new file mode 100644 index 0000000..72b8902 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDecision.md @@ -0,0 +1,13 @@ +# MediaContainerWithDecision + +`MediaContainer` is commonly found as the root of a response and is a pretty generic container. Common attributes include `identifier` and things related to paging (`offset`, `size`, `totalSize`). + +It is also common for a `MediaContainer` to contain attributes "hoisted" from its children. If every element in the container would have had the same attribute, then that attribute can be present on the container instead of being repeated on every element. For example, an album's list of tracks might include `parentTitle` on the container since all of the tracks have the same album title. A container may have a `source` attribute when all of the items came from the same source. Generally speaking, when looking for an attribute on an item, if the attribute wasn't found then the container should be checked for that attribute as well. + + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [MediaContainerWithDecisionMediaContainer](../../Models/Components/MediaContainerWithDecisionMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDecisionDecision.md b/docs/Models/Components/MediaContainerWithDecisionDecision.md new file mode 100644 index 0000000..9a90d3d --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDecisionDecision.md @@ -0,0 +1,13 @@ +# MediaContainerWithDecisionDecision + + +## Values + +| Name | Value | +| ------------- | ------------- | +| `Copy` | copy | +| `Transcode` | transcode | +| `Burn` | burn | +| `Unavailable` | unavailable | +| `Ignore` | ignore | +| `None` | none | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDecisionLocation.md b/docs/Models/Components/MediaContainerWithDecisionLocation.md new file mode 100644 index 0000000..61c0775 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDecisionLocation.md @@ -0,0 +1,15 @@ +# MediaContainerWithDecisionLocation + + +## Values + +| Name | Value | +| --------------- | --------------- | +| `Direct` | direct | +| `SidecarSubs` | sidecar-subs | +| `SegmentsVideo` | segments-video | +| `SegmentsAudio` | segments-audio | +| `SegmentsAv` | segments-av | +| `SegmentsSubs` | segments-subs | +| `Embedded` | embedded | +| `Sidecar` | sidecar | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDecisionMedia.md b/docs/Models/Components/MediaContainerWithDecisionMedia.md new file mode 100644 index 0000000..616b480 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDecisionMedia.md @@ -0,0 +1,32 @@ +# MediaContainerWithDecisionMedia + +`Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `AspectRatio` | *double* | :heavy_minus_sign: | N/A | 2.35 | +| `AudioChannels` | *long* | :heavy_minus_sign: | N/A | 2 | +| `AudioCodec` | *object* | :heavy_minus_sign: | N/A | aac | +| `AudioProfile` | *object* | :heavy_minus_sign: | N/A | lc | +| `Bitrate` | *long* | :heavy_minus_sign: | N/A | 5612 | +| `Container` | *object* | :heavy_minus_sign: | N/A | mov | +| `Duration` | *long* | :heavy_minus_sign: | N/A | 150192 | +| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | +| `HasVoiceActivity` | *bool* | :heavy_minus_sign: | N/A | true | +| `Height` | *long* | :heavy_minus_sign: | N/A | 544 | +| `Id` | *long* | :heavy_minus_sign: | N/A | 1 | +| `OptimizedForStreaming` | *bool* | :heavy_minus_sign: | N/A | false | +| `Part` | List<[MediaContainerWithDecisionPart](../../Models/Components/MediaContainerWithDecisionPart.md)> | :heavy_minus_sign: | N/A | | +| `VideoCodec` | *object* | :heavy_minus_sign: | N/A | h264 | +| `VideoFrameRate` | *object* | :heavy_minus_sign: | N/A | 24p | +| `VideoProfile` | *object* | :heavy_minus_sign: | N/A | main | +| `VideoResolution` | *object* | :heavy_minus_sign: | N/A | 720 | +| `Width` | *long* | :heavy_minus_sign: | N/A | 1280 | +| `Abr` | *bool* | :heavy_minus_sign: | N/A | | +| `ResourceSession` | *string* | :heavy_minus_sign: | N/A | | +| `Selected` | *bool* | :heavy_minus_sign: | N/A | | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDecisionMediaContainer.md b/docs/Models/Components/MediaContainerWithDecisionMediaContainer.md new file mode 100644 index 0000000..f515ea0 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDecisionMediaContainer.md @@ -0,0 +1,26 @@ +# MediaContainerWithDecisionMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `AvailableBandwidth` | *long* | :heavy_minus_sign: | The maximum available bitrate when the decision was rendered. | +| `DirectPlayDecisionCode` | *long* | :heavy_minus_sign: | N/A | +| `DirectPlayDecisionText` | *string* | :heavy_minus_sign: | N/A | +| `GeneralDecisionCode` | *long* | :heavy_minus_sign: | The overall decision. 1xxx are playback can succeed, 2xxx are a general error (such as insufficient bandwidth), 3xxx are errors in direct play, and 4xxx are errors in transcodes. Same codes are used in all. | +| `GeneralDecisionText` | *string* | :heavy_minus_sign: | N/A | +| `MdeDecisionCode` | *long* | :heavy_minus_sign: | The code indicating the status of evaluation of playback when client indicates `hasMDE=1` | +| `MdeDecisionText` | *string* | :heavy_minus_sign: | Descriptive text for the above code | +| `Metadata` | List<[MediaContainerWithDecisionMetadata](../../Models/Components/MediaContainerWithDecisionMetadata.md)> | :heavy_minus_sign: | N/A | +| `TranscodeDecisionCode` | *long* | :heavy_minus_sign: | N/A | +| `TranscodeDecisionText` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDecisionMetadata.md b/docs/Models/Components/MediaContainerWithDecisionMetadata.md new file mode 100644 index 0000000..4b4296a --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDecisionMetadata.md @@ -0,0 +1,82 @@ +# MediaContainerWithDecisionMetadata + +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Title` | *object* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `Type` | *object* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `AbsoluteIndex` | *long* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `AddedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `Art` | *object* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `AudienceRating` | *double* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `AudienceRatingImage` | *object* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `Autotag` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Banner` | *object* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `ChapterSource` | *object* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `Composite` | *object* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `ContentRating` | *object* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `Country` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Director` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Duration` | *long* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `Filter` | List<[Filter](../../Models/Components/Filter.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Genre` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `GrandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | +| `GrandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | +| `GrandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | +| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `GrandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | +| `GrandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `GrandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | +| `Guid` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Hero` | *object* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `Image` | List<[Image](../../Models/Components/Image.md)> | :heavy_minus_sign: | N/A | +| `Index` | *long* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `Key` | *object* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `LastViewedAt` | *long* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `LeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `Media` | List<[MediaContainerWithDecisionMedia](../../Models/Components/MediaContainerWithDecisionMedia.md)> | :heavy_minus_sign: | N/A | +| `OriginallyAvailableAt` | *object* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `OriginalTitle` | *object* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `ParentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | +| `ParentIndex` | *long* | :heavy_minus_sign: | The `index` of the parent | +| `ParentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | +| `ParentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `ParentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | +| `ParentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | +| `PrimaryExtraKey` | *object* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `Prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `Rating` | *double* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `RatingArray` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `RatingCount` | *long* | :heavy_minus_sign: | Number of ratings under this metadata | +| `RatingImage` | *object* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `RatingKey` | *object* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `Role` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Search` | *bool* | :heavy_minus_sign: | Indicates this is a search directory | +| `Secondary` | *bool* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `SkipChildren` | *bool* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `SkipParent` | *bool* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `Sort` | List<[Sort](../../Models/Components/Sort.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Studio` | *object* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `Subtype` | *object* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `Summary` | *object* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `Tagline` | *object* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `Theme` | *object* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `Thumb` | *object* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `TitleSort` | *object* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `UpdatedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `UserRating` | *double* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `ViewCount` | *long* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `ViewedLeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `ViewOffset` | *long* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `Writer` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Year` | *long* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDecisionPart.md b/docs/Models/Components/MediaContainerWithDecisionPart.md new file mode 100644 index 0000000..969f0c8 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDecisionPart.md @@ -0,0 +1,24 @@ +# MediaContainerWithDecisionPart + +`Part` represents a particular file or "part" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `AudioProfile` | *object* | :heavy_minus_sign: | N/A | lc | +| `Container` | *object* | :heavy_minus_sign: | The container of the media file, such as `mp4` or `mkv` | mov | +| `Duration` | *long* | :heavy_minus_sign: | The duration of the media item, in milliseconds | 150192 | +| `File` | *object* | :heavy_minus_sign: | The local file path at which the part is stored on the server | /home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov | +| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | +| `Id` | *long* | :heavy_minus_sign: | N/A | 1 | +| `Key` | *object* | :heavy_minus_sign: | The key from which the media can be streamed | /library/parts/1/1531779263/file.mov | +| `OptimizedForStreaming` | *bool* | :heavy_minus_sign: | N/A | false | +| `Size` | *long* | :heavy_minus_sign: | The size of the media, in bytes | 105355654 | +| `Stream` | List<[MediaContainerWithDecisionStream](../../Models/Components/MediaContainerWithDecisionStream.md)> | :heavy_minus_sign: | N/A | | +| `VideoProfile` | *object* | :heavy_minus_sign: | N/A | main | +| `Decision` | [Decision](../../Models/Components/Decision.md) | :heavy_minus_sign: | N/A | | +| `Selected` | *bool* | :heavy_minus_sign: | N/A | | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDecisionStream.md b/docs/Models/Components/MediaContainerWithDecisionStream.md new file mode 100644 index 0000000..70d8be2 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDecisionStream.md @@ -0,0 +1,42 @@ +# MediaContainerWithDecisionStream + +`Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization). + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `Default` | *bool* | :heavy_minus_sign: | N/A | true | +| `AudioChannelLayout` | *object* | :heavy_minus_sign: | N/A | stereo | +| `BitDepth` | *long* | :heavy_minus_sign: | N/A | 8 | +| `Bitrate` | *long* | :heavy_minus_sign: | N/A | 5466 | +| `CanAutoSync` | *bool* | :heavy_minus_sign: | For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video. | true | +| `ChromaLocation` | *object* | :heavy_minus_sign: | N/A | topleft | +| `ChromaSubsampling` | *object* | :heavy_minus_sign: | N/A | 4:2:0 | +| `Codec` | *object* | :heavy_minus_sign: | The codec of the stream, such as `h264` or `aac` | h264 | +| `ColorPrimaries` | *object* | :heavy_minus_sign: | N/A | bt709 | +| `ColorRange` | *object* | :heavy_minus_sign: | N/A | tv | +| `ColorSpace` | *object* | :heavy_minus_sign: | N/A | bt709 | +| `ColorTrc` | *object* | :heavy_minus_sign: | N/A | bt709 | +| `DisplayTitle` | *object* | :heavy_minus_sign: | A friendly name for the stream, often comprised of the language and codec information | English (H.264 Main) | +| `FrameRate` | *double* | :heavy_minus_sign: | N/A | 23.976 | +| `HasScalingMatrix` | *object* | :heavy_minus_sign: | N/A | false | +| `Height` | *long* | :heavy_minus_sign: | N/A | 544 | +| `Id` | *long* | :heavy_minus_sign: | N/A | 1 | +| `Index` | *long* | :heavy_minus_sign: | If the stream is part of the `Part` and not an external resource, the index of the stream within that part | 0 | +| `Key` | *object* | :heavy_minus_sign: | If the stream is independently streamable, the key from which it can be streamed | /library/streams/1 | +| `Language` | *object* | :heavy_minus_sign: | N/A | English | +| `LanguageCode` | *object* | :heavy_minus_sign: | The three character language code for the stream contents | eng | +| `Level` | *long* | :heavy_minus_sign: | N/A | 31 | +| `Profile` | *object* | :heavy_minus_sign: | N/A | main | +| `RefFrames` | *long* | :heavy_minus_sign: | N/A | 2 | +| `SamplingRate` | *long* | :heavy_minus_sign: | N/A | 48000 | +| `Selected` | *bool* | :heavy_minus_sign: | N/A | | +| `StreamIdentifier` | *long* | :heavy_minus_sign: | N/A | 1 | +| `StreamType` | *long* | :heavy_minus_sign: | A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics | 1 | +| `Width` | *long* | :heavy_minus_sign: | N/A | 1280 | +| `Decision` | [MediaContainerWithDecisionDecision](../../Models/Components/MediaContainerWithDecisionDecision.md) | :heavy_minus_sign: | N/A | | +| `Location` | [MediaContainerWithDecisionLocation](../../Models/Components/MediaContainerWithDecisionLocation.md) | :heavy_minus_sign: | N/A | | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDevice.md b/docs/Models/Components/MediaContainerWithDevice.md new file mode 100644 index 0000000..ff0359e --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDevice.md @@ -0,0 +1,8 @@ +# MediaContainerWithDevice + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [MediaContainerWithDeviceMediaContainer](../../Models/Components/MediaContainerWithDeviceMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDeviceDevice.md b/docs/Models/Components/MediaContainerWithDeviceDevice.md new file mode 100644 index 0000000..611e005 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDeviceDevice.md @@ -0,0 +1,20 @@ +# MediaContainerWithDeviceDevice + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `ChannelMapping` | List<[Models.Components.ChannelMapping](../../Models/Components/ChannelMapping.md)> | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `LastSeenAt` | *long* | :heavy_minus_sign: | N/A | +| `Make` | *string* | :heavy_minus_sign: | N/A | +| `Model` | *string* | :heavy_minus_sign: | N/A | +| `ModelNumber` | *string* | :heavy_minus_sign: | N/A | +| `Protocol` | *string* | :heavy_minus_sign: | N/A | +| `Sources` | *string* | :heavy_minus_sign: | N/A | +| `State` | *string* | :heavy_minus_sign: | N/A | +| `Status` | *string* | :heavy_minus_sign: | N/A | +| `Tuners` | *string* | :heavy_minus_sign: | N/A | +| `Uri` | *string* | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDeviceMediaContainer.md b/docs/Models/Components/MediaContainerWithDeviceMediaContainer.md new file mode 100644 index 0000000..d467ad5 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDeviceMediaContainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithDeviceMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Device` | List<[MediaContainerWithDeviceDevice](../../Models/Components/MediaContainerWithDeviceDevice.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDirectory.md b/docs/Models/Components/MediaContainerWithDirectory.md new file mode 100644 index 0000000..eff7ba6 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDirectory.md @@ -0,0 +1,8 @@ +# MediaContainerWithDirectory + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [MediaContainerWithDirectoryMediaContainer](../../Models/Components/MediaContainerWithDirectoryMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithDirectoryMediaContainer.md b/docs/Models/Components/MediaContainerWithDirectoryMediaContainer.md new file mode 100644 index 0000000..3fc0c54 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithDirectoryMediaContainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithDirectoryMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Directory` | List<[Models.Components.Directory](../../Models/Components/Directory.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithHubs.md b/docs/Models/Components/MediaContainerWithHubs.md new file mode 100644 index 0000000..f902afe --- /dev/null +++ b/docs/Models/Components/MediaContainerWithHubs.md @@ -0,0 +1,10 @@ +# MediaContainerWithHubs + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [MediaContainerWithHubsMediaContainer](../../Models/Components/MediaContainerWithHubsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithHubsMediaContainer.md b/docs/Models/Components/MediaContainerWithHubsMediaContainer.md new file mode 100644 index 0000000..177915c --- /dev/null +++ b/docs/Models/Components/MediaContainerWithHubsMediaContainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Hub` | List<[Models.Components.Hub](../../Models/Components/Hub.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithLineup.md b/docs/Models/Components/MediaContainerWithLineup.md new file mode 100644 index 0000000..a56e9cf --- /dev/null +++ b/docs/Models/Components/MediaContainerWithLineup.md @@ -0,0 +1,8 @@ +# MediaContainerWithLineup + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [MediaContainerWithLineupMediaContainer](../../Models/Components/MediaContainerWithLineupMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithLineupMediaContainer.md b/docs/Models/Components/MediaContainerWithLineupMediaContainer.md new file mode 100644 index 0000000..1265939 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithLineupMediaContainer.md @@ -0,0 +1,18 @@ +# MediaContainerWithLineupMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Lineup` | List<[Models.Components.Lineup](../../Models/Components/Lineup.md)> | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | The UUID of this set lineups | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithMetadata.md b/docs/Models/Components/MediaContainerWithMetadata.md new file mode 100644 index 0000000..cdd8e01 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithMetadata.md @@ -0,0 +1,8 @@ +# MediaContainerWithMetadata + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [MediaContainerWithMetadataMediaContainer](../../Models/Components/MediaContainerWithMetadataMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithMetadataMediaContainer.md b/docs/Models/Components/MediaContainerWithMetadataMediaContainer.md new file mode 100644 index 0000000..87fd2ef --- /dev/null +++ b/docs/Models/Components/MediaContainerWithMetadataMediaContainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithMetadataMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Metadata` | List<[Models.Components.Metadata](../../Models/Components/Metadata.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithNestedMetadata.md b/docs/Models/Components/MediaContainerWithNestedMetadata.md new file mode 100644 index 0000000..f3fd891 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithNestedMetadata.md @@ -0,0 +1,8 @@ +# MediaContainerWithNestedMetadata + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [MediaContainerWithNestedMetadataMediaContainer](../../Models/Components/MediaContainerWithNestedMetadataMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithNestedMetadataMediaContainer.md b/docs/Models/Components/MediaContainerWithNestedMetadataMediaContainer.md new file mode 100644 index 0000000..d824bee --- /dev/null +++ b/docs/Models/Components/MediaContainerWithNestedMetadataMediaContainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithNestedMetadataMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `MetadataItem` | List<[MetadataItem](../../Models/Components/MetadataItem.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithPlaylistMetadata.md b/docs/Models/Components/MediaContainerWithPlaylistMetadata.md new file mode 100644 index 0000000..e2f93f4 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithPlaylistMetadata.md @@ -0,0 +1,8 @@ +# MediaContainerWithPlaylistMetadata + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [MediaContainerWithPlaylistMetadataMediaContainer](../../Models/Components/MediaContainerWithPlaylistMetadataMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithPlaylistMetadataMediaContainer.md b/docs/Models/Components/MediaContainerWithPlaylistMetadataMediaContainer.md new file mode 100644 index 0000000..df8947a --- /dev/null +++ b/docs/Models/Components/MediaContainerWithPlaylistMetadataMediaContainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithPlaylistMetadataMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Metadata` | List<[MediaContainerWithPlaylistMetadataMetadata](../../Models/Components/MediaContainerWithPlaylistMetadataMetadata.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithPlaylistMetadataMetadata.md b/docs/Models/Components/MediaContainerWithPlaylistMetadataMetadata.md new file mode 100644 index 0000000..8871a2f --- /dev/null +++ b/docs/Models/Components/MediaContainerWithPlaylistMetadataMetadata.md @@ -0,0 +1,86 @@ +# MediaContainerWithPlaylistMetadataMetadata + +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `ReadOnly` | *bool* | :heavy_minus_sign: | If we return this as true then this playlist cannot be altered or deleted directly by the client. | +| `Composite` | *object* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `Duration` | *long* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `Key` | *object* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `LeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `PlaylistType` | [Models.Components.PlaylistType](../../Models/Components/PlaylistType.md) | :heavy_minus_sign: | The type of the playlist. | +| `Smart` | *bool* | :heavy_minus_sign: | Whether or not the playlist is smart. | +| `SpecialPlaylistType` | *string* | :heavy_minus_sign: | If this is a special playlist, this returns its type (e.g. favorites). | +| `Title` | *object* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `Type` | *object* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `AbsoluteIndex` | *long* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `AddedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `Art` | *object* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `AudienceRating` | *double* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `AudienceRatingImage` | *object* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `Autotag` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Banner` | *object* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `ChapterSource` | *object* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `ContentRating` | *object* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `Country` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Director` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Filter` | List<[Filter](../../Models/Components/Filter.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Genre` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `GrandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | +| `GrandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | +| `GrandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | +| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `GrandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | +| `GrandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `GrandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | +| `Guid` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Hero` | *object* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `Image` | List<[Image](../../Models/Components/Image.md)> | :heavy_minus_sign: | N/A | +| `Index` | *long* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `LastViewedAt` | *long* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `Media` | List<[Media](../../Models/Components/Media.md)> | :heavy_minus_sign: | N/A | +| `OriginallyAvailableAt` | *object* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `OriginalTitle` | *object* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `ParentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | +| `ParentIndex` | *long* | :heavy_minus_sign: | The `index` of the parent | +| `ParentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | +| `ParentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `ParentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | +| `ParentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | +| `PrimaryExtraKey` | *object* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `Prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `Rating` | *double* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `RatingArray` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `RatingCount` | *long* | :heavy_minus_sign: | Number of ratings under this metadata | +| `RatingImage` | *object* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `RatingKey` | *object* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `Role` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Search` | *bool* | :heavy_minus_sign: | Indicates this is a search directory | +| `Secondary` | *bool* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `SkipChildren` | *bool* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `SkipParent` | *bool* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `Sort` | List<[Sort](../../Models/Components/Sort.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Studio` | *object* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `Subtype` | *object* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `Summary` | *object* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `Tagline` | *object* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `Theme` | *object* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `Thumb` | *object* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `TitleSort` | *object* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `UpdatedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `UserRating` | *double* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `ViewCount` | *long* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `ViewedLeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `ViewOffset` | *long* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `Writer` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Year` | *long* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithSettings.md b/docs/Models/Components/MediaContainerWithSettings.md new file mode 100644 index 0000000..d5c887e --- /dev/null +++ b/docs/Models/Components/MediaContainerWithSettings.md @@ -0,0 +1,8 @@ +# MediaContainerWithSettings + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [MediaContainerWithSettingsMediaContainer](../../Models/Components/MediaContainerWithSettingsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithSettingsMediaContainer.md b/docs/Models/Components/MediaContainerWithSettingsMediaContainer.md new file mode 100644 index 0000000..da20b5c --- /dev/null +++ b/docs/Models/Components/MediaContainerWithSettingsMediaContainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithSettingsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Setting` | List<[Setting](../../Models/Components/Setting.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithSubscription.md b/docs/Models/Components/MediaContainerWithSubscription.md new file mode 100644 index 0000000..2282f66 --- /dev/null +++ b/docs/Models/Components/MediaContainerWithSubscription.md @@ -0,0 +1,8 @@ +# MediaContainerWithSubscription + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [MediaContainerWithSubscriptionMediaContainer](../../Models/Components/MediaContainerWithSubscriptionMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaContainerWithSubscriptionMediaContainer.md b/docs/Models/Components/MediaContainerWithSubscriptionMediaContainer.md new file mode 100644 index 0000000..0cf25dd --- /dev/null +++ b/docs/Models/Components/MediaContainerWithSubscriptionMediaContainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithSubscriptionMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `MediaSubscription` | List<[Models.Components.MediaSubscription](../../Models/Components/MediaSubscription.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaGrabOperation.md b/docs/Models/Components/MediaGrabOperation.md new file mode 100644 index 0000000..c2c6196 --- /dev/null +++ b/docs/Models/Components/MediaGrabOperation.md @@ -0,0 +1,21 @@ +# MediaGrabOperation + +A media grab opration represents a scheduled or active recording of media + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `CurrentSize` | *long* | :heavy_minus_sign: | N/A | +| `GrabberIdentifier` | *string* | :heavy_minus_sign: | N/A | +| `GrabberProtocol` | *string* | :heavy_minus_sign: | N/A | +| `Id` | *string* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `MediaIndex` | *long* | :heavy_minus_sign: | N/A | +| `MediaSubscriptionID` | *long* | :heavy_minus_sign: | N/A | +| `Metadata` | [Models.Components.Metadata](../../Models/Components/Metadata.md) | :heavy_minus_sign: | Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.

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

Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
| +| `Percent` | *double* | :heavy_minus_sign: | N/A | +| `Provider` | *string* | :heavy_minus_sign: | N/A | +| `Status` | [Models.Components.Status](../../Models/Components/Status.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MediaQuery.md b/docs/Models/Components/MediaQuery.md new file mode 100644 index 0000000..72cbb9c --- /dev/null +++ b/docs/Models/Components/MediaQuery.md @@ -0,0 +1,7 @@ +# MediaQuery + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Components/MediaSubscription.md b/docs/Models/Components/MediaSubscription.md new file mode 100644 index 0000000..b344c09 --- /dev/null +++ b/docs/Models/Components/MediaSubscription.md @@ -0,0 +1,26 @@ +# MediaSubscription + +A media subscription contains a representation of metadata desired to be recorded + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | *long* | :heavy_minus_sign: | The metadata type of the root item of the subscription | +| `AiringsType` | [AiringsType](../../Models/Components/AiringsType.md) | :heavy_minus_sign: | N/A | +| `CreatedAt` | *long* | :heavy_minus_sign: | N/A | +| `Directory` | Dictionary | :heavy_minus_sign: | Media Matching Hints | +| `DurationTotal` | *long* | :heavy_minus_sign: | Only included if `includeStorage` is specified | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | N/A | +| `LocationPath` | *string* | :heavy_minus_sign: | N/A | +| `MediaGrabOperation` | List<[MediaGrabOperation](../../Models/Components/MediaGrabOperation.md)> | :heavy_minus_sign: | N/A | +| `Playlist` | Dictionary | :heavy_minus_sign: | Media Matching Hints | +| `Setting` | List<[Setting](../../Models/Components/Setting.md)> | :heavy_minus_sign: | N/A | +| `StorageTotal` | *long* | :heavy_minus_sign: | Only included if `includeStorage` is specified | +| `TargetLibrarySectionID` | *long* | :heavy_minus_sign: | The library section id for where the item is to be recorded | +| `TargetSectionLocationID` | *long* | :heavy_minus_sign: | The library section location id for where the item is to be recorded | +| `Video` | Dictionary | :heavy_minus_sign: | Media Matching Hints | \ No newline at end of file diff --git a/docs/Models/Components/Metadata.md b/docs/Models/Components/Metadata.md new file mode 100644 index 0000000..ff26b74 --- /dev/null +++ b/docs/Models/Components/Metadata.md @@ -0,0 +1,82 @@ +# Metadata + +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Title` | *object* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `Type` | *object* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `AbsoluteIndex` | *long* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `AddedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `Art` | *object* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `AudienceRating` | *double* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `AudienceRatingImage` | *object* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `Autotag` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Banner` | *object* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `ChapterSource` | *object* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `Composite` | *object* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `ContentRating` | *object* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `Country` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Director` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Duration` | *long* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `Filter` | List<[Filter](../../Models/Components/Filter.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Genre` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `GrandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | +| `GrandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | +| `GrandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | +| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `GrandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | +| `GrandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `GrandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | +| `Guid` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Hero` | *object* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `Image` | List<[Image](../../Models/Components/Image.md)> | :heavy_minus_sign: | N/A | +| `Index` | *long* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `Key` | *object* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `LastViewedAt` | *long* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `LeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `Media` | List<[Media](../../Models/Components/Media.md)> | :heavy_minus_sign: | N/A | +| `OriginallyAvailableAt` | *object* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `OriginalTitle` | *object* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `ParentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | +| `ParentIndex` | *long* | :heavy_minus_sign: | The `index` of the parent | +| `ParentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | +| `ParentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `ParentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | +| `ParentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | +| `PrimaryExtraKey` | *object* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `Prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `Rating` | *double* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `RatingArray` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `RatingCount` | *long* | :heavy_minus_sign: | Number of ratings under this metadata | +| `RatingImage` | *object* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `RatingKey` | *object* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `Role` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Search` | *bool* | :heavy_minus_sign: | Indicates this is a search directory | +| `Secondary` | *bool* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `SkipChildren` | *bool* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `SkipParent` | *bool* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `Sort` | List<[Sort](../../Models/Components/Sort.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Studio` | *object* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `Subtype` | *object* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `Summary` | *object* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `Tagline` | *object* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `Theme` | *object* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `Thumb` | *object* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `TitleSort` | *object* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `UpdatedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `UserRating` | *double* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `ViewCount` | *long* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `ViewedLeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `ViewOffset` | *long* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `Writer` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Year` | *long* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/MetadataItem.md b/docs/Models/Components/MetadataItem.md new file mode 100644 index 0000000..0299d2f --- /dev/null +++ b/docs/Models/Components/MetadataItem.md @@ -0,0 +1,83 @@ +# MetadataItem + +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Title` | *object* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `Type` | *object* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `AbsoluteIndex` | *long* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `AddedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `Art` | *object* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `AudienceRating` | *double* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `AudienceRatingImage` | *object* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `Autotag` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Banner` | *object* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `ChapterSource` | *object* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `Composite` | *object* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `ContentRating` | *object* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `Country` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Director` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Duration` | *long* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `Filter` | List<[Filter](../../Models/Components/Filter.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Genre` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `GrandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | +| `GrandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | +| `GrandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | +| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `GrandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | +| `GrandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `GrandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | +| `Guid` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Hero` | *object* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `Image` | List<[Image](../../Models/Components/Image.md)> | :heavy_minus_sign: | N/A | +| `Index` | *long* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `Key` | *object* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `LastViewedAt` | *long* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `LeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `Media` | List<[Media](../../Models/Components/Media.md)> | :heavy_minus_sign: | N/A | +| `OriginallyAvailableAt` | *object* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `OriginalTitle` | *object* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `ParentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | +| `ParentIndex` | *long* | :heavy_minus_sign: | The `index` of the parent | +| `ParentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | +| `ParentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `ParentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | +| `ParentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | +| `PrimaryExtraKey` | *object* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `Prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `Rating` | *double* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `RatingArray` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `RatingCount` | *long* | :heavy_minus_sign: | Number of ratings under this metadata | +| `RatingImage` | *object* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `RatingKey` | *object* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `Role` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Search` | *bool* | :heavy_minus_sign: | Indicates this is a search directory | +| `Secondary` | *bool* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `SkipChildren` | *bool* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `SkipParent` | *bool* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `Sort` | List<[Sort](../../Models/Components/Sort.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Studio` | *object* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `Subtype` | *object* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `Summary` | *object* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `Tagline` | *object* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `Theme` | *object* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `Thumb` | *object* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `TitleSort` | *object* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `UpdatedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `UserRating` | *double* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `ViewCount` | *long* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `ViewedLeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `ViewOffset` | *long* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `Writer` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Year` | *long* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `MetadataItemValue` | List<[Items](../../Models/Components/Items.md)> | :heavy_minus_sign: | N/A | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/Part.md b/docs/Models/Components/Part.md new file mode 100644 index 0000000..aa74d4f --- /dev/null +++ b/docs/Models/Components/Part.md @@ -0,0 +1,22 @@ +# Part + +`Part` represents a particular file or "part" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `AudioProfile` | *object* | :heavy_minus_sign: | N/A | lc | +| `Container` | *object* | :heavy_minus_sign: | The container of the media file, such as `mp4` or `mkv` | mov | +| `Duration` | *long* | :heavy_minus_sign: | The duration of the media item, in milliseconds | 150192 | +| `File` | *object* | :heavy_minus_sign: | The local file path at which the part is stored on the server | /home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov | +| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | +| `Id` | *long* | :heavy_minus_sign: | N/A | 1 | +| `Key` | *object* | :heavy_minus_sign: | The key from which the media can be streamed | /library/parts/1/1531779263/file.mov | +| `OptimizedForStreaming` | *bool* | :heavy_minus_sign: | N/A | false | +| `Size` | *long* | :heavy_minus_sign: | The size of the media, in bytes | 105355654 | +| `Stream` | List<[Stream](../../Models/Components/Stream.md)> | :heavy_minus_sign: | N/A | | +| `VideoProfile` | *object* | :heavy_minus_sign: | N/A | main | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/Pivot.md b/docs/Models/Components/Pivot.md similarity index 100% rename from docs/Models/Requests/Pivot.md rename to docs/Models/Components/Pivot.md index 2b9e05e..5594f0a 100644 --- a/docs/Models/Requests/Pivot.md +++ b/docs/Models/Components/Pivot.md @@ -5,9 +5,9 @@ | Field | Type | Required | Description | | ------------------ | ------------------ | ------------------ | ------------------ | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | *string* | :heavy_minus_sign: | N/A | +| `Context` | *string* | :heavy_minus_sign: | N/A | | `Id` | *string* | :heavy_minus_sign: | N/A | | `Key` | *string* | :heavy_minus_sign: | N/A | -| `Type` | *string* | :heavy_minus_sign: | N/A | -| `Title` | *string* | :heavy_minus_sign: | N/A | -| `Context` | *string* | :heavy_minus_sign: | N/A | | `Symbol` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/Player.md b/docs/Models/Components/Player.md new file mode 100644 index 0000000..f67aee4 --- /dev/null +++ b/docs/Models/Components/Player.md @@ -0,0 +1,24 @@ +# Player + +Information about the player being used for playback + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `Title` | *string* | :heavy_minus_sign: | The title of the client | +| `Address` | *string* | :heavy_minus_sign: | The remote address | +| `Local` | *bool* | :heavy_minus_sign: | Indicating if the client is playing from the local LAN | +| `MachineIdentifier` | *string* | :heavy_minus_sign: | The identifier of the client | +| `Model` | *string* | :heavy_minus_sign: | The model of the client | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The platformVersion of the client | +| `Product` | *string* | :heavy_minus_sign: | The product name of the client | +| `Relayed` | *bool* | :heavy_minus_sign: | Indicating if the client is playing over a relay connection | +| `RemotePublicAddress` | *string* | :heavy_minus_sign: | The client's public address | +| `Secure` | *bool* | :heavy_minus_sign: | Indicating if the client is playing over HTTPS | +| `State` | *string* | :heavy_minus_sign: | The client's last reported state | +| `UserID` | *long* | :heavy_minus_sign: | The id of the user | +| `Vendor` | *string* | :heavy_minus_sign: | The vendor of the client | +| `Version` | *string* | :heavy_minus_sign: | The version of the client | \ No newline at end of file diff --git a/docs/Models/Components/PlaylistType.md b/docs/Models/Components/PlaylistType.md new file mode 100644 index 0000000..020d6e1 --- /dev/null +++ b/docs/Models/Components/PlaylistType.md @@ -0,0 +1,12 @@ +# PlaylistType + +The type of the playlist. + + +## Values + +| Name | Value | +| ------- | ------- | +| `Audio` | audio | +| `Video` | video | +| `Photo` | photo | \ No newline at end of file diff --git a/docs/Models/Components/PostResponses200.md b/docs/Models/Components/PostResponses200.md new file mode 100644 index 0000000..2a4df54 --- /dev/null +++ b/docs/Models/Components/PostResponses200.md @@ -0,0 +1,10 @@ +# PostResponses200 + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `MediaContainer` | [PostResponses200MediaContainer](../../Models/Components/PostResponses200MediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/PostResponses200MediaContainer.md b/docs/Models/Components/PostResponses200MediaContainer.md new file mode 100644 index 0000000..e2bc0ac --- /dev/null +++ b/docs/Models/Components/PostResponses200MediaContainer.md @@ -0,0 +1,23 @@ +# PostResponses200MediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Color` | *string* | :heavy_minus_sign: | N/A | +| `EndTimeOffset` | *long* | :heavy_minus_sign: | N/A | +| `Id` | *long* | :heavy_minus_sign: | N/A | +| `StartTimeOffset` | *long* | :heavy_minus_sign: | N/A | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | [PostResponses200Type](../../Models/Components/PostResponses200Type.md) | :heavy_minus_sign: | N/A | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/PostResponses200Type.md b/docs/Models/Components/PostResponses200Type.md new file mode 100644 index 0000000..b609ba4 --- /dev/null +++ b/docs/Models/Components/PostResponses200Type.md @@ -0,0 +1,12 @@ +# PostResponses200Type + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Intro` | intro | +| `Commercial` | commercial | +| `Bookmark` | bookmark | +| `Resume` | resume | +| `Credit` | credit | \ No newline at end of file diff --git a/docs/Models/Components/Protocol.md b/docs/Models/Components/Protocol.md new file mode 100644 index 0000000..d182859 --- /dev/null +++ b/docs/Models/Components/Protocol.md @@ -0,0 +1,10 @@ +# Protocol + + +## Values + +| Name | Value | +| ------ | ------ | +| `Http` | http | +| `Hls` | hls | +| `Dash` | dash | \ No newline at end of file diff --git a/docs/Models/Components/RecommendationsVisibility.md b/docs/Models/Components/RecommendationsVisibility.md new file mode 100644 index 0000000..ba55fb1 --- /dev/null +++ b/docs/Models/Components/RecommendationsVisibility.md @@ -0,0 +1,18 @@ +# RecommendationsVisibility + +The visibility of this hub in recommendations: + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + + +## Values + +| Name | Value | +| -------- | -------- | +| `All` | all | +| `None` | none | +| `Admin` | admin | +| `Shared` | shared | \ No newline at end of file diff --git a/docs/Models/Components/RequestHandlerSlashGetResponses200.md b/docs/Models/Components/RequestHandlerSlashGetResponses200.md new file mode 100644 index 0000000..9cdaccf --- /dev/null +++ b/docs/Models/Components/RequestHandlerSlashGetResponses200.md @@ -0,0 +1,10 @@ +# RequestHandlerSlashGetResponses200 + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [RequestHandlerSlashGetResponses200MediaContainer](../../Models/Components/RequestHandlerSlashGetResponses200MediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/RequestHandlerSlashGetResponses200Directory.md b/docs/Models/Components/RequestHandlerSlashGetResponses200Directory.md new file mode 100644 index 0000000..a3f500e --- /dev/null +++ b/docs/Models/Components/RequestHandlerSlashGetResponses200Directory.md @@ -0,0 +1,10 @@ +# RequestHandlerSlashGetResponses200Directory + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `Count` | *long* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | The key where this directory is found | +| `Title` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/RequestHandlerSlashGetResponses200MediaContainer.md b/docs/Models/Components/RequestHandlerSlashGetResponses200MediaContainer.md new file mode 100644 index 0000000..28e12d5 --- /dev/null +++ b/docs/Models/Components/RequestHandlerSlashGetResponses200MediaContainer.md @@ -0,0 +1,65 @@ +# RequestHandlerSlashGetResponses200MediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| | +| `Size` | *long* | :heavy_minus_sign: | N/A | | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| | +| `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` | *long* | :heavy_minus_sign: | N/A | 7 | +| `MachineIdentifier` | *object* | :heavy_minus_sign: | N/A | 0123456789abcdef0123456789abcdef012345678 | +| `MediaProviders` | *bool* | :heavy_minus_sign: | N/A | | +| `Multiuser` | *bool* | :heavy_minus_sign: | N/A | | +| `MusicAnalysis` | *long* | :heavy_minus_sign: | N/A | 2 | +| `MyPlex` | *bool* | :heavy_minus_sign: | N/A | | +| `MyPlexMappingState` | *object* | :heavy_minus_sign: | N/A | mapped | +| `MyPlexSigninState` | *object* | :heavy_minus_sign: | N/A | ok | +| `MyPlexSubscription` | *bool* | :heavy_minus_sign: | N/A | | +| `MyPlexUsername` | *string* | :heavy_minus_sign: | N/A | | +| `OfflineTranscode` | *object* | :heavy_minus_sign: | N/A | 1 | +| `OwnerFeatures` | *string* | :heavy_minus_sign: | A comma-separated list of features which are enabled for the server owner | | +| `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` | *long* | :heavy_minus_sign: | N/A | | +| `StreamingBrainVersion` | *long* | :heavy_minus_sign: | N/A | | +| `Sync` | *bool* | :heavy_minus_sign: | N/A | | +| `TranscoderActiveVideoSessions` | *long* | :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` | *object* | :heavy_minus_sign: | The suggested video quality bitrates to present to the user | | +| `TranscoderVideoQualities` | *string* | :heavy_minus_sign: | N/A | | +| `TranscoderVideoResolutions` | *object* | :heavy_minus_sign: | The suggested video resolutions to the above quality bitrates | | +| `UpdatedAt` | *long* | :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<[RequestHandlerSlashGetResponses200Directory](../../Models/Components/RequestHandlerSlashGetResponses200Directory.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Components/Security.md b/docs/Models/Components/Security.md index 9ff3ae5..ee83bce 100644 --- a/docs/Models/Components/Security.md +++ b/docs/Models/Components/Security.md @@ -5,4 +5,4 @@ | Field | Type | Required | Description | | ------------------ | ------------------ | ------------------ | ------------------ | -| `AccessToken` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file +| `Token` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/Session.md b/docs/Models/Components/Session.md new file mode 100644 index 0000000..4855026 --- /dev/null +++ b/docs/Models/Components/Session.md @@ -0,0 +1,12 @@ +# Session + +Information about the playback session + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `Bandwidth` | *long* | :heavy_minus_sign: | The bandwidth used by this client's playback in kbps | +| `Id` | *string* | :heavy_minus_sign: | The id of the playback session | +| `Location` | [SessionLocation](../../Models/Components/SessionLocation.md) | :heavy_minus_sign: | The location of the client | \ No newline at end of file diff --git a/docs/Models/Components/SessionLocation.md b/docs/Models/Components/SessionLocation.md new file mode 100644 index 0000000..9dc7f84 --- /dev/null +++ b/docs/Models/Components/SessionLocation.md @@ -0,0 +1,11 @@ +# SessionLocation + +The location of the client + + +## Values + +| Name | Value | +| ----- | ----- | +| `Lan` | lan | +| `Wan` | wan | \ No newline at end of file diff --git a/docs/Models/Components/Setting.md b/docs/Models/Components/Setting.md new file mode 100644 index 0000000..7e0b64b --- /dev/null +++ b/docs/Models/Components/Setting.md @@ -0,0 +1,19 @@ +# Setting + +A configuration setting or preference + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `Type` | [Models.Components.Type](../../Models/Components/Type.md) | :heavy_minus_sign: | The type of the value of this setting | +| `Default` | [Default](../../Models/Components/Default.md) | :heavy_minus_sign: | The default value of this setting | +| `Advanced` | *bool* | :heavy_minus_sign: | Whether the setting is considered advanced and normally hidden from the user | +| `EnumValues` | *string* | :heavy_minus_sign: | The possible values for this setting if restricted. The list is `\|` separated with `value:name` entries. | +| `Group` | *string* | :heavy_minus_sign: | The group name of this setting to aid in display of a hierarchy | +| `Hidden` | *bool* | :heavy_minus_sign: | Whether the setting is hidden or not | +| `Id` | *string* | :heavy_minus_sign: | The query parameter name for this setting | +| `Label` | *string* | :heavy_minus_sign: | A user-friendly name for the setting | +| `Summary` | *string* | :heavy_minus_sign: | A description of the setting | +| `Value` | [Value](../../Models/Components/Value.md) | :heavy_minus_sign: | The current value of this setting | \ No newline at end of file diff --git a/docs/Models/Components/SlashGetResponses200.md b/docs/Models/Components/SlashGetResponses200.md new file mode 100644 index 0000000..f1ccfbe --- /dev/null +++ b/docs/Models/Components/SlashGetResponses200.md @@ -0,0 +1,10 @@ +# SlashGetResponses200 + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [SlashGetResponses200MediaContainer](../../Models/Components/SlashGetResponses200MediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/SlashGetResponses200MediaContainer.md b/docs/Models/Components/SlashGetResponses200MediaContainer.md new file mode 100644 index 0000000..7f4abe3 --- /dev/null +++ b/docs/Models/Components/SlashGetResponses200MediaContainer.md @@ -0,0 +1,21 @@ +# SlashGetResponses200MediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `Content` | *string* | :heavy_minus_sign: | The flavors of directory found here:
- Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users.
- Secondary: These are marked with `"secondary": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation.
- Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `"search": true` which used to be used to allow clients to build search dialogs on the fly. | +| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | +| `Art` | *string* | :heavy_minus_sign: | N/A | +| `Directory` | List<[Models.Components.Metadata](../../Models/Components/Metadata.md)> | :heavy_minus_sign: | N/A | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `LibrarySectionID` | *long* | :heavy_minus_sign: | N/A | +| `MediaTagPrefix` | *string* | :heavy_minus_sign: | N/A | +| `MediaTagVersion` | *long* | :heavy_minus_sign: | N/A | +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `SortAsc` | *bool* | :heavy_minus_sign: | N/A | +| `Thumb` | *string* | :heavy_minus_sign: | N/A | +| `Title1` | *string* | :heavy_minus_sign: | N/A | +| `ViewGroup` | *string* | :heavy_minus_sign: | N/A | +| `ViewMode` | *long* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/Sort.md b/docs/Models/Components/Sort.md new file mode 100644 index 0000000..bd7f14b --- /dev/null +++ b/docs/Models/Components/Sort.md @@ -0,0 +1,30 @@ +# Sort + +Each `Sort` object contains a description of the sort field. + + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `Title` | *string* | :heavy_minus_sign: | The title of the field. | +| `Type` | *string* | :heavy_minus_sign: | N/A | +| `Art` | *string* | :heavy_minus_sign: | N/A | +| `Content` | *bool* | :heavy_minus_sign: | N/A | +| `Filter` | *string* | :heavy_minus_sign: | N/A | +| `HasPrefs` | *bool* | :heavy_minus_sign: | N/A | +| `HasStoreServices` | *bool* | :heavy_minus_sign: | N/A | +| `HubKey` | *string* | :heavy_minus_sign: | N/A | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | The key to use in the sort field to make items sort by this item | +| `LastAccessedAt` | *long* | :heavy_minus_sign: | N/A | +| `Pivot` | List<[SortPivot](../../Models/Components/SortPivot.md)> | :heavy_minus_sign: | N/A | +| `Share` | *long* | :heavy_minus_sign: | N/A | +| `Thumb` | *string* | :heavy_minus_sign: | N/A | +| `TitleBar` | *string* | :heavy_minus_sign: | N/A | +| `Default` | [SortDefault](../../Models/Components/SortDefault.md) | :heavy_minus_sign: | If present, this sort is the default and in this direction | +| `DefaultDirection` | [DefaultDirection](../../Models/Components/DefaultDirection.md) | :heavy_minus_sign: | This default diction of this sort | +| `DescKey` | *string* | :heavy_minus_sign: | The key for sorting this field in reverse order | +| `FirstCharacterKey` | *string* | :heavy_minus_sign: | The key to use to get items sorted by this field and indexed by the first character | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/SortDefault.md b/docs/Models/Components/SortDefault.md new file mode 100644 index 0000000..4a7272e --- /dev/null +++ b/docs/Models/Components/SortDefault.md @@ -0,0 +1,11 @@ +# SortDefault + +If present, this sort is the default and in this direction + + +## Values + +| Name | Value | +| ------ | ------ | +| `Asc` | asc | +| `Desc` | desc | \ No newline at end of file diff --git a/docs/Models/Components/SortPivot.md b/docs/Models/Components/SortPivot.md new file mode 100644 index 0000000..3341a90 --- /dev/null +++ b/docs/Models/Components/SortPivot.md @@ -0,0 +1,13 @@ +# SortPivot + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | *string* | :heavy_minus_sign: | N/A | +| `Context` | *string* | :heavy_minus_sign: | N/A | +| `Id` | *string* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Symbol` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/Status.md b/docs/Models/Components/Status.md new file mode 100644 index 0000000..212cd39 --- /dev/null +++ b/docs/Models/Components/Status.md @@ -0,0 +1,15 @@ +# Status + + +## Values + +| Name | Value | +| ---------------- | ---------------- | +| `Inactive` | inactive | +| `Scheduled` | scheduled | +| `Inprogress` | inprogress | +| `Complete` | complete | +| `Cancelled` | cancelled | +| `Error` | error | +| `Postprocessing` | postprocessing | +| `Paused` | paused | \ No newline at end of file diff --git a/docs/Models/Components/Stream.md b/docs/Models/Components/Stream.md new file mode 100644 index 0000000..9ebfdb0 --- /dev/null +++ b/docs/Models/Components/Stream.md @@ -0,0 +1,40 @@ +# Stream + +`Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization). + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `Default` | *bool* | :heavy_minus_sign: | N/A | true | +| `AudioChannelLayout` | *object* | :heavy_minus_sign: | N/A | stereo | +| `BitDepth` | *long* | :heavy_minus_sign: | N/A | 8 | +| `Bitrate` | *long* | :heavy_minus_sign: | N/A | 5466 | +| `CanAutoSync` | *bool* | :heavy_minus_sign: | For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video. | true | +| `ChromaLocation` | *object* | :heavy_minus_sign: | N/A | topleft | +| `ChromaSubsampling` | *object* | :heavy_minus_sign: | N/A | 4:2:0 | +| `Codec` | *object* | :heavy_minus_sign: | The codec of the stream, such as `h264` or `aac` | h264 | +| `ColorPrimaries` | *object* | :heavy_minus_sign: | N/A | bt709 | +| `ColorRange` | *object* | :heavy_minus_sign: | N/A | tv | +| `ColorSpace` | *object* | :heavy_minus_sign: | N/A | bt709 | +| `ColorTrc` | *object* | :heavy_minus_sign: | N/A | bt709 | +| `DisplayTitle` | *object* | :heavy_minus_sign: | A friendly name for the stream, often comprised of the language and codec information | English (H.264 Main) | +| `FrameRate` | *double* | :heavy_minus_sign: | N/A | 23.976 | +| `HasScalingMatrix` | *object* | :heavy_minus_sign: | N/A | false | +| `Height` | *long* | :heavy_minus_sign: | N/A | 544 | +| `Id` | *long* | :heavy_minus_sign: | N/A | 1 | +| `Index` | *long* | :heavy_minus_sign: | If the stream is part of the `Part` and not an external resource, the index of the stream within that part | 0 | +| `Key` | *object* | :heavy_minus_sign: | If the stream is independently streamable, the key from which it can be streamed | /library/streams/1 | +| `Language` | *object* | :heavy_minus_sign: | N/A | English | +| `LanguageCode` | *object* | :heavy_minus_sign: | The three character language code for the stream contents | eng | +| `Level` | *long* | :heavy_minus_sign: | N/A | 31 | +| `Profile` | *object* | :heavy_minus_sign: | N/A | main | +| `RefFrames` | *long* | :heavy_minus_sign: | N/A | 2 | +| `SamplingRate` | *long* | :heavy_minus_sign: | N/A | 48000 | +| `Selected` | *bool* | :heavy_minus_sign: | N/A | | +| `StreamIdentifier` | *long* | :heavy_minus_sign: | N/A | 1 | +| `StreamType` | *long* | :heavy_minus_sign: | A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics | 1 | +| `Width` | *long* | :heavy_minus_sign: | N/A | 1280 | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Components/Subtitles.md b/docs/Models/Components/Subtitles.md new file mode 100644 index 0000000..9ad019e --- /dev/null +++ b/docs/Models/Components/Subtitles.md @@ -0,0 +1,14 @@ +# Subtitles + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Auto` | auto | +| `Burn` | burn | +| `None` | none | +| `Sidecar` | sidecar | +| `Embedded` | embedded | +| `Segmented` | segmented | +| `Unknown` | unknown | \ No newline at end of file diff --git a/docs/Models/Components/Tag.md b/docs/Models/Components/Tag.md new file mode 100644 index 0000000..ac5453b --- /dev/null +++ b/docs/Models/Components/Tag.md @@ -0,0 +1,20 @@ +# Tag + +A variety of extra information about a metadata item is included as tags. These tags use their own element names such as `Genre`, `Writer`, `Directory`, and `Role`. Individual tag types may introduce their own extra attributes. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `Confidence` | *double* | :heavy_minus_sign: | Measure of the confidence of an automatic tag | | +| `Context` | *string* | :heavy_minus_sign: | N/A | | +| `Filter` | *object* | :heavy_minus_sign: | A filter parameter that can be used to query for more content that matches this tag value. | actor=49 | +| `Id` | *long* | :heavy_minus_sign: | N/A | | +| `RatingKey` | *string* | :heavy_minus_sign: | N/A | | +| `Role` | *object* | :heavy_minus_sign: | The role this actor played | Secretary | +| `TagValue` | *object* | :heavy_minus_sign: | The value of the tag (the name) | Shaun Lawton | +| `TagKey` | *object* | :heavy_minus_sign: | Plex identifier for this tag which can be used to fetch additional information from plex.tv | 5d3ee12c4cde6a001c3e0b27 | +| `TagType` | *long* | :heavy_minus_sign: | N/A | | +| `Thumb` | *object* | :heavy_minus_sign: | N/A | http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg | \ No newline at end of file diff --git a/docs/Models/Components/TranscodeSession.md b/docs/Models/Components/TranscodeSession.md new file mode 100644 index 0000000..14bee5e --- /dev/null +++ b/docs/Models/Components/TranscodeSession.md @@ -0,0 +1,23 @@ +# TranscodeSession + +The transcode session if item is currently being transcoded + + +## Fields + +| Field | Type | Required | Description | +| ------------------------- | ------------------------- | ------------------------- | ------------------------- | +| `Complete` | *bool* | :heavy_minus_sign: | N/A | +| `Context` | *string* | :heavy_minus_sign: | N/A | +| `Duration` | *long* | :heavy_minus_sign: | N/A | +| `Error` | *bool* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Progress` | *double* | :heavy_minus_sign: | N/A | +| `Protocol` | *string* | :heavy_minus_sign: | N/A | +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `SourceAudioCodec` | *string* | :heavy_minus_sign: | N/A | +| `SourceVideoCodec` | *string* | :heavy_minus_sign: | N/A | +| `Speed` | *double* | :heavy_minus_sign: | N/A | +| `Throttled` | *bool* | :heavy_minus_sign: | N/A | +| `TranscodeHwFullPipeline` | *bool* | :heavy_minus_sign: | N/A | +| `TranscodeHwRequested` | *bool* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/TranscodeType.md b/docs/Models/Components/TranscodeType.md new file mode 100644 index 0000000..224862e --- /dev/null +++ b/docs/Models/Components/TranscodeType.md @@ -0,0 +1,11 @@ +# TranscodeType + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Video` | video | +| `Music` | music | +| `Audio` | audio | +| `Subtitles` | subtitles | \ No newline at end of file diff --git a/docs/Models/Components/Type.md b/docs/Models/Components/Type.md new file mode 100644 index 0000000..23acb4b --- /dev/null +++ b/docs/Models/Components/Type.md @@ -0,0 +1,13 @@ +# Type + +The type of the value of this setting + + +## Values + +| Name | Value | +| -------- | -------- | +| `Bool` | bool | +| `Int` | int | +| `Text` | text | +| `Double` | double | \ No newline at end of file diff --git a/docs/Models/Components/User.md b/docs/Models/Components/User.md new file mode 100644 index 0000000..4b83db3 --- /dev/null +++ b/docs/Models/Components/User.md @@ -0,0 +1,12 @@ +# User + +The user playing the content + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `Title` | *string* | :heavy_minus_sign: | The username | +| `Id` | *string* | :heavy_minus_sign: | The id of the user | +| `Thumb` | *string* | :heavy_minus_sign: | Thumb image to display for the user | \ No newline at end of file diff --git a/docs/Models/Components/Value.md b/docs/Models/Components/Value.md new file mode 100644 index 0000000..4b668b6 --- /dev/null +++ b/docs/Models/Components/Value.md @@ -0,0 +1,24 @@ +# Value + +The current value of this setting + + +## Supported Types + +### Str + +```csharp +Value.CreateStr(/* values here */); +``` + +### Number + +```csharp +Value.CreateNumber(/* values here */); +``` + +### Boolean + +```csharp +Value.CreateBoolean(/* values here */); +``` diff --git a/docs/Models/Errors/AddPlaylistContentsBadRequest.md b/docs/Models/Errors/AddPlaylistContentsBadRequest.md deleted file mode 100644 index fa38c09..0000000 --- a/docs/Models/Errors/AddPlaylistContentsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# AddPlaylistContentsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[AddPlaylistContentsErrors](../../Models/Errors/AddPlaylistContentsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/AddPlaylistContentsErrors.md b/docs/Models/Errors/AddPlaylistContentsErrors.md deleted file mode 100644 index 7313dd2..0000000 --- a/docs/Models/Errors/AddPlaylistContentsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# AddPlaylistContentsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/AddPlaylistContentsPlaylistsErrors.md b/docs/Models/Errors/AddPlaylistContentsPlaylistsErrors.md deleted file mode 100644 index 5aad301..0000000 --- a/docs/Models/Errors/AddPlaylistContentsPlaylistsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# AddPlaylistContentsPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/AddPlaylistContentsUnauthorized.md b/docs/Models/Errors/AddPlaylistContentsUnauthorized.md deleted file mode 100644 index 1c6edca..0000000 --- a/docs/Models/Errors/AddPlaylistContentsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# AddPlaylistContentsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[AddPlaylistContentsPlaylistsErrors](../../Models/Errors/AddPlaylistContentsPlaylistsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/ApplyUpdatesBadRequest.md b/docs/Models/Errors/ApplyUpdatesBadRequest.md deleted file mode 100644 index 4f0e3d7..0000000 --- a/docs/Models/Errors/ApplyUpdatesBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# ApplyUpdatesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[ApplyUpdatesErrors](../../Models/Errors/ApplyUpdatesErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/ApplyUpdatesErrors.md b/docs/Models/Errors/ApplyUpdatesErrors.md deleted file mode 100644 index 251e0fd..0000000 --- a/docs/Models/Errors/ApplyUpdatesErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# ApplyUpdatesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/ApplyUpdatesUnauthorized.md b/docs/Models/Errors/ApplyUpdatesUnauthorized.md deleted file mode 100644 index 67ad3e1..0000000 --- a/docs/Models/Errors/ApplyUpdatesUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# ApplyUpdatesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[ApplyUpdatesUpdaterErrors](../../Models/Errors/ApplyUpdatesUpdaterErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/ApplyUpdatesUpdaterErrors.md b/docs/Models/Errors/ApplyUpdatesUpdaterErrors.md deleted file mode 100644 index 9fd12d8..0000000 --- a/docs/Models/Errors/ApplyUpdatesUpdaterErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# ApplyUpdatesUpdaterErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/CancelServerActivitiesActivitiesErrors.md b/docs/Models/Errors/CancelServerActivitiesActivitiesErrors.md deleted file mode 100644 index a9f8fb7..0000000 --- a/docs/Models/Errors/CancelServerActivitiesActivitiesErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# CancelServerActivitiesActivitiesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/CancelServerActivitiesBadRequest.md b/docs/Models/Errors/CancelServerActivitiesBadRequest.md deleted file mode 100644 index 17fe054..0000000 --- a/docs/Models/Errors/CancelServerActivitiesBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# CancelServerActivitiesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[CancelServerActivitiesErrors](../../Models/Errors/CancelServerActivitiesErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/CancelServerActivitiesErrors.md b/docs/Models/Errors/CancelServerActivitiesErrors.md deleted file mode 100644 index 56d7847..0000000 --- a/docs/Models/Errors/CancelServerActivitiesErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# CancelServerActivitiesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/CancelServerActivitiesUnauthorized.md b/docs/Models/Errors/CancelServerActivitiesUnauthorized.md deleted file mode 100644 index 3aa8a8b..0000000 --- a/docs/Models/Errors/CancelServerActivitiesUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# CancelServerActivitiesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[CancelServerActivitiesActivitiesErrors](../../Models/Errors/CancelServerActivitiesActivitiesErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/CheckForUpdatesBadRequest.md b/docs/Models/Errors/CheckForUpdatesBadRequest.md deleted file mode 100644 index 208638b..0000000 --- a/docs/Models/Errors/CheckForUpdatesBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# CheckForUpdatesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[CheckForUpdatesErrors](../../Models/Errors/CheckForUpdatesErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/CheckForUpdatesErrors.md b/docs/Models/Errors/CheckForUpdatesErrors.md deleted file mode 100644 index 2dcc224..0000000 --- a/docs/Models/Errors/CheckForUpdatesErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# CheckForUpdatesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/CheckForUpdatesUnauthorized.md b/docs/Models/Errors/CheckForUpdatesUnauthorized.md deleted file mode 100644 index fc36583..0000000 --- a/docs/Models/Errors/CheckForUpdatesUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# CheckForUpdatesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[CheckForUpdatesUpdaterErrors](../../Models/Errors/CheckForUpdatesUpdaterErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/CheckForUpdatesUpdaterErrors.md b/docs/Models/Errors/CheckForUpdatesUpdaterErrors.md deleted file mode 100644 index 4114e16..0000000 --- a/docs/Models/Errors/CheckForUpdatesUpdaterErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# CheckForUpdatesUpdaterErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/ClearPlaylistContentsBadRequest.md b/docs/Models/Errors/ClearPlaylistContentsBadRequest.md deleted file mode 100644 index 58bc691..0000000 --- a/docs/Models/Errors/ClearPlaylistContentsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# ClearPlaylistContentsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[ClearPlaylistContentsErrors](../../Models/Errors/ClearPlaylistContentsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/ClearPlaylistContentsErrors.md b/docs/Models/Errors/ClearPlaylistContentsErrors.md deleted file mode 100644 index 43f76ce..0000000 --- a/docs/Models/Errors/ClearPlaylistContentsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# ClearPlaylistContentsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/ClearPlaylistContentsPlaylistsErrors.md b/docs/Models/Errors/ClearPlaylistContentsPlaylistsErrors.md deleted file mode 100644 index 6bd5cde..0000000 --- a/docs/Models/Errors/ClearPlaylistContentsPlaylistsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# ClearPlaylistContentsPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/ClearPlaylistContentsUnauthorized.md b/docs/Models/Errors/ClearPlaylistContentsUnauthorized.md deleted file mode 100644 index 8c9bb62..0000000 --- a/docs/Models/Errors/ClearPlaylistContentsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# ClearPlaylistContentsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[ClearPlaylistContentsPlaylistsErrors](../../Models/Errors/ClearPlaylistContentsPlaylistsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/CreatePlaylistBadRequest.md b/docs/Models/Errors/CreatePlaylistBadRequest.md deleted file mode 100644 index 437ccd9..0000000 --- a/docs/Models/Errors/CreatePlaylistBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# CreatePlaylistBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[CreatePlaylistErrors](../../Models/Errors/CreatePlaylistErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/CreatePlaylistErrors.md b/docs/Models/Errors/CreatePlaylistErrors.md deleted file mode 100644 index 49b8111..0000000 --- a/docs/Models/Errors/CreatePlaylistErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# CreatePlaylistErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/CreatePlaylistPlaylistsErrors.md b/docs/Models/Errors/CreatePlaylistPlaylistsErrors.md deleted file mode 100644 index b783241..0000000 --- a/docs/Models/Errors/CreatePlaylistPlaylistsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# CreatePlaylistPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/CreatePlaylistUnauthorized.md b/docs/Models/Errors/CreatePlaylistUnauthorized.md deleted file mode 100644 index 7e6ee38..0000000 --- a/docs/Models/Errors/CreatePlaylistUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# CreatePlaylistUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[CreatePlaylistPlaylistsErrors](../../Models/Errors/CreatePlaylistPlaylistsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/DeleteLibraryBadRequest.md b/docs/Models/Errors/DeleteLibraryBadRequest.md deleted file mode 100644 index 34eb02c..0000000 --- a/docs/Models/Errors/DeleteLibraryBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# DeleteLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[DeleteLibraryErrors](../../Models/Errors/DeleteLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/DeleteLibraryErrors.md b/docs/Models/Errors/DeleteLibraryErrors.md deleted file mode 100644 index 21665ca..0000000 --- a/docs/Models/Errors/DeleteLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeleteLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/DeleteLibraryLibraryErrors.md b/docs/Models/Errors/DeleteLibraryLibraryErrors.md deleted file mode 100644 index 7aa64f2..0000000 --- a/docs/Models/Errors/DeleteLibraryLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeleteLibraryLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/DeleteLibraryUnauthorized.md b/docs/Models/Errors/DeleteLibraryUnauthorized.md deleted file mode 100644 index 1674c95..0000000 --- a/docs/Models/Errors/DeleteLibraryUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# DeleteLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[DeleteLibraryLibraryErrors](../../Models/Errors/DeleteLibraryLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/DeletePlaylistBadRequest.md b/docs/Models/Errors/DeletePlaylistBadRequest.md deleted file mode 100644 index c8d39a0..0000000 --- a/docs/Models/Errors/DeletePlaylistBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# DeletePlaylistBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[DeletePlaylistErrors](../../Models/Errors/DeletePlaylistErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/DeletePlaylistErrors.md b/docs/Models/Errors/DeletePlaylistErrors.md deleted file mode 100644 index 19a279c..0000000 --- a/docs/Models/Errors/DeletePlaylistErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeletePlaylistErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/DeletePlaylistPlaylistsErrors.md b/docs/Models/Errors/DeletePlaylistPlaylistsErrors.md deleted file mode 100644 index 05fc7ab..0000000 --- a/docs/Models/Errors/DeletePlaylistPlaylistsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeletePlaylistPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/DeletePlaylistUnauthorized.md b/docs/Models/Errors/DeletePlaylistUnauthorized.md deleted file mode 100644 index e872edd..0000000 --- a/docs/Models/Errors/DeletePlaylistUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# DeletePlaylistUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[DeletePlaylistPlaylistsErrors](../../Models/Errors/DeletePlaylistPlaylistsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/EnablePaperTrailBadRequest.md b/docs/Models/Errors/EnablePaperTrailBadRequest.md deleted file mode 100644 index 041c9e9..0000000 --- a/docs/Models/Errors/EnablePaperTrailBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# EnablePaperTrailBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[EnablePaperTrailErrors](../../Models/Errors/EnablePaperTrailErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/EnablePaperTrailErrors.md b/docs/Models/Errors/EnablePaperTrailErrors.md deleted file mode 100644 index d6beca9..0000000 --- a/docs/Models/Errors/EnablePaperTrailErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# EnablePaperTrailErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/EnablePaperTrailLogErrors.md b/docs/Models/Errors/EnablePaperTrailLogErrors.md deleted file mode 100644 index 57a2208..0000000 --- a/docs/Models/Errors/EnablePaperTrailLogErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# EnablePaperTrailLogErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/EnablePaperTrailUnauthorized.md b/docs/Models/Errors/EnablePaperTrailUnauthorized.md deleted file mode 100644 index b4e733c..0000000 --- a/docs/Models/Errors/EnablePaperTrailUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# EnablePaperTrailUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[EnablePaperTrailLogErrors](../../Models/Errors/EnablePaperTrailLogErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/Errors.md b/docs/Models/Errors/Errors.md deleted file mode 100644 index 27147ba..0000000 --- a/docs/Models/Errors/Errors.md +++ /dev/null @@ -1,10 +0,0 @@ -# Errors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetActorsLibraryBadRequest.md b/docs/Models/Errors/GetActorsLibraryBadRequest.md deleted file mode 100644 index c81a9cc..0000000 --- a/docs/Models/Errors/GetActorsLibraryBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetActorsLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetActorsLibraryErrors](../../Models/Errors/GetActorsLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetActorsLibraryErrors.md b/docs/Models/Errors/GetActorsLibraryErrors.md deleted file mode 100644 index d36204e..0000000 --- a/docs/Models/Errors/GetActorsLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetActorsLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetActorsLibraryLibraryErrors.md b/docs/Models/Errors/GetActorsLibraryLibraryErrors.md deleted file mode 100644 index fdc113e..0000000 --- a/docs/Models/Errors/GetActorsLibraryLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetActorsLibraryLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetActorsLibraryUnauthorized.md b/docs/Models/Errors/GetActorsLibraryUnauthorized.md deleted file mode 100644 index 1551b23..0000000 --- a/docs/Models/Errors/GetActorsLibraryUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetActorsLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetActorsLibraryLibraryErrors](../../Models/Errors/GetActorsLibraryLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetAllLibrariesBadRequest.md b/docs/Models/Errors/GetAllLibrariesBadRequest.md deleted file mode 100644 index 3acdce2..0000000 --- a/docs/Models/Errors/GetAllLibrariesBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAllLibrariesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetAllLibrariesErrors](../../Models/Errors/GetAllLibrariesErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetAllLibrariesErrors.md b/docs/Models/Errors/GetAllLibrariesErrors.md deleted file mode 100644 index dfea7bb..0000000 --- a/docs/Models/Errors/GetAllLibrariesErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetAllLibrariesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetAllLibrariesLibraryErrors.md b/docs/Models/Errors/GetAllLibrariesLibraryErrors.md deleted file mode 100644 index b27b87f..0000000 --- a/docs/Models/Errors/GetAllLibrariesLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetAllLibrariesLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetAllLibrariesUnauthorized.md b/docs/Models/Errors/GetAllLibrariesUnauthorized.md deleted file mode 100644 index 49648c5..0000000 --- a/docs/Models/Errors/GetAllLibrariesUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAllLibrariesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetAllLibrariesLibraryErrors](../../Models/Errors/GetAllLibrariesLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetAvailableClientsBadRequest.md b/docs/Models/Errors/GetAvailableClientsBadRequest.md deleted file mode 100644 index 4e340d1..0000000 --- a/docs/Models/Errors/GetAvailableClientsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAvailableClientsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetAvailableClientsErrors](../../Models/Errors/GetAvailableClientsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetAvailableClientsErrors.md b/docs/Models/Errors/GetAvailableClientsErrors.md deleted file mode 100644 index 4ada1e7..0000000 --- a/docs/Models/Errors/GetAvailableClientsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetAvailableClientsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetAvailableClientsServerErrors.md b/docs/Models/Errors/GetAvailableClientsServerErrors.md deleted file mode 100644 index c23588f..0000000 --- a/docs/Models/Errors/GetAvailableClientsServerErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetAvailableClientsServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetAvailableClientsUnauthorized.md b/docs/Models/Errors/GetAvailableClientsUnauthorized.md deleted file mode 100644 index 708610b..0000000 --- a/docs/Models/Errors/GetAvailableClientsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAvailableClientsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetAvailableClientsServerErrors](../../Models/Errors/GetAvailableClientsServerErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetBandwidthStatisticsBadRequest.md b/docs/Models/Errors/GetBandwidthStatisticsBadRequest.md deleted file mode 100644 index 339f899..0000000 --- a/docs/Models/Errors/GetBandwidthStatisticsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetBandwidthStatisticsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetBandwidthStatisticsErrors](../../Models/Errors/GetBandwidthStatisticsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetBandwidthStatisticsErrors.md b/docs/Models/Errors/GetBandwidthStatisticsErrors.md deleted file mode 100644 index f632918..0000000 --- a/docs/Models/Errors/GetBandwidthStatisticsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetBandwidthStatisticsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetBandwidthStatisticsStatisticsErrors.md b/docs/Models/Errors/GetBandwidthStatisticsStatisticsErrors.md deleted file mode 100644 index 6f695e4..0000000 --- a/docs/Models/Errors/GetBandwidthStatisticsStatisticsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetBandwidthStatisticsStatisticsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetBandwidthStatisticsUnauthorized.md b/docs/Models/Errors/GetBandwidthStatisticsUnauthorized.md deleted file mode 100644 index 6026e84..0000000 --- a/docs/Models/Errors/GetBandwidthStatisticsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetBandwidthStatisticsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetBandwidthStatisticsStatisticsErrors](../../Models/Errors/GetBandwidthStatisticsStatisticsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetBannerImageBadRequest.md b/docs/Models/Errors/GetBannerImageBadRequest.md deleted file mode 100644 index a36b606..0000000 --- a/docs/Models/Errors/GetBannerImageBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetBannerImageBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetBannerImageErrors](../../Models/Errors/GetBannerImageErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetBannerImageErrors.md b/docs/Models/Errors/GetBannerImageErrors.md deleted file mode 100644 index 187e1bf..0000000 --- a/docs/Models/Errors/GetBannerImageErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetBannerImageErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetBannerImageMediaErrors.md b/docs/Models/Errors/GetBannerImageMediaErrors.md deleted file mode 100644 index 48f098c..0000000 --- a/docs/Models/Errors/GetBannerImageMediaErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetBannerImageMediaErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetBannerImageUnauthorized.md b/docs/Models/Errors/GetBannerImageUnauthorized.md deleted file mode 100644 index efaacc2..0000000 --- a/docs/Models/Errors/GetBannerImageUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetBannerImageUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetBannerImageMediaErrors](../../Models/Errors/GetBannerImageMediaErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetButlerTasksBadRequest.md b/docs/Models/Errors/GetButlerTasksBadRequest.md deleted file mode 100644 index 608cbf0..0000000 --- a/docs/Models/Errors/GetButlerTasksBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetButlerTasksBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetButlerTasksErrors](../../Models/Errors/GetButlerTasksErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetButlerTasksButlerErrors.md b/docs/Models/Errors/GetButlerTasksButlerErrors.md deleted file mode 100644 index 5995381..0000000 --- a/docs/Models/Errors/GetButlerTasksButlerErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetButlerTasksButlerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetButlerTasksErrors.md b/docs/Models/Errors/GetButlerTasksErrors.md deleted file mode 100644 index bc346e5..0000000 --- a/docs/Models/Errors/GetButlerTasksErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetButlerTasksErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetButlerTasksUnauthorized.md b/docs/Models/Errors/GetButlerTasksUnauthorized.md deleted file mode 100644 index 27f4dbd..0000000 --- a/docs/Models/Errors/GetButlerTasksUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetButlerTasksUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetButlerTasksButlerErrors](../../Models/Errors/GetButlerTasksButlerErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetCompanionsDataBadRequest.md b/docs/Models/Errors/GetCompanionsDataBadRequest.md deleted file mode 100644 index b6de89b..0000000 --- a/docs/Models/Errors/GetCompanionsDataBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetCompanionsDataBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetCompanionsDataErrors](../../Models/Errors/GetCompanionsDataErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetCompanionsDataErrors.md b/docs/Models/Errors/GetCompanionsDataErrors.md deleted file mode 100644 index 0aa45d1..0000000 --- a/docs/Models/Errors/GetCompanionsDataErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCompanionsDataErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetCompanionsDataPlexErrors.md b/docs/Models/Errors/GetCompanionsDataPlexErrors.md deleted file mode 100644 index 7e3b226..0000000 --- a/docs/Models/Errors/GetCompanionsDataPlexErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCompanionsDataPlexErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetCompanionsDataUnauthorized.md b/docs/Models/Errors/GetCompanionsDataUnauthorized.md deleted file mode 100644 index 972ca03..0000000 --- a/docs/Models/Errors/GetCompanionsDataUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetCompanionsDataUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetCompanionsDataPlexErrors](../../Models/Errors/GetCompanionsDataPlexErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetCountriesLibraryBadRequest.md b/docs/Models/Errors/GetCountriesLibraryBadRequest.md deleted file mode 100644 index 7721ae6..0000000 --- a/docs/Models/Errors/GetCountriesLibraryBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetCountriesLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetCountriesLibraryErrors](../../Models/Errors/GetCountriesLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetCountriesLibraryErrors.md b/docs/Models/Errors/GetCountriesLibraryErrors.md deleted file mode 100644 index 736e179..0000000 --- a/docs/Models/Errors/GetCountriesLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCountriesLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetCountriesLibraryLibraryErrors.md b/docs/Models/Errors/GetCountriesLibraryLibraryErrors.md deleted file mode 100644 index c3a108a..0000000 --- a/docs/Models/Errors/GetCountriesLibraryLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCountriesLibraryLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetCountriesLibraryUnauthorized.md b/docs/Models/Errors/GetCountriesLibraryUnauthorized.md deleted file mode 100644 index 79594d4..0000000 --- a/docs/Models/Errors/GetCountriesLibraryUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetCountriesLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetCountriesLibraryLibraryErrors](../../Models/Errors/GetCountriesLibraryLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetDevicesBadRequest.md b/docs/Models/Errors/GetDevicesBadRequest.md deleted file mode 100644 index bf1ae51..0000000 --- a/docs/Models/Errors/GetDevicesBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetDevicesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetDevicesErrors](../../Models/Errors/GetDevicesErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetDevicesErrors.md b/docs/Models/Errors/GetDevicesErrors.md deleted file mode 100644 index 48ca76a..0000000 --- a/docs/Models/Errors/GetDevicesErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetDevicesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetDevicesServerErrors.md b/docs/Models/Errors/GetDevicesServerErrors.md deleted file mode 100644 index ae8f0d2..0000000 --- a/docs/Models/Errors/GetDevicesServerErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetDevicesServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetDevicesUnauthorized.md b/docs/Models/Errors/GetDevicesUnauthorized.md deleted file mode 100644 index 7d528db..0000000 --- a/docs/Models/Errors/GetDevicesUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetDevicesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetDevicesServerErrors](../../Models/Errors/GetDevicesServerErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetFileHashBadRequest.md b/docs/Models/Errors/GetFileHashBadRequest.md deleted file mode 100644 index 673d127..0000000 --- a/docs/Models/Errors/GetFileHashBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetFileHashBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetFileHashErrors](../../Models/Errors/GetFileHashErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetFileHashErrors.md b/docs/Models/Errors/GetFileHashErrors.md deleted file mode 100644 index d17c670..0000000 --- a/docs/Models/Errors/GetFileHashErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetFileHashErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetFileHashLibraryErrors.md b/docs/Models/Errors/GetFileHashLibraryErrors.md deleted file mode 100644 index 03f4fa0..0000000 --- a/docs/Models/Errors/GetFileHashLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetFileHashLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetFileHashUnauthorized.md b/docs/Models/Errors/GetFileHashUnauthorized.md deleted file mode 100644 index 38695d2..0000000 --- a/docs/Models/Errors/GetFileHashUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetFileHashUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetFileHashLibraryErrors](../../Models/Errors/GetFileHashLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetGenresLibraryBadRequest.md b/docs/Models/Errors/GetGenresLibraryBadRequest.md deleted file mode 100644 index daea7f6..0000000 --- a/docs/Models/Errors/GetGenresLibraryBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGenresLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetGenresLibraryErrors](../../Models/Errors/GetGenresLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetGenresLibraryErrors.md b/docs/Models/Errors/GetGenresLibraryErrors.md deleted file mode 100644 index 4318656..0000000 --- a/docs/Models/Errors/GetGenresLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGenresLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetGenresLibraryLibraryErrors.md b/docs/Models/Errors/GetGenresLibraryLibraryErrors.md deleted file mode 100644 index 278bdb6..0000000 --- a/docs/Models/Errors/GetGenresLibraryLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGenresLibraryLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetGenresLibraryUnauthorized.md b/docs/Models/Errors/GetGenresLibraryUnauthorized.md deleted file mode 100644 index b45483f..0000000 --- a/docs/Models/Errors/GetGenresLibraryUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGenresLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetGenresLibraryLibraryErrors](../../Models/Errors/GetGenresLibraryLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetGeoDataBadRequest.md b/docs/Models/Errors/GetGeoDataBadRequest.md deleted file mode 100644 index b024343..0000000 --- a/docs/Models/Errors/GetGeoDataBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGeoDataBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetGeoDataErrors](../../Models/Errors/GetGeoDataErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetGeoDataErrors.md b/docs/Models/Errors/GetGeoDataErrors.md deleted file mode 100644 index ff2b66a..0000000 --- a/docs/Models/Errors/GetGeoDataErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGeoDataErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetGeoDataPlexErrors.md b/docs/Models/Errors/GetGeoDataPlexErrors.md deleted file mode 100644 index 9f39ebd..0000000 --- a/docs/Models/Errors/GetGeoDataPlexErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGeoDataPlexErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetGeoDataUnauthorized.md b/docs/Models/Errors/GetGeoDataUnauthorized.md deleted file mode 100644 index 8af86f0..0000000 --- a/docs/Models/Errors/GetGeoDataUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGeoDataUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetGeoDataPlexErrors](../../Models/Errors/GetGeoDataPlexErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetGlobalHubsBadRequest.md b/docs/Models/Errors/GetGlobalHubsBadRequest.md deleted file mode 100644 index ca4ca99..0000000 --- a/docs/Models/Errors/GetGlobalHubsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGlobalHubsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetGlobalHubsErrors](../../Models/Errors/GetGlobalHubsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetGlobalHubsErrors.md b/docs/Models/Errors/GetGlobalHubsErrors.md deleted file mode 100644 index 3ad70d3..0000000 --- a/docs/Models/Errors/GetGlobalHubsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGlobalHubsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetGlobalHubsHubsErrors.md b/docs/Models/Errors/GetGlobalHubsHubsErrors.md deleted file mode 100644 index d449ec0..0000000 --- a/docs/Models/Errors/GetGlobalHubsHubsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGlobalHubsHubsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetGlobalHubsUnauthorized.md b/docs/Models/Errors/GetGlobalHubsUnauthorized.md deleted file mode 100644 index bdb8fd8..0000000 --- a/docs/Models/Errors/GetGlobalHubsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGlobalHubsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetGlobalHubsHubsErrors](../../Models/Errors/GetGlobalHubsHubsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetHomeDataBadRequest.md b/docs/Models/Errors/GetHomeDataBadRequest.md deleted file mode 100644 index 22c6b25..0000000 --- a/docs/Models/Errors/GetHomeDataBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetHomeDataBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetHomeDataErrors](../../Models/Errors/GetHomeDataErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetHomeDataErrors.md b/docs/Models/Errors/GetHomeDataErrors.md deleted file mode 100644 index afe116c..0000000 --- a/docs/Models/Errors/GetHomeDataErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetHomeDataErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetHomeDataPlexErrors.md b/docs/Models/Errors/GetHomeDataPlexErrors.md deleted file mode 100644 index 0aa868a..0000000 --- a/docs/Models/Errors/GetHomeDataPlexErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetHomeDataPlexErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetHomeDataUnauthorized.md b/docs/Models/Errors/GetHomeDataUnauthorized.md deleted file mode 100644 index b139264..0000000 --- a/docs/Models/Errors/GetHomeDataUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetHomeDataUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetHomeDataPlexErrors](../../Models/Errors/GetHomeDataPlexErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibraryDetailsBadRequest.md b/docs/Models/Errors/GetLibraryDetailsBadRequest.md deleted file mode 100644 index 668e02a..0000000 --- a/docs/Models/Errors/GetLibraryDetailsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryDetailsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetLibraryDetailsErrors](../../Models/Errors/GetLibraryDetailsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibraryDetailsErrors.md b/docs/Models/Errors/GetLibraryDetailsErrors.md deleted file mode 100644 index c1fb42a..0000000 --- a/docs/Models/Errors/GetLibraryDetailsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryDetailsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibraryDetailsLibraryErrors.md b/docs/Models/Errors/GetLibraryDetailsLibraryErrors.md deleted file mode 100644 index 940f36e..0000000 --- a/docs/Models/Errors/GetLibraryDetailsLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryDetailsLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibraryDetailsUnauthorized.md b/docs/Models/Errors/GetLibraryDetailsUnauthorized.md deleted file mode 100644 index 4e60e7f..0000000 --- a/docs/Models/Errors/GetLibraryDetailsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryDetailsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetLibraryDetailsLibraryErrors](../../Models/Errors/GetLibraryDetailsLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibraryHubsBadRequest.md b/docs/Models/Errors/GetLibraryHubsBadRequest.md deleted file mode 100644 index 0ba4c41..0000000 --- a/docs/Models/Errors/GetLibraryHubsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryHubsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetLibraryHubsErrors](../../Models/Errors/GetLibraryHubsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibraryHubsErrors.md b/docs/Models/Errors/GetLibraryHubsErrors.md deleted file mode 100644 index c399a9b..0000000 --- a/docs/Models/Errors/GetLibraryHubsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryHubsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibraryHubsHubsErrors.md b/docs/Models/Errors/GetLibraryHubsHubsErrors.md deleted file mode 100644 index d185a2b..0000000 --- a/docs/Models/Errors/GetLibraryHubsHubsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryHubsHubsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibraryHubsUnauthorized.md b/docs/Models/Errors/GetLibraryHubsUnauthorized.md deleted file mode 100644 index 97eb67e..0000000 --- a/docs/Models/Errors/GetLibraryHubsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryHubsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetLibraryHubsHubsErrors](../../Models/Errors/GetLibraryHubsHubsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibraryItemsBadRequest.md b/docs/Models/Errors/GetLibraryItemsBadRequest.md deleted file mode 100644 index 82bbf0d..0000000 --- a/docs/Models/Errors/GetLibraryItemsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetLibraryItemsErrors](../../Models/Errors/GetLibraryItemsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibraryItemsErrors.md b/docs/Models/Errors/GetLibraryItemsErrors.md deleted file mode 100644 index 8973897..0000000 --- a/docs/Models/Errors/GetLibraryItemsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibraryItemsLibraryErrors.md b/docs/Models/Errors/GetLibraryItemsLibraryErrors.md deleted file mode 100644 index 55fe0c8..0000000 --- a/docs/Models/Errors/GetLibraryItemsLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibraryItemsUnauthorized.md b/docs/Models/Errors/GetLibraryItemsUnauthorized.md deleted file mode 100644 index 5e20ef0..0000000 --- a/docs/Models/Errors/GetLibraryItemsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetLibraryItemsLibraryErrors](../../Models/Errors/GetLibraryItemsLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibrarySectionsAllBadRequest.md b/docs/Models/Errors/GetLibrarySectionsAllBadRequest.md deleted file mode 100644 index 67bb02e..0000000 --- a/docs/Models/Errors/GetLibrarySectionsAllBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetLibrarySectionsAllErrors](../../Models/Errors/GetLibrarySectionsAllErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibrarySectionsAllErrors.md b/docs/Models/Errors/GetLibrarySectionsAllErrors.md deleted file mode 100644 index 44b9dfd..0000000 --- a/docs/Models/Errors/GetLibrarySectionsAllErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibrarySectionsAllErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibrarySectionsAllLibraryErrors.md b/docs/Models/Errors/GetLibrarySectionsAllLibraryErrors.md deleted file mode 100644 index efd4033..0000000 --- a/docs/Models/Errors/GetLibrarySectionsAllLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibrarySectionsAllLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetLibrarySectionsAllUnauthorized.md b/docs/Models/Errors/GetLibrarySectionsAllUnauthorized.md deleted file mode 100644 index 99c75c4..0000000 --- a/docs/Models/Errors/GetLibrarySectionsAllUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetLibrarySectionsAllLibraryErrors](../../Models/Errors/GetLibrarySectionsAllLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetMediaMetaDataBadRequest.md b/docs/Models/Errors/GetMediaMetaDataBadRequest.md deleted file mode 100644 index 62b5322..0000000 --- a/docs/Models/Errors/GetMediaMetaDataBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaMetaDataBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetMediaMetaDataErrors](../../Models/Errors/GetMediaMetaDataErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetMediaMetaDataErrors.md b/docs/Models/Errors/GetMediaMetaDataErrors.md deleted file mode 100644 index f425cdb..0000000 --- a/docs/Models/Errors/GetMediaMetaDataErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaMetaDataErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetMediaMetaDataLibraryErrors.md b/docs/Models/Errors/GetMediaMetaDataLibraryErrors.md deleted file mode 100644 index 67e31da..0000000 --- a/docs/Models/Errors/GetMediaMetaDataLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaMetaDataLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetMediaMetaDataUnauthorized.md b/docs/Models/Errors/GetMediaMetaDataUnauthorized.md deleted file mode 100644 index 8294af3..0000000 --- a/docs/Models/Errors/GetMediaMetaDataUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaMetaDataUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetMediaMetaDataLibraryErrors](../../Models/Errors/GetMediaMetaDataLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetMediaProvidersBadRequest.md b/docs/Models/Errors/GetMediaProvidersBadRequest.md deleted file mode 100644 index 9a62d55..0000000 --- a/docs/Models/Errors/GetMediaProvidersBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaProvidersBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetMediaProvidersErrors](../../Models/Errors/GetMediaProvidersErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetMediaProvidersErrors.md b/docs/Models/Errors/GetMediaProvidersErrors.md deleted file mode 100644 index 3caea62..0000000 --- a/docs/Models/Errors/GetMediaProvidersErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaProvidersErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetMediaProvidersServerErrors.md b/docs/Models/Errors/GetMediaProvidersServerErrors.md deleted file mode 100644 index 7b57309..0000000 --- a/docs/Models/Errors/GetMediaProvidersServerErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaProvidersServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetMediaProvidersUnauthorized.md b/docs/Models/Errors/GetMediaProvidersUnauthorized.md deleted file mode 100644 index a57093e..0000000 --- a/docs/Models/Errors/GetMediaProvidersUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaProvidersUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetMediaProvidersServerErrors](../../Models/Errors/GetMediaProvidersServerErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetMetadataChildrenBadRequest.md b/docs/Models/Errors/GetMetadataChildrenBadRequest.md deleted file mode 100644 index 069b35f..0000000 --- a/docs/Models/Errors/GetMetadataChildrenBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMetadataChildrenBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetMetadataChildrenErrors](../../Models/Errors/GetMetadataChildrenErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetMetadataChildrenErrors.md b/docs/Models/Errors/GetMetadataChildrenErrors.md deleted file mode 100644 index 5572685..0000000 --- a/docs/Models/Errors/GetMetadataChildrenErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMetadataChildrenErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetMetadataChildrenLibraryErrors.md b/docs/Models/Errors/GetMetadataChildrenLibraryErrors.md deleted file mode 100644 index 24e5d71..0000000 --- a/docs/Models/Errors/GetMetadataChildrenLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMetadataChildrenLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetMetadataChildrenUnauthorized.md b/docs/Models/Errors/GetMetadataChildrenUnauthorized.md deleted file mode 100644 index ca49cc2..0000000 --- a/docs/Models/Errors/GetMetadataChildrenUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMetadataChildrenUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetMetadataChildrenLibraryErrors](../../Models/Errors/GetMetadataChildrenLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetMyPlexAccountBadRequest.md b/docs/Models/Errors/GetMyPlexAccountBadRequest.md deleted file mode 100644 index 2963308..0000000 --- a/docs/Models/Errors/GetMyPlexAccountBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMyPlexAccountBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetMyPlexAccountErrors](../../Models/Errors/GetMyPlexAccountErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetMyPlexAccountErrors.md b/docs/Models/Errors/GetMyPlexAccountErrors.md deleted file mode 100644 index 07e3e59..0000000 --- a/docs/Models/Errors/GetMyPlexAccountErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMyPlexAccountErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetMyPlexAccountServerErrors.md b/docs/Models/Errors/GetMyPlexAccountServerErrors.md deleted file mode 100644 index 7d57721..0000000 --- a/docs/Models/Errors/GetMyPlexAccountServerErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMyPlexAccountServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetMyPlexAccountUnauthorized.md b/docs/Models/Errors/GetMyPlexAccountUnauthorized.md deleted file mode 100644 index 7c5269d..0000000 --- a/docs/Models/Errors/GetMyPlexAccountUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMyPlexAccountUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetMyPlexAccountServerErrors](../../Models/Errors/GetMyPlexAccountServerErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetPinBadRequest.md b/docs/Models/Errors/GetPinBadRequest.md deleted file mode 100644 index 576ea0e..0000000 --- a/docs/Models/Errors/GetPinBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPinBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetPinErrors](../../Models/Errors/GetPinErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetPinErrors.md b/docs/Models/Errors/GetPinErrors.md deleted file mode 100644 index 62179ce..0000000 --- a/docs/Models/Errors/GetPinErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPinErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetPlaylistBadRequest.md b/docs/Models/Errors/GetPlaylistBadRequest.md deleted file mode 100644 index 0be2ef1..0000000 --- a/docs/Models/Errors/GetPlaylistBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetPlaylistErrors](../../Models/Errors/GetPlaylistErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetPlaylistContentsBadRequest.md b/docs/Models/Errors/GetPlaylistContentsBadRequest.md deleted file mode 100644 index 07e90c7..0000000 --- a/docs/Models/Errors/GetPlaylistContentsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistContentsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetPlaylistContentsErrors](../../Models/Errors/GetPlaylistContentsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetPlaylistContentsErrors.md b/docs/Models/Errors/GetPlaylistContentsErrors.md deleted file mode 100644 index bf1c16c..0000000 --- a/docs/Models/Errors/GetPlaylistContentsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistContentsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetPlaylistContentsPlaylistsErrors.md b/docs/Models/Errors/GetPlaylistContentsPlaylistsErrors.md deleted file mode 100644 index f594e5d..0000000 --- a/docs/Models/Errors/GetPlaylistContentsPlaylistsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistContentsPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetPlaylistContentsUnauthorized.md b/docs/Models/Errors/GetPlaylistContentsUnauthorized.md deleted file mode 100644 index 9b6c19f..0000000 --- a/docs/Models/Errors/GetPlaylistContentsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistContentsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetPlaylistContentsPlaylistsErrors](../../Models/Errors/GetPlaylistContentsPlaylistsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetPlaylistErrors.md b/docs/Models/Errors/GetPlaylistErrors.md deleted file mode 100644 index 3944e11..0000000 --- a/docs/Models/Errors/GetPlaylistErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetPlaylistPlaylistsErrors.md b/docs/Models/Errors/GetPlaylistPlaylistsErrors.md deleted file mode 100644 index 2355a34..0000000 --- a/docs/Models/Errors/GetPlaylistPlaylistsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetPlaylistUnauthorized.md b/docs/Models/Errors/GetPlaylistUnauthorized.md deleted file mode 100644 index 0b89aac..0000000 --- a/docs/Models/Errors/GetPlaylistUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetPlaylistPlaylistsErrors](../../Models/Errors/GetPlaylistPlaylistsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetPlaylistsBadRequest.md b/docs/Models/Errors/GetPlaylistsBadRequest.md deleted file mode 100644 index 4fe33bb..0000000 --- a/docs/Models/Errors/GetPlaylistsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetPlaylistsErrors](../../Models/Errors/GetPlaylistsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetPlaylistsErrors.md b/docs/Models/Errors/GetPlaylistsErrors.md deleted file mode 100644 index 1cb55d6..0000000 --- a/docs/Models/Errors/GetPlaylistsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetPlaylistsPlaylistsErrors.md b/docs/Models/Errors/GetPlaylistsPlaylistsErrors.md deleted file mode 100644 index 03b8606..0000000 --- a/docs/Models/Errors/GetPlaylistsPlaylistsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistsPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetPlaylistsUnauthorized.md b/docs/Models/Errors/GetPlaylistsUnauthorized.md deleted file mode 100644 index cbc9c9a..0000000 --- a/docs/Models/Errors/GetPlaylistsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetPlaylistsPlaylistsErrors](../../Models/Errors/GetPlaylistsPlaylistsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetRecentlyAddedLibraryBadRequest.md b/docs/Models/Errors/GetRecentlyAddedLibraryBadRequest.md deleted file mode 100644 index 6a210f4..0000000 --- a/docs/Models/Errors/GetRecentlyAddedLibraryBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRecentlyAddedLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetRecentlyAddedLibraryErrors](../../Models/Errors/GetRecentlyAddedLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetRecentlyAddedLibraryErrors.md b/docs/Models/Errors/GetRecentlyAddedLibraryErrors.md deleted file mode 100644 index e1f16a1..0000000 --- a/docs/Models/Errors/GetRecentlyAddedLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRecentlyAddedLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetRecentlyAddedLibraryLibraryErrors.md b/docs/Models/Errors/GetRecentlyAddedLibraryLibraryErrors.md deleted file mode 100644 index 70126c4..0000000 --- a/docs/Models/Errors/GetRecentlyAddedLibraryLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRecentlyAddedLibraryLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetRecentlyAddedLibraryUnauthorized.md b/docs/Models/Errors/GetRecentlyAddedLibraryUnauthorized.md deleted file mode 100644 index ce2cb48..0000000 --- a/docs/Models/Errors/GetRecentlyAddedLibraryUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRecentlyAddedLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetRecentlyAddedLibraryLibraryErrors](../../Models/Errors/GetRecentlyAddedLibraryLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetRefreshLibraryMetadataBadRequest.md b/docs/Models/Errors/GetRefreshLibraryMetadataBadRequest.md deleted file mode 100644 index a657057..0000000 --- a/docs/Models/Errors/GetRefreshLibraryMetadataBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRefreshLibraryMetadataBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetRefreshLibraryMetadataErrors](../../Models/Errors/GetRefreshLibraryMetadataErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetRefreshLibraryMetadataErrors.md b/docs/Models/Errors/GetRefreshLibraryMetadataErrors.md deleted file mode 100644 index 95f5d68..0000000 --- a/docs/Models/Errors/GetRefreshLibraryMetadataErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRefreshLibraryMetadataErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetRefreshLibraryMetadataLibraryErrors.md b/docs/Models/Errors/GetRefreshLibraryMetadataLibraryErrors.md deleted file mode 100644 index 7c38bf9..0000000 --- a/docs/Models/Errors/GetRefreshLibraryMetadataLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRefreshLibraryMetadataLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetRefreshLibraryMetadataUnauthorized.md b/docs/Models/Errors/GetRefreshLibraryMetadataUnauthorized.md deleted file mode 100644 index be6ce14..0000000 --- a/docs/Models/Errors/GetRefreshLibraryMetadataUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRefreshLibraryMetadataUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetRefreshLibraryMetadataLibraryErrors](../../Models/Errors/GetRefreshLibraryMetadataLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetResizedPhotoBadRequest.md b/docs/Models/Errors/GetResizedPhotoBadRequest.md deleted file mode 100644 index cf9f378..0000000 --- a/docs/Models/Errors/GetResizedPhotoBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetResizedPhotoBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetResizedPhotoErrors](../../Models/Errors/GetResizedPhotoErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetResizedPhotoErrors.md b/docs/Models/Errors/GetResizedPhotoErrors.md deleted file mode 100644 index 5529b17..0000000 --- a/docs/Models/Errors/GetResizedPhotoErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetResizedPhotoErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetResizedPhotoServerErrors.md b/docs/Models/Errors/GetResizedPhotoServerErrors.md deleted file mode 100644 index a0eab54..0000000 --- a/docs/Models/Errors/GetResizedPhotoServerErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetResizedPhotoServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetResizedPhotoUnauthorized.md b/docs/Models/Errors/GetResizedPhotoUnauthorized.md deleted file mode 100644 index c03f30f..0000000 --- a/docs/Models/Errors/GetResizedPhotoUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetResizedPhotoUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetResizedPhotoServerErrors](../../Models/Errors/GetResizedPhotoServerErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetResourcesStatisticsBadRequest.md b/docs/Models/Errors/GetResourcesStatisticsBadRequest.md deleted file mode 100644 index d94a8af..0000000 --- a/docs/Models/Errors/GetResourcesStatisticsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetResourcesStatisticsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetResourcesStatisticsErrors](../../Models/Errors/GetResourcesStatisticsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetResourcesStatisticsErrors.md b/docs/Models/Errors/GetResourcesStatisticsErrors.md deleted file mode 100644 index 12cc569..0000000 --- a/docs/Models/Errors/GetResourcesStatisticsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetResourcesStatisticsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetResourcesStatisticsStatisticsErrors.md b/docs/Models/Errors/GetResourcesStatisticsStatisticsErrors.md deleted file mode 100644 index 62888ce..0000000 --- a/docs/Models/Errors/GetResourcesStatisticsStatisticsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetResourcesStatisticsStatisticsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetResourcesStatisticsUnauthorized.md b/docs/Models/Errors/GetResourcesStatisticsUnauthorized.md deleted file mode 100644 index ec0d899..0000000 --- a/docs/Models/Errors/GetResourcesStatisticsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetResourcesStatisticsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetResourcesStatisticsStatisticsErrors](../../Models/Errors/GetResourcesStatisticsStatisticsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetSearchAllLibrariesBadRequest.md b/docs/Models/Errors/GetSearchAllLibrariesBadRequest.md deleted file mode 100644 index bbefd66..0000000 --- a/docs/Models/Errors/GetSearchAllLibrariesBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetSearchAllLibrariesErrors](../../Models/Errors/GetSearchAllLibrariesErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetSearchAllLibrariesErrors.md b/docs/Models/Errors/GetSearchAllLibrariesErrors.md deleted file mode 100644 index cccca0b..0000000 --- a/docs/Models/Errors/GetSearchAllLibrariesErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetSearchAllLibrariesLibraryErrors.md b/docs/Models/Errors/GetSearchAllLibrariesLibraryErrors.md deleted file mode 100644 index 89ccd2e..0000000 --- a/docs/Models/Errors/GetSearchAllLibrariesLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetSearchAllLibrariesUnauthorized.md b/docs/Models/Errors/GetSearchAllLibrariesUnauthorized.md deleted file mode 100644 index b332a3b..0000000 --- a/docs/Models/Errors/GetSearchAllLibrariesUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetSearchAllLibrariesLibraryErrors](../../Models/Errors/GetSearchAllLibrariesLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetSearchLibraryBadRequest.md b/docs/Models/Errors/GetSearchLibraryBadRequest.md deleted file mode 100644 index 03dba17..0000000 --- a/docs/Models/Errors/GetSearchLibraryBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetSearchLibraryErrors](../../Models/Errors/GetSearchLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetSearchLibraryErrors.md b/docs/Models/Errors/GetSearchLibraryErrors.md deleted file mode 100644 index f87a516..0000000 --- a/docs/Models/Errors/GetSearchLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetSearchLibraryLibraryErrors.md b/docs/Models/Errors/GetSearchLibraryLibraryErrors.md deleted file mode 100644 index f1d3484..0000000 --- a/docs/Models/Errors/GetSearchLibraryLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchLibraryLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetSearchLibraryUnauthorized.md b/docs/Models/Errors/GetSearchLibraryUnauthorized.md deleted file mode 100644 index 35c68ec..0000000 --- a/docs/Models/Errors/GetSearchLibraryUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetSearchLibraryLibraryErrors](../../Models/Errors/GetSearchLibraryLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetSearchResultsBadRequest.md b/docs/Models/Errors/GetSearchResultsBadRequest.md deleted file mode 100644 index 6a7fa7a..0000000 --- a/docs/Models/Errors/GetSearchResultsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchResultsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetSearchResultsErrors](../../Models/Errors/GetSearchResultsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetSearchResultsErrors.md b/docs/Models/Errors/GetSearchResultsErrors.md deleted file mode 100644 index 549a217..0000000 --- a/docs/Models/Errors/GetSearchResultsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchResultsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetSearchResultsSearchErrors.md b/docs/Models/Errors/GetSearchResultsSearchErrors.md deleted file mode 100644 index 45032e3..0000000 --- a/docs/Models/Errors/GetSearchResultsSearchErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchResultsSearchErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetSearchResultsUnauthorized.md b/docs/Models/Errors/GetSearchResultsUnauthorized.md deleted file mode 100644 index 789d80a..0000000 --- a/docs/Models/Errors/GetSearchResultsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchResultsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetSearchResultsSearchErrors](../../Models/Errors/GetSearchResultsSearchErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerActivitiesActivitiesErrors.md b/docs/Models/Errors/GetServerActivitiesActivitiesErrors.md deleted file mode 100644 index b7a8bec..0000000 --- a/docs/Models/Errors/GetServerActivitiesActivitiesErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerActivitiesActivitiesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerActivitiesBadRequest.md b/docs/Models/Errors/GetServerActivitiesBadRequest.md deleted file mode 100644 index d9ebd71..0000000 --- a/docs/Models/Errors/GetServerActivitiesBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerActivitiesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetServerActivitiesErrors](../../Models/Errors/GetServerActivitiesErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerActivitiesErrors.md b/docs/Models/Errors/GetServerActivitiesErrors.md deleted file mode 100644 index f958e70..0000000 --- a/docs/Models/Errors/GetServerActivitiesErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerActivitiesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerActivitiesUnauthorized.md b/docs/Models/Errors/GetServerActivitiesUnauthorized.md deleted file mode 100644 index e24cfcc..0000000 --- a/docs/Models/Errors/GetServerActivitiesUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerActivitiesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetServerActivitiesActivitiesErrors](../../Models/Errors/GetServerActivitiesActivitiesErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerCapabilitiesBadRequest.md b/docs/Models/Errors/GetServerCapabilitiesBadRequest.md deleted file mode 100644 index 17d6b84..0000000 --- a/docs/Models/Errors/GetServerCapabilitiesBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerCapabilitiesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[Errors](../../Models/Errors/Errors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerCapabilitiesErrors.md b/docs/Models/Errors/GetServerCapabilitiesErrors.md deleted file mode 100644 index 67c48c0..0000000 --- a/docs/Models/Errors/GetServerCapabilitiesErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerCapabilitiesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerCapabilitiesUnauthorized.md b/docs/Models/Errors/GetServerCapabilitiesUnauthorized.md deleted file mode 100644 index 322747b..0000000 --- a/docs/Models/Errors/GetServerCapabilitiesUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerCapabilitiesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetServerCapabilitiesErrors](../../Models/Errors/GetServerCapabilitiesErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerIdentityRequestTimeout.md b/docs/Models/Errors/GetServerIdentityRequestTimeout.md deleted file mode 100644 index 97a7761..0000000 --- a/docs/Models/Errors/GetServerIdentityRequestTimeout.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetServerIdentityRequestTimeout - -Request Timeout - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 408 | -| `Message` | *string* | :heavy_minus_sign: | N/A | The server timed out waiting for the request. | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerListBadRequest.md b/docs/Models/Errors/GetServerListBadRequest.md deleted file mode 100644 index 534dc61..0000000 --- a/docs/Models/Errors/GetServerListBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerListBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetServerListErrors](../../Models/Errors/GetServerListErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerListErrors.md b/docs/Models/Errors/GetServerListErrors.md deleted file mode 100644 index da735af..0000000 --- a/docs/Models/Errors/GetServerListErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerListErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerListServerErrors.md b/docs/Models/Errors/GetServerListServerErrors.md deleted file mode 100644 index d25996c..0000000 --- a/docs/Models/Errors/GetServerListServerErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerListServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerListUnauthorized.md b/docs/Models/Errors/GetServerListUnauthorized.md deleted file mode 100644 index b19c488..0000000 --- a/docs/Models/Errors/GetServerListUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerListUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetServerListServerErrors](../../Models/Errors/GetServerListServerErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerPreferencesBadRequest.md b/docs/Models/Errors/GetServerPreferencesBadRequest.md deleted file mode 100644 index 513dc6b..0000000 --- a/docs/Models/Errors/GetServerPreferencesBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerPreferencesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetServerPreferencesErrors](../../Models/Errors/GetServerPreferencesErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerPreferencesErrors.md b/docs/Models/Errors/GetServerPreferencesErrors.md deleted file mode 100644 index be8747a..0000000 --- a/docs/Models/Errors/GetServerPreferencesErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerPreferencesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerPreferencesServerErrors.md b/docs/Models/Errors/GetServerPreferencesServerErrors.md deleted file mode 100644 index d837208..0000000 --- a/docs/Models/Errors/GetServerPreferencesServerErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerPreferencesServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerPreferencesUnauthorized.md b/docs/Models/Errors/GetServerPreferencesUnauthorized.md deleted file mode 100644 index a7942b8..0000000 --- a/docs/Models/Errors/GetServerPreferencesUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerPreferencesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetServerPreferencesServerErrors](../../Models/Errors/GetServerPreferencesServerErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerResourcesBadRequest.md b/docs/Models/Errors/GetServerResourcesBadRequest.md deleted file mode 100644 index 947601f..0000000 --- a/docs/Models/Errors/GetServerResourcesBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerResourcesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetServerResourcesErrors](../../Models/Errors/GetServerResourcesErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerResourcesErrors.md b/docs/Models/Errors/GetServerResourcesErrors.md deleted file mode 100644 index c818ead..0000000 --- a/docs/Models/Errors/GetServerResourcesErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerResourcesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerResourcesPlexErrors.md b/docs/Models/Errors/GetServerResourcesPlexErrors.md deleted file mode 100644 index af1c370..0000000 --- a/docs/Models/Errors/GetServerResourcesPlexErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerResourcesPlexErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetServerResourcesUnauthorized.md b/docs/Models/Errors/GetServerResourcesUnauthorized.md deleted file mode 100644 index dfae606..0000000 --- a/docs/Models/Errors/GetServerResourcesUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerResourcesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetServerResourcesPlexErrors](../../Models/Errors/GetServerResourcesPlexErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetSessionHistoryBadRequest.md b/docs/Models/Errors/GetSessionHistoryBadRequest.md deleted file mode 100644 index 5917426..0000000 --- a/docs/Models/Errors/GetSessionHistoryBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSessionHistoryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetSessionHistoryErrors](../../Models/Errors/GetSessionHistoryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetSessionHistoryErrors.md b/docs/Models/Errors/GetSessionHistoryErrors.md deleted file mode 100644 index ffe0584..0000000 --- a/docs/Models/Errors/GetSessionHistoryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionHistoryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetSessionHistorySessionsErrors.md b/docs/Models/Errors/GetSessionHistorySessionsErrors.md deleted file mode 100644 index de83077..0000000 --- a/docs/Models/Errors/GetSessionHistorySessionsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionHistorySessionsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetSessionHistoryUnauthorized.md b/docs/Models/Errors/GetSessionHistoryUnauthorized.md deleted file mode 100644 index 184b2de..0000000 --- a/docs/Models/Errors/GetSessionHistoryUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSessionHistoryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetSessionHistorySessionsErrors](../../Models/Errors/GetSessionHistorySessionsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetSessionsBadRequest.md b/docs/Models/Errors/GetSessionsBadRequest.md deleted file mode 100644 index e297902..0000000 --- a/docs/Models/Errors/GetSessionsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSessionsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetSessionsErrors](../../Models/Errors/GetSessionsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetSessionsErrors.md b/docs/Models/Errors/GetSessionsErrors.md deleted file mode 100644 index 9138756..0000000 --- a/docs/Models/Errors/GetSessionsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetSessionsSessionsErrors.md b/docs/Models/Errors/GetSessionsSessionsErrors.md deleted file mode 100644 index 265a566..0000000 --- a/docs/Models/Errors/GetSessionsSessionsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionsSessionsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetSessionsUnauthorized.md b/docs/Models/Errors/GetSessionsUnauthorized.md deleted file mode 100644 index 689f70c..0000000 --- a/docs/Models/Errors/GetSessionsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSessionsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetSessionsSessionsErrors](../../Models/Errors/GetSessionsSessionsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetSourceConnectionInformationAuthenticationErrors.md b/docs/Models/Errors/GetSourceConnectionInformationAuthenticationErrors.md deleted file mode 100644 index 7f25260..0000000 --- a/docs/Models/Errors/GetSourceConnectionInformationAuthenticationErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSourceConnectionInformationAuthenticationErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetSourceConnectionInformationBadRequest.md b/docs/Models/Errors/GetSourceConnectionInformationBadRequest.md deleted file mode 100644 index 91c82d2..0000000 --- a/docs/Models/Errors/GetSourceConnectionInformationBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSourceConnectionInformationBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetSourceConnectionInformationErrors](../../Models/Errors/GetSourceConnectionInformationErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetSourceConnectionInformationErrors.md b/docs/Models/Errors/GetSourceConnectionInformationErrors.md deleted file mode 100644 index bcd77e1..0000000 --- a/docs/Models/Errors/GetSourceConnectionInformationErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSourceConnectionInformationErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetSourceConnectionInformationUnauthorized.md b/docs/Models/Errors/GetSourceConnectionInformationUnauthorized.md deleted file mode 100644 index 5a567cc..0000000 --- a/docs/Models/Errors/GetSourceConnectionInformationUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSourceConnectionInformationUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetSourceConnectionInformationAuthenticationErrors](../../Models/Errors/GetSourceConnectionInformationAuthenticationErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetStatisticsBadRequest.md b/docs/Models/Errors/GetStatisticsBadRequest.md deleted file mode 100644 index e1d10e8..0000000 --- a/docs/Models/Errors/GetStatisticsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetStatisticsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetStatisticsErrors](../../Models/Errors/GetStatisticsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetStatisticsErrors.md b/docs/Models/Errors/GetStatisticsErrors.md deleted file mode 100644 index 90f6ffb..0000000 --- a/docs/Models/Errors/GetStatisticsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetStatisticsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetStatisticsStatisticsErrors.md b/docs/Models/Errors/GetStatisticsStatisticsErrors.md deleted file mode 100644 index 3c0997d..0000000 --- a/docs/Models/Errors/GetStatisticsStatisticsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetStatisticsStatisticsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetStatisticsUnauthorized.md b/docs/Models/Errors/GetStatisticsUnauthorized.md deleted file mode 100644 index 433d089..0000000 --- a/docs/Models/Errors/GetStatisticsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetStatisticsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetStatisticsStatisticsErrors](../../Models/Errors/GetStatisticsStatisticsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetThumbImageBadRequest.md b/docs/Models/Errors/GetThumbImageBadRequest.md deleted file mode 100644 index bf38223..0000000 --- a/docs/Models/Errors/GetThumbImageBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetThumbImageBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetThumbImageErrors](../../Models/Errors/GetThumbImageErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetThumbImageErrors.md b/docs/Models/Errors/GetThumbImageErrors.md deleted file mode 100644 index 20a78dc..0000000 --- a/docs/Models/Errors/GetThumbImageErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetThumbImageErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetThumbImageMediaErrors.md b/docs/Models/Errors/GetThumbImageMediaErrors.md deleted file mode 100644 index ebb8eb6..0000000 --- a/docs/Models/Errors/GetThumbImageMediaErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetThumbImageMediaErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetThumbImageUnauthorized.md b/docs/Models/Errors/GetThumbImageUnauthorized.md deleted file mode 100644 index 3104dbd..0000000 --- a/docs/Models/Errors/GetThumbImageUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetThumbImageUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetThumbImageMediaErrors](../../Models/Errors/GetThumbImageMediaErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetTimelineBadRequest.md b/docs/Models/Errors/GetTimelineBadRequest.md deleted file mode 100644 index ff26b28..0000000 --- a/docs/Models/Errors/GetTimelineBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTimelineBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetTimelineErrors](../../Models/Errors/GetTimelineErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetTimelineErrors.md b/docs/Models/Errors/GetTimelineErrors.md deleted file mode 100644 index 7cf6484..0000000 --- a/docs/Models/Errors/GetTimelineErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTimelineErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetTimelineUnauthorized.md b/docs/Models/Errors/GetTimelineUnauthorized.md deleted file mode 100644 index e390634..0000000 --- a/docs/Models/Errors/GetTimelineUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTimelineUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetTimelineVideoErrors](../../Models/Errors/GetTimelineVideoErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetTimelineVideoErrors.md b/docs/Models/Errors/GetTimelineVideoErrors.md deleted file mode 100644 index 318f2ab..0000000 --- a/docs/Models/Errors/GetTimelineVideoErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTimelineVideoErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetTokenByPinIdBadRequest.md b/docs/Models/Errors/GetTokenByPinIdBadRequest.md deleted file mode 100644 index 72897cc..0000000 --- a/docs/Models/Errors/GetTokenByPinIdBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenByPinIdBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetTokenByPinIdErrors](../../Models/Errors/GetTokenByPinIdErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetTokenByPinIdErrors.md b/docs/Models/Errors/GetTokenByPinIdErrors.md deleted file mode 100644 index 6b5443e..0000000 --- a/docs/Models/Errors/GetTokenByPinIdErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTokenByPinIdErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetTokenByPinIdPlexErrors.md b/docs/Models/Errors/GetTokenByPinIdPlexErrors.md deleted file mode 100644 index 31e6054..0000000 --- a/docs/Models/Errors/GetTokenByPinIdPlexErrors.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetTokenByPinIdPlexErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | -| `Code` | *long* | :heavy_minus_sign: | N/A | 1020 | -| `Message` | *string* | :heavy_minus_sign: | N/A | Code not found or expired | \ No newline at end of file diff --git a/docs/Models/Errors/GetTokenByPinIdResponseBody.md b/docs/Models/Errors/GetTokenByPinIdResponseBody.md deleted file mode 100644 index 0479edb..0000000 --- a/docs/Models/Errors/GetTokenByPinIdResponseBody.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenByPinIdResponseBody - -Not Found or Expired - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetTokenByPinIdPlexErrors](../../Models/Errors/GetTokenByPinIdPlexErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetTokenDetailsAuthenticationErrors.md b/docs/Models/Errors/GetTokenDetailsAuthenticationErrors.md deleted file mode 100644 index 74301fa..0000000 --- a/docs/Models/Errors/GetTokenDetailsAuthenticationErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTokenDetailsAuthenticationErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetTokenDetailsBadRequest.md b/docs/Models/Errors/GetTokenDetailsBadRequest.md deleted file mode 100644 index 1b83e5f..0000000 --- a/docs/Models/Errors/GetTokenDetailsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenDetailsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetTokenDetailsErrors](../../Models/Errors/GetTokenDetailsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetTokenDetailsErrors.md b/docs/Models/Errors/GetTokenDetailsErrors.md deleted file mode 100644 index 3b84c30..0000000 --- a/docs/Models/Errors/GetTokenDetailsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTokenDetailsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetTokenDetailsUnauthorized.md b/docs/Models/Errors/GetTokenDetailsUnauthorized.md deleted file mode 100644 index 2cfe620..0000000 --- a/docs/Models/Errors/GetTokenDetailsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenDetailsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetTokenDetailsAuthenticationErrors](../../Models/Errors/GetTokenDetailsAuthenticationErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetTopWatchedContentBadRequest.md b/docs/Models/Errors/GetTopWatchedContentBadRequest.md deleted file mode 100644 index 9aadf6c..0000000 --- a/docs/Models/Errors/GetTopWatchedContentBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTopWatchedContentBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetTopWatchedContentErrors](../../Models/Errors/GetTopWatchedContentErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetTopWatchedContentErrors.md b/docs/Models/Errors/GetTopWatchedContentErrors.md deleted file mode 100644 index fc30749..0000000 --- a/docs/Models/Errors/GetTopWatchedContentErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTopWatchedContentErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetTopWatchedContentLibraryErrors.md b/docs/Models/Errors/GetTopWatchedContentLibraryErrors.md deleted file mode 100644 index ac7cec1..0000000 --- a/docs/Models/Errors/GetTopWatchedContentLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTopWatchedContentLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetTopWatchedContentUnauthorized.md b/docs/Models/Errors/GetTopWatchedContentUnauthorized.md deleted file mode 100644 index 67fc9e1..0000000 --- a/docs/Models/Errors/GetTopWatchedContentUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTopWatchedContentUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetTopWatchedContentLibraryErrors](../../Models/Errors/GetTopWatchedContentLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetTranscodeSessionsBadRequest.md b/docs/Models/Errors/GetTranscodeSessionsBadRequest.md deleted file mode 100644 index 887aa63..0000000 --- a/docs/Models/Errors/GetTranscodeSessionsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTranscodeSessionsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetTranscodeSessionsErrors](../../Models/Errors/GetTranscodeSessionsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetTranscodeSessionsErrors.md b/docs/Models/Errors/GetTranscodeSessionsErrors.md deleted file mode 100644 index 8b532f7..0000000 --- a/docs/Models/Errors/GetTranscodeSessionsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTranscodeSessionsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetTranscodeSessionsSessionsErrors.md b/docs/Models/Errors/GetTranscodeSessionsSessionsErrors.md deleted file mode 100644 index d37cf83..0000000 --- a/docs/Models/Errors/GetTranscodeSessionsSessionsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTranscodeSessionsSessionsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetTranscodeSessionsUnauthorized.md b/docs/Models/Errors/GetTranscodeSessionsUnauthorized.md deleted file mode 100644 index ed63d0c..0000000 --- a/docs/Models/Errors/GetTranscodeSessionsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTranscodeSessionsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetTranscodeSessionsSessionsErrors](../../Models/Errors/GetTranscodeSessionsSessionsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetTransientTokenAuthenticationErrors.md b/docs/Models/Errors/GetTransientTokenAuthenticationErrors.md deleted file mode 100644 index e5a0b71..0000000 --- a/docs/Models/Errors/GetTransientTokenAuthenticationErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTransientTokenAuthenticationErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetTransientTokenBadRequest.md b/docs/Models/Errors/GetTransientTokenBadRequest.md deleted file mode 100644 index eed4864..0000000 --- a/docs/Models/Errors/GetTransientTokenBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTransientTokenBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetTransientTokenErrors](../../Models/Errors/GetTransientTokenErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetTransientTokenErrors.md b/docs/Models/Errors/GetTransientTokenErrors.md deleted file mode 100644 index e3946c9..0000000 --- a/docs/Models/Errors/GetTransientTokenErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTransientTokenErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetTransientTokenUnauthorized.md b/docs/Models/Errors/GetTransientTokenUnauthorized.md deleted file mode 100644 index bd17057..0000000 --- a/docs/Models/Errors/GetTransientTokenUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTransientTokenUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetTransientTokenAuthenticationErrors](../../Models/Errors/GetTransientTokenAuthenticationErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetUpdateStatusBadRequest.md b/docs/Models/Errors/GetUpdateStatusBadRequest.md deleted file mode 100644 index faa11f7..0000000 --- a/docs/Models/Errors/GetUpdateStatusBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUpdateStatusBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetUpdateStatusErrors](../../Models/Errors/GetUpdateStatusErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetUpdateStatusErrors.md b/docs/Models/Errors/GetUpdateStatusErrors.md deleted file mode 100644 index 6d96262..0000000 --- a/docs/Models/Errors/GetUpdateStatusErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUpdateStatusErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetUpdateStatusUnauthorized.md b/docs/Models/Errors/GetUpdateStatusUnauthorized.md deleted file mode 100644 index 807cb2a..0000000 --- a/docs/Models/Errors/GetUpdateStatusUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUpdateStatusUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetUpdateStatusUpdaterErrors](../../Models/Errors/GetUpdateStatusUpdaterErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetUpdateStatusUpdaterErrors.md b/docs/Models/Errors/GetUpdateStatusUpdaterErrors.md deleted file mode 100644 index 0648774..0000000 --- a/docs/Models/Errors/GetUpdateStatusUpdaterErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUpdateStatusUpdaterErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetUserFriendsBadRequest.md b/docs/Models/Errors/GetUserFriendsBadRequest.md deleted file mode 100644 index 00eb773..0000000 --- a/docs/Models/Errors/GetUserFriendsBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUserFriendsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetUserFriendsErrors](../../Models/Errors/GetUserFriendsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetUserFriendsErrors.md b/docs/Models/Errors/GetUserFriendsErrors.md deleted file mode 100644 index 0334968..0000000 --- a/docs/Models/Errors/GetUserFriendsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUserFriendsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetUserFriendsPlexErrors.md b/docs/Models/Errors/GetUserFriendsPlexErrors.md deleted file mode 100644 index bbb92c1..0000000 --- a/docs/Models/Errors/GetUserFriendsPlexErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUserFriendsPlexErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetUserFriendsUnauthorized.md b/docs/Models/Errors/GetUserFriendsUnauthorized.md deleted file mode 100644 index 3269ecc..0000000 --- a/docs/Models/Errors/GetUserFriendsUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUserFriendsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetUserFriendsPlexErrors](../../Models/Errors/GetUserFriendsPlexErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetUsersBadRequest.md b/docs/Models/Errors/GetUsersBadRequest.md deleted file mode 100644 index d8c38a6..0000000 --- a/docs/Models/Errors/GetUsersBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUsersBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetUsersErrors](../../Models/Errors/GetUsersErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetUsersErrors.md b/docs/Models/Errors/GetUsersErrors.md deleted file mode 100644 index af99220..0000000 --- a/docs/Models/Errors/GetUsersErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUsersErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetUsersUnauthorized.md b/docs/Models/Errors/GetUsersUnauthorized.md deleted file mode 100644 index 9ff0bbb..0000000 --- a/docs/Models/Errors/GetUsersUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUsersUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetUsersUsersErrors](../../Models/Errors/GetUsersUsersErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetUsersUsersErrors.md b/docs/Models/Errors/GetUsersUsersErrors.md deleted file mode 100644 index fb11b18..0000000 --- a/docs/Models/Errors/GetUsersUsersErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUsersUsersErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetWatchListBadRequest.md b/docs/Models/Errors/GetWatchListBadRequest.md deleted file mode 100644 index a7851e1..0000000 --- a/docs/Models/Errors/GetWatchListBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetWatchListBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetWatchListErrors](../../Models/Errors/GetWatchListErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetWatchListErrors.md b/docs/Models/Errors/GetWatchListErrors.md deleted file mode 100644 index 16efd81..0000000 --- a/docs/Models/Errors/GetWatchListErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetWatchListErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetWatchListUnauthorized.md b/docs/Models/Errors/GetWatchListUnauthorized.md deleted file mode 100644 index 003cd57..0000000 --- a/docs/Models/Errors/GetWatchListUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetWatchListUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetWatchListWatchlistErrors](../../Models/Errors/GetWatchListWatchlistErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetWatchListWatchlistErrors.md b/docs/Models/Errors/GetWatchListWatchlistErrors.md deleted file mode 100644 index e54ecf8..0000000 --- a/docs/Models/Errors/GetWatchListWatchlistErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetWatchListWatchlistErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/LogLineBadRequest.md b/docs/Models/Errors/LogLineBadRequest.md deleted file mode 100644 index ee9117a..0000000 --- a/docs/Models/Errors/LogLineBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# LogLineBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[LogLineErrors](../../Models/Errors/LogLineErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/LogLineErrors.md b/docs/Models/Errors/LogLineErrors.md deleted file mode 100644 index 4080582..0000000 --- a/docs/Models/Errors/LogLineErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# LogLineErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/LogLineLogErrors.md b/docs/Models/Errors/LogLineLogErrors.md deleted file mode 100644 index 50e8a86..0000000 --- a/docs/Models/Errors/LogLineLogErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# LogLineLogErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/LogLineUnauthorized.md b/docs/Models/Errors/LogLineUnauthorized.md deleted file mode 100644 index cd9866f..0000000 --- a/docs/Models/Errors/LogLineUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# LogLineUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[LogLineLogErrors](../../Models/Errors/LogLineLogErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/LogMultiLineBadRequest.md b/docs/Models/Errors/LogMultiLineBadRequest.md deleted file mode 100644 index d608067..0000000 --- a/docs/Models/Errors/LogMultiLineBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# LogMultiLineBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[LogMultiLineErrors](../../Models/Errors/LogMultiLineErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/LogMultiLineErrors.md b/docs/Models/Errors/LogMultiLineErrors.md deleted file mode 100644 index b13031a..0000000 --- a/docs/Models/Errors/LogMultiLineErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# LogMultiLineErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/LogMultiLineLogErrors.md b/docs/Models/Errors/LogMultiLineLogErrors.md deleted file mode 100644 index 17c79af..0000000 --- a/docs/Models/Errors/LogMultiLineLogErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# LogMultiLineLogErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/LogMultiLineUnauthorized.md b/docs/Models/Errors/LogMultiLineUnauthorized.md deleted file mode 100644 index dd472d9..0000000 --- a/docs/Models/Errors/LogMultiLineUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# LogMultiLineUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[LogMultiLineLogErrors](../../Models/Errors/LogMultiLineLogErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/MarkPlayedBadRequest.md b/docs/Models/Errors/MarkPlayedBadRequest.md deleted file mode 100644 index 192a311..0000000 --- a/docs/Models/Errors/MarkPlayedBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# MarkPlayedBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[MarkPlayedErrors](../../Models/Errors/MarkPlayedErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/MarkPlayedErrors.md b/docs/Models/Errors/MarkPlayedErrors.md deleted file mode 100644 index f2e003f..0000000 --- a/docs/Models/Errors/MarkPlayedErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# MarkPlayedErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/MarkPlayedMediaErrors.md b/docs/Models/Errors/MarkPlayedMediaErrors.md deleted file mode 100644 index 9c55af4..0000000 --- a/docs/Models/Errors/MarkPlayedMediaErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# MarkPlayedMediaErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/MarkPlayedUnauthorized.md b/docs/Models/Errors/MarkPlayedUnauthorized.md deleted file mode 100644 index 9a246e7..0000000 --- a/docs/Models/Errors/MarkPlayedUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# MarkPlayedUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[MarkPlayedMediaErrors](../../Models/Errors/MarkPlayedMediaErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/MarkUnplayedBadRequest.md b/docs/Models/Errors/MarkUnplayedBadRequest.md deleted file mode 100644 index 6b6e638..0000000 --- a/docs/Models/Errors/MarkUnplayedBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# MarkUnplayedBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[MarkUnplayedErrors](../../Models/Errors/MarkUnplayedErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/MarkUnplayedErrors.md b/docs/Models/Errors/MarkUnplayedErrors.md deleted file mode 100644 index a673d15..0000000 --- a/docs/Models/Errors/MarkUnplayedErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# MarkUnplayedErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/MarkUnplayedMediaErrors.md b/docs/Models/Errors/MarkUnplayedMediaErrors.md deleted file mode 100644 index 0a236f0..0000000 --- a/docs/Models/Errors/MarkUnplayedMediaErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# MarkUnplayedMediaErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/MarkUnplayedUnauthorized.md b/docs/Models/Errors/MarkUnplayedUnauthorized.md deleted file mode 100644 index cd9ad73..0000000 --- a/docs/Models/Errors/MarkUnplayedUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# MarkUnplayedUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[MarkUnplayedMediaErrors](../../Models/Errors/MarkUnplayedMediaErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/PerformSearchBadRequest.md b/docs/Models/Errors/PerformSearchBadRequest.md deleted file mode 100644 index 198d2cd..0000000 --- a/docs/Models/Errors/PerformSearchBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# PerformSearchBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[PerformSearchErrors](../../Models/Errors/PerformSearchErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/PerformSearchErrors.md b/docs/Models/Errors/PerformSearchErrors.md deleted file mode 100644 index 4530ae6..0000000 --- a/docs/Models/Errors/PerformSearchErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# PerformSearchErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/PerformSearchSearchErrors.md b/docs/Models/Errors/PerformSearchSearchErrors.md deleted file mode 100644 index 47c3bc7..0000000 --- a/docs/Models/Errors/PerformSearchSearchErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# PerformSearchSearchErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/PerformSearchUnauthorized.md b/docs/Models/Errors/PerformSearchUnauthorized.md deleted file mode 100644 index 2bb1e9e..0000000 --- a/docs/Models/Errors/PerformSearchUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# PerformSearchUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[PerformSearchSearchErrors](../../Models/Errors/PerformSearchSearchErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/PerformVoiceSearchBadRequest.md b/docs/Models/Errors/PerformVoiceSearchBadRequest.md deleted file mode 100644 index 6ff526e..0000000 --- a/docs/Models/Errors/PerformVoiceSearchBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# PerformVoiceSearchBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[PerformVoiceSearchErrors](../../Models/Errors/PerformVoiceSearchErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/PerformVoiceSearchErrors.md b/docs/Models/Errors/PerformVoiceSearchErrors.md deleted file mode 100644 index 6967edc..0000000 --- a/docs/Models/Errors/PerformVoiceSearchErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# PerformVoiceSearchErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/PerformVoiceSearchSearchErrors.md b/docs/Models/Errors/PerformVoiceSearchSearchErrors.md deleted file mode 100644 index c448e49..0000000 --- a/docs/Models/Errors/PerformVoiceSearchSearchErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# PerformVoiceSearchSearchErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/PerformVoiceSearchUnauthorized.md b/docs/Models/Errors/PerformVoiceSearchUnauthorized.md deleted file mode 100644 index 5ac0da9..0000000 --- a/docs/Models/Errors/PerformVoiceSearchUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# PerformVoiceSearchUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[PerformVoiceSearchSearchErrors](../../Models/Errors/PerformVoiceSearchSearchErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/PostUsersSignInDataAuthenticationErrors.md b/docs/Models/Errors/PostUsersSignInDataAuthenticationErrors.md deleted file mode 100644 index d97635e..0000000 --- a/docs/Models/Errors/PostUsersSignInDataAuthenticationErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# PostUsersSignInDataAuthenticationErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/PostUsersSignInDataBadRequest.md b/docs/Models/Errors/PostUsersSignInDataBadRequest.md deleted file mode 100644 index 57f7d38..0000000 --- a/docs/Models/Errors/PostUsersSignInDataBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[PostUsersSignInDataErrors](../../Models/Errors/PostUsersSignInDataErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/PostUsersSignInDataErrors.md b/docs/Models/Errors/PostUsersSignInDataErrors.md deleted file mode 100644 index 8dc66ae..0000000 --- a/docs/Models/Errors/PostUsersSignInDataErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# PostUsersSignInDataErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/PostUsersSignInDataUnauthorized.md b/docs/Models/Errors/PostUsersSignInDataUnauthorized.md deleted file mode 100644 index e7bdff9..0000000 --- a/docs/Models/Errors/PostUsersSignInDataUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[PostUsersSignInDataAuthenticationErrors](../../Models/Errors/PostUsersSignInDataAuthenticationErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/StartAllTasksBadRequest.md b/docs/Models/Errors/StartAllTasksBadRequest.md deleted file mode 100644 index 8b64c7a..0000000 --- a/docs/Models/Errors/StartAllTasksBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# StartAllTasksBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[StartAllTasksErrors](../../Models/Errors/StartAllTasksErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/StartAllTasksButlerErrors.md b/docs/Models/Errors/StartAllTasksButlerErrors.md deleted file mode 100644 index efcbe4b..0000000 --- a/docs/Models/Errors/StartAllTasksButlerErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartAllTasksButlerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/StartAllTasksErrors.md b/docs/Models/Errors/StartAllTasksErrors.md deleted file mode 100644 index d8e0226..0000000 --- a/docs/Models/Errors/StartAllTasksErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartAllTasksErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/StartAllTasksUnauthorized.md b/docs/Models/Errors/StartAllTasksUnauthorized.md deleted file mode 100644 index 806a55a..0000000 --- a/docs/Models/Errors/StartAllTasksUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# StartAllTasksUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[StartAllTasksButlerErrors](../../Models/Errors/StartAllTasksButlerErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/StartTaskBadRequest.md b/docs/Models/Errors/StartTaskBadRequest.md deleted file mode 100644 index 4041eb3..0000000 --- a/docs/Models/Errors/StartTaskBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# StartTaskBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[StartTaskErrors](../../Models/Errors/StartTaskErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/StartTaskButlerErrors.md b/docs/Models/Errors/StartTaskButlerErrors.md deleted file mode 100644 index c9ab885..0000000 --- a/docs/Models/Errors/StartTaskButlerErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartTaskButlerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/StartTaskErrors.md b/docs/Models/Errors/StartTaskErrors.md deleted file mode 100644 index 332f6d1..0000000 --- a/docs/Models/Errors/StartTaskErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartTaskErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/StartTaskUnauthorized.md b/docs/Models/Errors/StartTaskUnauthorized.md deleted file mode 100644 index ec5cf9e..0000000 --- a/docs/Models/Errors/StartTaskUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# StartTaskUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[StartTaskButlerErrors](../../Models/Errors/StartTaskButlerErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/StartUniversalTranscodeBadRequest.md b/docs/Models/Errors/StartUniversalTranscodeBadRequest.md deleted file mode 100644 index 097b063..0000000 --- a/docs/Models/Errors/StartUniversalTranscodeBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# StartUniversalTranscodeBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[StartUniversalTranscodeErrors](../../Models/Errors/StartUniversalTranscodeErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/StartUniversalTranscodeErrors.md b/docs/Models/Errors/StartUniversalTranscodeErrors.md deleted file mode 100644 index 60d1ac8..0000000 --- a/docs/Models/Errors/StartUniversalTranscodeErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartUniversalTranscodeErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/StartUniversalTranscodeUnauthorized.md b/docs/Models/Errors/StartUniversalTranscodeUnauthorized.md deleted file mode 100644 index 0bb5af5..0000000 --- a/docs/Models/Errors/StartUniversalTranscodeUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# StartUniversalTranscodeUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[StartUniversalTranscodeVideoErrors](../../Models/Errors/StartUniversalTranscodeVideoErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/StartUniversalTranscodeVideoErrors.md b/docs/Models/Errors/StartUniversalTranscodeVideoErrors.md deleted file mode 100644 index 2795114..0000000 --- a/docs/Models/Errors/StartUniversalTranscodeVideoErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartUniversalTranscodeVideoErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/StopAllTasksBadRequest.md b/docs/Models/Errors/StopAllTasksBadRequest.md deleted file mode 100644 index fd03633..0000000 --- a/docs/Models/Errors/StopAllTasksBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# StopAllTasksBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[StopAllTasksErrors](../../Models/Errors/StopAllTasksErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/StopAllTasksButlerErrors.md b/docs/Models/Errors/StopAllTasksButlerErrors.md deleted file mode 100644 index 705d823..0000000 --- a/docs/Models/Errors/StopAllTasksButlerErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopAllTasksButlerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/StopAllTasksErrors.md b/docs/Models/Errors/StopAllTasksErrors.md deleted file mode 100644 index f995c3f..0000000 --- a/docs/Models/Errors/StopAllTasksErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopAllTasksErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/StopAllTasksUnauthorized.md b/docs/Models/Errors/StopAllTasksUnauthorized.md deleted file mode 100644 index 1b23134..0000000 --- a/docs/Models/Errors/StopAllTasksUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# StopAllTasksUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[StopAllTasksButlerErrors](../../Models/Errors/StopAllTasksButlerErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/StopTaskBadRequest.md b/docs/Models/Errors/StopTaskBadRequest.md deleted file mode 100644 index 41a8e38..0000000 --- a/docs/Models/Errors/StopTaskBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# StopTaskBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[StopTaskErrors](../../Models/Errors/StopTaskErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/StopTaskButlerErrors.md b/docs/Models/Errors/StopTaskButlerErrors.md deleted file mode 100644 index 32c8b38..0000000 --- a/docs/Models/Errors/StopTaskButlerErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopTaskButlerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/StopTaskErrors.md b/docs/Models/Errors/StopTaskErrors.md deleted file mode 100644 index 59168bd..0000000 --- a/docs/Models/Errors/StopTaskErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopTaskErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/StopTaskUnauthorized.md b/docs/Models/Errors/StopTaskUnauthorized.md deleted file mode 100644 index beb9555..0000000 --- a/docs/Models/Errors/StopTaskUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# StopTaskUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[StopTaskButlerErrors](../../Models/Errors/StopTaskButlerErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/StopTranscodeSessionBadRequest.md b/docs/Models/Errors/StopTranscodeSessionBadRequest.md deleted file mode 100644 index 1e13f44..0000000 --- a/docs/Models/Errors/StopTranscodeSessionBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# StopTranscodeSessionBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[StopTranscodeSessionErrors](../../Models/Errors/StopTranscodeSessionErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/StopTranscodeSessionErrors.md b/docs/Models/Errors/StopTranscodeSessionErrors.md deleted file mode 100644 index 3f1549e..0000000 --- a/docs/Models/Errors/StopTranscodeSessionErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopTranscodeSessionErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/StopTranscodeSessionSessionsErrors.md b/docs/Models/Errors/StopTranscodeSessionSessionsErrors.md deleted file mode 100644 index 50f7863..0000000 --- a/docs/Models/Errors/StopTranscodeSessionSessionsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopTranscodeSessionSessionsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/StopTranscodeSessionUnauthorized.md b/docs/Models/Errors/StopTranscodeSessionUnauthorized.md deleted file mode 100644 index 917a51a..0000000 --- a/docs/Models/Errors/StopTranscodeSessionUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# StopTranscodeSessionUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[StopTranscodeSessionSessionsErrors](../../Models/Errors/StopTranscodeSessionSessionsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/UpdatePlayProgressBadRequest.md b/docs/Models/Errors/UpdatePlayProgressBadRequest.md deleted file mode 100644 index ce615b5..0000000 --- a/docs/Models/Errors/UpdatePlayProgressBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# UpdatePlayProgressBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[UpdatePlayProgressErrors](../../Models/Errors/UpdatePlayProgressErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/UpdatePlayProgressErrors.md b/docs/Models/Errors/UpdatePlayProgressErrors.md deleted file mode 100644 index fefe58f..0000000 --- a/docs/Models/Errors/UpdatePlayProgressErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdatePlayProgressErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/UpdatePlayProgressMediaErrors.md b/docs/Models/Errors/UpdatePlayProgressMediaErrors.md deleted file mode 100644 index 974e113..0000000 --- a/docs/Models/Errors/UpdatePlayProgressMediaErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdatePlayProgressMediaErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/UpdatePlayProgressUnauthorized.md b/docs/Models/Errors/UpdatePlayProgressUnauthorized.md deleted file mode 100644 index 6201c2a..0000000 --- a/docs/Models/Errors/UpdatePlayProgressUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# UpdatePlayProgressUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[UpdatePlayProgressMediaErrors](../../Models/Errors/UpdatePlayProgressMediaErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/UpdatePlaylistBadRequest.md b/docs/Models/Errors/UpdatePlaylistBadRequest.md deleted file mode 100644 index e6e9738..0000000 --- a/docs/Models/Errors/UpdatePlaylistBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# UpdatePlaylistBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[UpdatePlaylistErrors](../../Models/Errors/UpdatePlaylistErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/UpdatePlaylistErrors.md b/docs/Models/Errors/UpdatePlaylistErrors.md deleted file mode 100644 index bd68d2d..0000000 --- a/docs/Models/Errors/UpdatePlaylistErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdatePlaylistErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/UpdatePlaylistPlaylistsErrors.md b/docs/Models/Errors/UpdatePlaylistPlaylistsErrors.md deleted file mode 100644 index dbeb971..0000000 --- a/docs/Models/Errors/UpdatePlaylistPlaylistsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdatePlaylistPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/UpdatePlaylistUnauthorized.md b/docs/Models/Errors/UpdatePlaylistUnauthorized.md deleted file mode 100644 index 40d5e4c..0000000 --- a/docs/Models/Errors/UpdatePlaylistUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# UpdatePlaylistUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[UpdatePlaylistPlaylistsErrors](../../Models/Errors/UpdatePlaylistPlaylistsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/UploadPlaylistBadRequest.md b/docs/Models/Errors/UploadPlaylistBadRequest.md deleted file mode 100644 index 752aa96..0000000 --- a/docs/Models/Errors/UploadPlaylistBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# UploadPlaylistBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[UploadPlaylistErrors](../../Models/Errors/UploadPlaylistErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/UploadPlaylistErrors.md b/docs/Models/Errors/UploadPlaylistErrors.md deleted file mode 100644 index 7b2500c..0000000 --- a/docs/Models/Errors/UploadPlaylistErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# UploadPlaylistErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/UploadPlaylistPlaylistsErrors.md b/docs/Models/Errors/UploadPlaylistPlaylistsErrors.md deleted file mode 100644 index 1bee439..0000000 --- a/docs/Models/Errors/UploadPlaylistPlaylistsErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# UploadPlaylistPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/UploadPlaylistUnauthorized.md b/docs/Models/Errors/UploadPlaylistUnauthorized.md deleted file mode 100644 index 3e5d364..0000000 --- a/docs/Models/Errors/UploadPlaylistUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# UploadPlaylistUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[UploadPlaylistPlaylistsErrors](../../Models/Errors/UploadPlaylistPlaylistsErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Requests/Account.md b/docs/Models/Requests/Account.md index 7ccd6bc..7b3ad20 100644 --- a/docs/Models/Requests/Account.md +++ b/docs/Models/Requests/Account.md @@ -3,13 +3,7 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `Id` | *int* | :heavy_minus_sign: | N/A | 238960586 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /accounts/238960586 | -| `Name` | *string* | :heavy_minus_sign: | N/A | Diane | -| `DefaultAudioLanguage` | *string* | :heavy_minus_sign: | N/A | en | -| `AutoSelectAudio` | *bool* | :heavy_minus_sign: | N/A | true | -| `DefaultSubtitleLanguage` | *string* | :heavy_minus_sign: | N/A | en | -| `SubtitleMode` | *int* | :heavy_minus_sign: | N/A | 1 | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | https://plex.tv/users/50d83634246da1de/avatar?c=1707110967 | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `GlobalViewCount` | *long* | :heavy_minus_sign: | N/A | +| `Id` | *long* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Action.md b/docs/Models/Requests/Action.md index e3049b9..7aa5bdc 100644 --- a/docs/Models/Requests/Action.md +++ b/docs/Models/Requests/Action.md @@ -1,9 +1,12 @@ # Action +The action to perform for this item on this optimizer queue -## Fields -| Field | Type | Required | Description | Example | -| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | -| `Id` | *string* | :heavy_check_mark: | N/A | addToContinueWatching | -| `Key` | *string* | :heavy_check_mark: | N/A | /actions/addToContinueWatching | \ No newline at end of file +## Values + +| Name | Value | +| ----------- | ----------- | +| `Reprocess` | reprocess | +| `Disable` | disable | +| `Enable` | enable | \ No newline at end of file diff --git a/docs/Models/Requests/ActiveDirection.md b/docs/Models/Requests/ActiveDirection.md deleted file mode 100644 index 0b96d97..0000000 --- a/docs/Models/Requests/ActiveDirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# ActiveDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Ascending` | asc | -| `Descending` | desc | \ No newline at end of file diff --git a/docs/Models/Requests/Activity.md b/docs/Models/Requests/Activity.md index d71b304..a62b669 100644 --- a/docs/Models/Requests/Activity.md +++ b/docs/Models/Requests/Activity.md @@ -3,13 +3,14 @@ ## 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 +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `Cancellable` | *bool* | :heavy_minus_sign: | Indicates whether this activity can be cancelled | +| `Context` | Dictionary | :heavy_minus_sign: | An object with additional values | +| `Progress` | *double* | :heavy_minus_sign: | A progress percentage. A value of -1 means the progress is indeterminate | +| `Response` | Dictionary | :heavy_minus_sign: | An object with the response to the async opperation | +| `Subtitle` | *string* | :heavy_minus_sign: | A user-friendly sub-title for this activity | +| `Title` | *string* | :heavy_minus_sign: | A user-friendly title for this activity | +| `Type` | *string* | :heavy_minus_sign: | The type of activity | +| `UserID` | *long* | :heavy_minus_sign: | The user this activity belongs to | +| `Uuid` | *string* | :heavy_minus_sign: | The ID of the activity | \ No newline at end of file diff --git a/docs/Models/Requests/AddCollectionItemsRequest.md b/docs/Models/Requests/AddCollectionItemsRequest.md new file mode 100644 index 0000000..e065102 --- /dev/null +++ b/docs/Models/Requests/AddCollectionItemsRequest.md @@ -0,0 +1,20 @@ +# AddCollectionItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `CollectionId` | *long* | :heavy_check_mark: | The collection id | | +| `Uri` | *string* | :heavy_check_mark: | The URI describing the items to add to this collection | | \ No newline at end of file diff --git a/docs/Models/Requests/AddCollectionItemsResponse.md b/docs/Models/Requests/AddCollectionItemsResponse.md new file mode 100644 index 0000000..de39301 --- /dev/null +++ b/docs/Models/Requests/AddCollectionItemsResponse.md @@ -0,0 +1,11 @@ +# AddCollectionItemsResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/AddDeviceRequest.md b/docs/Models/Requests/AddDeviceRequest.md new file mode 100644 index 0000000..947cd19 --- /dev/null +++ b/docs/Models/Requests/AddDeviceRequest.md @@ -0,0 +1,19 @@ +# AddDeviceRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Uri` | *string* | :heavy_minus_sign: | The URI of the device. | http://10.0.0.5 | \ No newline at end of file diff --git a/docs/Models/Requests/AddDeviceResponse.md b/docs/Models/Requests/AddDeviceResponse.md new file mode 100644 index 0000000..8bb1da4 --- /dev/null +++ b/docs/Models/Requests/AddDeviceResponse.md @@ -0,0 +1,11 @@ +# AddDeviceResponse + + +## 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 | +| `MediaContainerWithDevice` | [MediaContainerWithDevice](../../Models/Components/MediaContainerWithDevice.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/AddDeviceToDVRDVR.md b/docs/Models/Requests/AddDeviceToDVRDVR.md new file mode 100644 index 0000000..e5a04e7 --- /dev/null +++ b/docs/Models/Requests/AddDeviceToDVRDVR.md @@ -0,0 +1,12 @@ +# AddDeviceToDVRDVR + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Device` | List<[Models.Components.Device](../../Models/Components/Device.md)> | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Language` | *string* | :heavy_minus_sign: | N/A | +| `Lineup` | *string* | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/AddDeviceToDVRDVRsMediaContainer.md b/docs/Models/Requests/AddDeviceToDVRDVRsMediaContainer.md new file mode 100644 index 0000000..14ac331 --- /dev/null +++ b/docs/Models/Requests/AddDeviceToDVRDVRsMediaContainer.md @@ -0,0 +1,17 @@ +# AddDeviceToDVRDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Status` | *long* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/Models/Requests/AddDeviceToDVRMediaContainer.md b/docs/Models/Requests/AddDeviceToDVRMediaContainer.md new file mode 100644 index 0000000..3342b76 --- /dev/null +++ b/docs/Models/Requests/AddDeviceToDVRMediaContainer.md @@ -0,0 +1,9 @@ +# AddDeviceToDVRMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `MediaContainer` | [AddDeviceToDVRDVRsMediaContainer](../../Models/Requests/AddDeviceToDVRDVRsMediaContainer.md) | :heavy_minus_sign: | N/A | +| `Dvr` | List<[AddDeviceToDVRDVR](../../Models/Requests/AddDeviceToDVRDVR.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/AddDeviceToDVRRequest.md b/docs/Models/Requests/AddDeviceToDVRRequest.md new file mode 100644 index 0000000..6c0d63a --- /dev/null +++ b/docs/Models/Requests/AddDeviceToDVRRequest.md @@ -0,0 +1,20 @@ +# AddDeviceToDVRRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DvrId` | *long* | :heavy_check_mark: | The ID of the DVR. | | +| `DeviceId` | *long* | :heavy_check_mark: | The ID of the device to add. | | \ No newline at end of file diff --git a/docs/Models/Requests/AddDeviceToDVRResponse.md b/docs/Models/Requests/AddDeviceToDVRResponse.md new file mode 100644 index 0000000..fdf57f7 --- /dev/null +++ b/docs/Models/Requests/AddDeviceToDVRResponse.md @@ -0,0 +1,12 @@ +# AddDeviceToDVRResponse + + +## 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` | [AddDeviceToDVRResponseBody](../../Models/Requests/AddDeviceToDVRResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/AddDeviceToDVRResponseBody.md b/docs/Models/Requests/AddDeviceToDVRResponseBody.md new file mode 100644 index 0000000..4f2c77d --- /dev/null +++ b/docs/Models/Requests/AddDeviceToDVRResponseBody.md @@ -0,0 +1,10 @@ +# AddDeviceToDVRResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `MediaContainer` | [AddDeviceToDVRMediaContainer](../../Models/Requests/AddDeviceToDVRMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/AddDownloadQueueItemsMediaContainer.md b/docs/Models/Requests/AddDownloadQueueItemsMediaContainer.md new file mode 100644 index 0000000..3024a26 --- /dev/null +++ b/docs/Models/Requests/AddDownloadQueueItemsMediaContainer.md @@ -0,0 +1,17 @@ +# AddDownloadQueueItemsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `AddedQueueItems` | List<[AddedQueueItems](../../Models/Requests/AddedQueueItems.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/AddDownloadQueueItemsRequest.md b/docs/Models/Requests/AddDownloadQueueItemsRequest.md new file mode 100644 index 0000000..782cbd1 --- /dev/null +++ b/docs/Models/Requests/AddDownloadQueueItemsRequest.md @@ -0,0 +1,46 @@ +# AddDownloadQueueItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `QueueId` | *long* | :heavy_check_mark: | The queue id | | +| `Keys` | List<*string*> | :heavy_check_mark: | Keys to add | [
"/library/metadata/3",
"/library/metadata/6"
] | +| `AdvancedSubtitles` | [Models.Components.AdvancedSubtitles](../../Models/Components/AdvancedSubtitles.md) | :heavy_minus_sign: | Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
| burn | +| `AudioBoost` | *long* | :heavy_minus_sign: | Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) | 50 | +| `AudioChannelCount` | *long* | :heavy_minus_sign: | Target video number of audio channels. | 5 | +| `AutoAdjustQuality` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports ABR. | 1 | +| `AutoAdjustSubtitle` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates if the server should adjust subtitles based on Voice Activity Data. | 1 | +| `DirectPlay` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports direct playing the indicated content. | 1 | +| `DirectStream` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the video of the indicated content. | 1 | +| `DirectStreamAudio` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the audio of the indicated content. | 1 | +| `DisableResolutionRotation` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates if resolution should be adjusted for orientation. | 1 | +| `HasMDE` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 | 1 | +| `Location` | [Models.Components.Location](../../Models/Components/Location.md) | :heavy_minus_sign: | Network type of the client, can be used to help determine target bitrate. | wan | +| `MediaBufferSize` | *long* | :heavy_minus_sign: | Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. | 102400 | +| `MediaIndex` | *long* | :heavy_minus_sign: | Index of the media to transcode. -1 or not specified indicates let the server choose. | 0 | +| `MusicBitrate` | *long* | :heavy_minus_sign: | Target bitrate for audio only files (in kbps, used to transcode). | 5000 | +| `Offset` | *double* | :heavy_minus_sign: | Offset from the start of the media (in seconds). | 90.5 | +| `PartIndex` | *long* | :heavy_minus_sign: | Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode | 0 | +| `Path` | *string* | :heavy_minus_sign: | Internal PMS path of the media to transcode. | /library/metadata/151671 | +| `PeakBitrate` | *long* | :heavy_minus_sign: | Maximum bitrate (in kbps) to use in ABR. | 12000 | +| `PhotoResolution` | *string* | :heavy_minus_sign: | Target photo resolution. | 1080x1080 | +| `Protocol` | [Models.Components.Protocol](../../Models/Components/Protocol.md) | :heavy_minus_sign: | Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
| dash | +| `SecondsPerSegment` | *long* | :heavy_minus_sign: | Number of seconds to include in each transcoded segment | 5 | +| `SubtitleSize` | *long* | :heavy_minus_sign: | Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) | 50 | +| `Subtitles` | [Models.Components.Subtitles](../../Models/Components/Subtitles.md) | :heavy_minus_sign: | Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
| Burn | +| `VideoBitrate` | *long* | :heavy_minus_sign: | Target video bitrate (in kbps). | 12000 | +| `VideoQuality` | *long* | :heavy_minus_sign: | Target photo quality. | 50 | +| `VideoResolution` | *string* | :heavy_minus_sign: | Target maximum video resolution. | 1080x1080 | \ No newline at end of file diff --git a/docs/Models/Requests/AddDownloadQueueItemsResponse.md b/docs/Models/Requests/AddDownloadQueueItemsResponse.md new file mode 100644 index 0000000..07ea4ba --- /dev/null +++ b/docs/Models/Requests/AddDownloadQueueItemsResponse.md @@ -0,0 +1,11 @@ +# AddDownloadQueueItemsResponse + + +## 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` | [AddDownloadQueueItemsResponseBody](../../Models/Requests/AddDownloadQueueItemsResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/AddDownloadQueueItemsResponseBody.md b/docs/Models/Requests/AddDownloadQueueItemsResponseBody.md new file mode 100644 index 0000000..806aa1b --- /dev/null +++ b/docs/Models/Requests/AddDownloadQueueItemsResponseBody.md @@ -0,0 +1,10 @@ +# AddDownloadQueueItemsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [AddDownloadQueueItemsMediaContainer](../../Models/Requests/AddDownloadQueueItemsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/AddExtrasRequest.md b/docs/Models/Requests/AddExtrasRequest.md new file mode 100644 index 0000000..87b6319 --- /dev/null +++ b/docs/Models/Requests/AddExtrasRequest.md @@ -0,0 +1,22 @@ +# AddExtrasRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `ExtraType` | *long* | :heavy_minus_sign: | The metadata type of the extra | | +| `Url` | *string* | :heavy_check_mark: | The URL of the extra | | +| `Title` | *string* | :heavy_minus_sign: | The title to filter by or assign | | \ No newline at end of file diff --git a/docs/Models/Requests/AddExtrasResponse.md b/docs/Models/Requests/AddExtrasResponse.md new file mode 100644 index 0000000..c1a67c9 --- /dev/null +++ b/docs/Models/Requests/AddExtrasResponse.md @@ -0,0 +1,10 @@ +# AddExtrasResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/AddLineupDVR.md b/docs/Models/Requests/AddLineupDVR.md new file mode 100644 index 0000000..cd7f9b1 --- /dev/null +++ b/docs/Models/Requests/AddLineupDVR.md @@ -0,0 +1,12 @@ +# AddLineupDVR + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Device` | List<[Models.Components.Device](../../Models/Components/Device.md)> | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Language` | *string* | :heavy_minus_sign: | N/A | +| `Lineup` | *string* | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/AddLineupDVRsMediaContainer.md b/docs/Models/Requests/AddLineupDVRsMediaContainer.md new file mode 100644 index 0000000..33ba94a --- /dev/null +++ b/docs/Models/Requests/AddLineupDVRsMediaContainer.md @@ -0,0 +1,17 @@ +# AddLineupDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Status` | *long* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/Models/Requests/AddLineupMediaContainer.md b/docs/Models/Requests/AddLineupMediaContainer.md new file mode 100644 index 0000000..860f5fa --- /dev/null +++ b/docs/Models/Requests/AddLineupMediaContainer.md @@ -0,0 +1,9 @@ +# AddLineupMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `MediaContainer` | [AddLineupDVRsMediaContainer](../../Models/Requests/AddLineupDVRsMediaContainer.md) | :heavy_minus_sign: | N/A | +| `Dvr` | List<[AddLineupDVR](../../Models/Requests/AddLineupDVR.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/AddLineupRequest.md b/docs/Models/Requests/AddLineupRequest.md new file mode 100644 index 0000000..45c4bae --- /dev/null +++ b/docs/Models/Requests/AddLineupRequest.md @@ -0,0 +1,20 @@ +# AddLineupRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DvrId` | *long* | :heavy_check_mark: | The ID of the DVR. | | +| `Lineup` | *string* | :heavy_check_mark: | The lineup to delete | | \ No newline at end of file diff --git a/docs/Models/Requests/AddLineupResponse.md b/docs/Models/Requests/AddLineupResponse.md new file mode 100644 index 0000000..712c12b --- /dev/null +++ b/docs/Models/Requests/AddLineupResponse.md @@ -0,0 +1,12 @@ +# AddLineupResponse + + +## 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` | [AddLineupResponseBody](../../Models/Requests/AddLineupResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/AddLineupResponseBody.md b/docs/Models/Requests/AddLineupResponseBody.md new file mode 100644 index 0000000..e5c003d --- /dev/null +++ b/docs/Models/Requests/AddLineupResponseBody.md @@ -0,0 +1,10 @@ +# AddLineupResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `MediaContainer` | [AddLineupMediaContainer](../../Models/Requests/AddLineupMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/AddPlaylistContentsMediaContainer.md b/docs/Models/Requests/AddPlaylistContentsMediaContainer.md deleted file mode 100644 index 0ccba4c..0000000 --- a/docs/Models/Requests/AddPlaylistContentsMediaContainer.md +++ /dev/null @@ -1,11 +0,0 @@ -# AddPlaylistContentsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 1 | -| `LeafCountAdded` | *int* | :heavy_minus_sign: | N/A | 1 | -| `LeafCountRequested` | *int* | :heavy_minus_sign: | N/A | 1 | -| `Metadata` | List<[AddPlaylistContentsMetadata](../../Models/Requests/AddPlaylistContentsMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/AddPlaylistContentsMetadata.md b/docs/Models/Requests/AddPlaylistContentsMetadata.md deleted file mode 100644 index 0c671f3..0000000 --- a/docs/Models/Requests/AddPlaylistContentsMetadata.md +++ /dev/null @@ -1,20 +0,0 @@ -# AddPlaylistContentsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 94 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /playlists/94/items | -| `Guid` | *string* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://972e3047-83d6-4848-a000-261f0af26ba2 | -| `Type` | *string* | :heavy_minus_sign: | N/A | playlist | -| `Title` | *string* | :heavy_minus_sign: | N/A | A great playlist | -| `Summary` | *string* | :heavy_minus_sign: | N/A | One of my great playlists | -| `Smart` | *bool* | :heavy_minus_sign: | N/A | false | -| `PlaylistType` | *string* | :heavy_minus_sign: | N/A | video | -| `Composite` | *string* | :heavy_minus_sign: | N/A | /playlists/94/composite/1705800070 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 423000 | -| `LeafCount` | *int* | :heavy_minus_sign: | N/A | 3 | -| `AddedAt` | *int* | :heavy_minus_sign: | N/A | 1705716458 | -| `UpdatedAt` | *int* | :heavy_minus_sign: | N/A | 1705800070 | \ No newline at end of file diff --git a/docs/Models/Requests/AddPlaylistContentsRequest.md b/docs/Models/Requests/AddPlaylistContentsRequest.md deleted file mode 100644 index acd256d..0000000 --- a/docs/Models/Requests/AddPlaylistContentsRequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | server://12345/com.plexapp.plugins.library/library/metadata/1 | -| `PlayQueueID` | *double* | :heavy_minus_sign: | 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 deleted file mode 100644 index d79b3cd..0000000 --- a/docs/Models/Requests/AddPlaylistContentsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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: | Playlist Updated | \ No newline at end of file diff --git a/docs/Models/Requests/AddPlaylistContentsResponseBody.md b/docs/Models/Requests/AddPlaylistContentsResponseBody.md deleted file mode 100644 index 04a778a..0000000 --- a/docs/Models/Requests/AddPlaylistContentsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# AddPlaylistContentsResponseBody - -Playlist Updated - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `MediaContainer` | [AddPlaylistContentsMediaContainer](../../Models/Requests/AddPlaylistContentsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/AddPlaylistItemsRequest.md b/docs/Models/Requests/AddPlaylistItemsRequest.md new file mode 100644 index 0000000..9a5ff17 --- /dev/null +++ b/docs/Models/Requests/AddPlaylistItemsRequest.md @@ -0,0 +1,21 @@ +# AddPlaylistItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistId` | *long* | :heavy_check_mark: | The ID of the playlist | | +| `Uri` | *string* | :heavy_minus_sign: | The content URI for the playlist. | | +| `PlayQueueID` | *long* | :heavy_minus_sign: | The play queue to add to a playlist. | | \ No newline at end of file diff --git a/docs/Models/Requests/AddPlaylistItemsResponse.md b/docs/Models/Requests/AddPlaylistItemsResponse.md new file mode 100644 index 0000000..0c5af28 --- /dev/null +++ b/docs/Models/Requests/AddPlaylistItemsResponse.md @@ -0,0 +1,11 @@ +# AddPlaylistItemsResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/AddProviderRequest.md b/docs/Models/Requests/AddProviderRequest.md new file mode 100644 index 0000000..51b065b --- /dev/null +++ b/docs/Models/Requests/AddProviderRequest.md @@ -0,0 +1,19 @@ +# AddProviderRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Url` | *string* | :heavy_check_mark: | The URL of the media provider to add. | | \ No newline at end of file diff --git a/docs/Models/Requests/AddProviderResponse.md b/docs/Models/Requests/AddProviderResponse.md new file mode 100644 index 0000000..ce7a6de --- /dev/null +++ b/docs/Models/Requests/AddProviderResponse.md @@ -0,0 +1,10 @@ +# AddProviderResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/AddSectionRequest.md b/docs/Models/Requests/AddSectionRequest.md new file mode 100644 index 0000000..c9892ee --- /dev/null +++ b/docs/Models/Requests/AddSectionRequest.md @@ -0,0 +1,28 @@ +# AddSectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Name` | *string* | :heavy_check_mark: | The name of the new section | | +| `Type` | *long* | :heavy_check_mark: | The type of library section | | +| `Scanner` | *string* | :heavy_minus_sign: | The scanner this section should use | | +| `Agent` | *string* | :heavy_check_mark: | The agent this section should use for metadata | | +| `MetadataAgentProviderGroupId` | *string* | :heavy_minus_sign: | The agent group id for this section | | +| `Language` | *string* | :heavy_check_mark: | The language of this section | | +| `Locations` | List<*string*> | :heavy_minus_sign: | The locations on disk to add to this section | [
"O:\\fatboy\\Media\\Ripped\\Music",
"O:\\fatboy\\Media\\My Music"
] | +| `Prefs` | [QueryParamPrefs](../../Models/Requests/QueryParamPrefs.md) | :heavy_minus_sign: | The preferences for this section | {
"collectionMode": 2,
"hidden": 0
} | +| `Relative` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | If set, paths are relative to `Media Upload` path | 1 | +| `ImportFromiTunes` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | If set, import media from iTunes. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/AddSectionResponse.md b/docs/Models/Requests/AddSectionResponse.md new file mode 100644 index 0000000..258019d --- /dev/null +++ b/docs/Models/Requests/AddSectionResponse.md @@ -0,0 +1,11 @@ +# AddSectionResponse + + +## 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 | +| `SlashGetResponses200` | [SlashGetResponses200](../../Models/Components/SlashGetResponses200.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/AddSubtitlesRequest.md b/docs/Models/Requests/AddSubtitlesRequest.md new file mode 100644 index 0000000..44d8e15 --- /dev/null +++ b/docs/Models/Requests/AddSubtitlesRequest.md @@ -0,0 +1,26 @@ +# AddSubtitlesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Title` | *string* | :heavy_minus_sign: | N/A | | +| `Language` | *string* | :heavy_minus_sign: | N/A | | +| `MediaItemID` | *long* | :heavy_minus_sign: | N/A | | +| `Url` | *string* | :heavy_minus_sign: | The URL of the subtitle. If not provided, the contents of the subtitle must be in the post body | | +| `Format` | *string* | :heavy_minus_sign: | N/A | | +| `Forced` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | N/A | 1 | +| `HearingImpaired` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/AddSubtitlesResponse.md b/docs/Models/Requests/AddSubtitlesResponse.md new file mode 100644 index 0000000..e212fe7 --- /dev/null +++ b/docs/Models/Requests/AddSubtitlesResponse.md @@ -0,0 +1,10 @@ +# AddSubtitlesResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/AddToPlayQueueRequest.md b/docs/Models/Requests/AddToPlayQueueRequest.md new file mode 100644 index 0000000..b5189ab --- /dev/null +++ b/docs/Models/Requests/AddToPlayQueueRequest.md @@ -0,0 +1,22 @@ +# AddToPlayQueueRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlayQueueId` | *long* | :heavy_check_mark: | The ID of the play queue. | | +| `Uri` | *string* | :heavy_minus_sign: | The content URI for what we're adding to the queue. | | +| `PlaylistID` | *string* | :heavy_minus_sign: | The ID of the playlist to add to the playQueue. | | +| `Next` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Play this item next (defaults to 0 - queueing at the end of manually queued items). | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/AddToPlayQueueResponse.md b/docs/Models/Requests/AddToPlayQueueResponse.md new file mode 100644 index 0000000..171c2f4 --- /dev/null +++ b/docs/Models/Requests/AddToPlayQueueResponse.md @@ -0,0 +1,11 @@ +# AddToPlayQueueResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/AddedQueueItems.md b/docs/Models/Requests/AddedQueueItems.md new file mode 100644 index 0000000..ccc92ba --- /dev/null +++ b/docs/Models/Requests/AddedQueueItems.md @@ -0,0 +1,9 @@ +# AddedQueueItems + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `Id` | *long* | :heavy_minus_sign: | The queue item id that was added or the existing one if an item already exists in this queue with the same parameters | +| `Key` | *string* | :heavy_minus_sign: | The key added to the queue | \ No newline at end of file diff --git a/docs/Models/Requests/AdvancedSubtitles.md b/docs/Models/Requests/AdvancedSubtitles.md new file mode 100644 index 0000000..f53e641 --- /dev/null +++ b/docs/Models/Requests/AdvancedSubtitles.md @@ -0,0 +1,13 @@ +# AdvancedSubtitles + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Auto` | auto | +| `Burn` | burn | +| `None` | none | +| `Sidecar` | sidecar | +| `Embedded` | embedded | +| `Segmented` | segmented | \ No newline at end of file diff --git a/docs/Models/Requests/AllLibraries.md b/docs/Models/Requests/AllLibraries.md deleted file mode 100644 index 393878a..0000000 --- a/docs/Models/Requests/AllLibraries.md +++ /dev/null @@ -1,11 +0,0 @@ -# AllLibraries - -Indicates if the user has access to all libraries. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/AllowCameraUpload.md b/docs/Models/Requests/AllowCameraUpload.md deleted file mode 100644 index b080e79..0000000 --- a/docs/Models/Requests/AllowCameraUpload.md +++ /dev/null @@ -1,11 +0,0 @@ -# AllowCameraUpload - -Indicates if the user is allowed to upload from a camera. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/AllowChannels.md b/docs/Models/Requests/AllowChannels.md deleted file mode 100644 index 7207328..0000000 --- a/docs/Models/Requests/AllowChannels.md +++ /dev/null @@ -1,11 +0,0 @@ -# AllowChannels - -Indicates if the user has access to channels. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/AllowSubtitleAdmin.md b/docs/Models/Requests/AllowSubtitleAdmin.md deleted file mode 100644 index 63bf969..0000000 --- a/docs/Models/Requests/AllowSubtitleAdmin.md +++ /dev/null @@ -1,11 +0,0 @@ -# AllowSubtitleAdmin - -Indicates if the user can manage subtitles. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/AllowSync.md b/docs/Models/Requests/AllowSync.md deleted file mode 100644 index 9255773..0000000 --- a/docs/Models/Requests/AllowSync.md +++ /dev/null @@ -1,11 +0,0 @@ -# AllowSync - -Indicates if the user is allowed to sync media. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/AllowTuners.md b/docs/Models/Requests/AllowTuners.md deleted file mode 100644 index fe810e4..0000000 --- a/docs/Models/Requests/AllowTuners.md +++ /dev/null @@ -1,11 +0,0 @@ -# AllowTuners - -Indicates if the user is allowed to use tuners. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/AnalyzeMetadataRequest.md b/docs/Models/Requests/AnalyzeMetadataRequest.md new file mode 100644 index 0000000..202b237 --- /dev/null +++ b/docs/Models/Requests/AnalyzeMetadataRequest.md @@ -0,0 +1,21 @@ +# AnalyzeMetadataRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `ThumbOffset` | *double* | :heavy_minus_sign: | Set the offset to be used for thumbnails | | +| `ArtOffset` | *double* | :heavy_minus_sign: | Set the offset to be used for artwork | | \ No newline at end of file diff --git a/docs/Models/Requests/AnalyzeMetadataResponse.md b/docs/Models/Requests/AnalyzeMetadataResponse.md new file mode 100644 index 0000000..a7b886d --- /dev/null +++ b/docs/Models/Requests/AnalyzeMetadataResponse.md @@ -0,0 +1,10 @@ +# AnalyzeMetadataResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/ApplyUpdatesRequest.md b/docs/Models/Requests/ApplyUpdatesRequest.md index e6a3492..89c5ddc 100644 --- a/docs/Models/Requests/ApplyUpdatesRequest.md +++ b/docs/Models/Requests/ApplyUpdatesRequest.md @@ -3,7 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `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 | 1 | -| `Skip` | [Skip](../../Models/Requests/Skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`. | 1 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Tonight` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install immediately. | 1 | +| `Skip` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The entry for this version will have the `state` set to `skipped`. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Args.md b/docs/Models/Requests/Args.md new file mode 100644 index 0000000..40841ae --- /dev/null +++ b/docs/Models/Requests/Args.md @@ -0,0 +1,9 @@ +# Args + +The new values for the metadata item + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/Attributes.md b/docs/Models/Requests/Attributes.md index 992dbbf..8fe3689 100644 --- a/docs/Models/Requests/Attributes.md +++ b/docs/Models/Requests/Attributes.md @@ -1,11 +1,9 @@ # Attributes -Attributes associated with the marker. +The attributes to assign to this marker ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | The identifier for the attributes. | 306970 | -| `Version` | *long* | :heavy_minus_sign: | The version number of the marker attributes. | 4 | \ No newline at end of file +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/AutoSelectSubtitle.md b/docs/Models/Requests/AutoSelectSubtitle.md deleted file mode 100644 index 2104db2..0000000 --- a/docs/Models/Requests/AutoSelectSubtitle.md +++ /dev/null @@ -1,11 +0,0 @@ -# AutoSelectSubtitle - -The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled) - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/AutocompleteRequest.md b/docs/Models/Requests/AutocompleteRequest.md new file mode 100644 index 0000000..b225b8b --- /dev/null +++ b/docs/Models/Requests/AutocompleteRequest.md @@ -0,0 +1,22 @@ +# AutocompleteRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | +| `Type` | *long* | :heavy_minus_sign: | Item type | | +| `FieldQuery` | *string* | :heavy_minus_sign: | The "field" stands in for any field, the value is a partial string for matching | | +| `MediaQuery` | [MediaQuery](../../Models/Components/MediaQuery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file diff --git a/docs/Models/Requests/AutocompleteResponse.md b/docs/Models/Requests/AutocompleteResponse.md new file mode 100644 index 0000000..386cd14 --- /dev/null +++ b/docs/Models/Requests/AutocompleteResponse.md @@ -0,0 +1,12 @@ +# AutocompleteResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Bandwidth.md b/docs/Models/Requests/Bandwidth.md new file mode 100644 index 0000000..c07fbac --- /dev/null +++ b/docs/Models/Requests/Bandwidth.md @@ -0,0 +1,10 @@ +# Bandwidth + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `BandwidthValue` | *long* | :heavy_minus_sign: | The bandwidth at this time in kbps | +| `Resolution` | *string* | :heavy_minus_sign: | The user-friendly resolution at this time | +| `Time` | *long* | :heavy_minus_sign: | Media playback time where this bandwidth started | \ No newline at end of file diff --git a/docs/Models/Requests/Bandwidths.md b/docs/Models/Requests/Bandwidths.md new file mode 100644 index 0000000..4efd93d --- /dev/null +++ b/docs/Models/Requests/Bandwidths.md @@ -0,0 +1,10 @@ +# Bandwidths + +A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `Bandwidth` | List<[Bandwidth](../../Models/Requests/Bandwidth.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Billing.md b/docs/Models/Requests/Billing.md deleted file mode 100644 index 8c4a046..0000000 --- a/docs/Models/Requests/Billing.md +++ /dev/null @@ -1,9 +0,0 @@ -# Billing - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `InternalPaymentMethod` | [InternalPaymentMethod](../../Models/Requests/InternalPaymentMethod.md) | :heavy_check_mark: | N/A | -| `PaymentMethodId` | *long* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ButlerTask.md b/docs/Models/Requests/ButlerTask.md index 522b2a0..be9141e 100644 --- a/docs/Models/Requests/ButlerTask.md +++ b/docs/Models/Requests/ButlerTask.md @@ -3,11 +3,11 @@ ## 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 +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `Description` | *string* | :heavy_minus_sign: | A user-friendly description of the task | +| `Enabled` | *bool* | :heavy_minus_sign: | Whether this task is enabled or not | +| `Interval` | *long* | :heavy_minus_sign: | The interval (in days) of when this task is run. A value of 1 is run every day, 7 is every week, etc. | +| `Name` | *string* | :heavy_minus_sign: | The name of the task | +| `ScheduleRandomized` | *bool* | :heavy_minus_sign: | Indicates whether the timing of the task is randomized within the butler interval | +| `Title` | *string* | :heavy_minus_sign: | A user-friendly title of the task | \ No newline at end of file diff --git a/docs/Models/Requests/CancelActivityRequest.md b/docs/Models/Requests/CancelActivityRequest.md new file mode 100644 index 0000000..db2c9fd --- /dev/null +++ b/docs/Models/Requests/CancelActivityRequest.md @@ -0,0 +1,19 @@ +# CancelActivityRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ActivityId` | *string* | :heavy_check_mark: | The UUID of the activity to cancel. | d6199ba1-fb5e-4cae-bf17-1a5369c1cf1e | \ No newline at end of file diff --git a/docs/Models/Requests/CancelActivityResponse.md b/docs/Models/Requests/CancelActivityResponse.md new file mode 100644 index 0000000..498f2e7 --- /dev/null +++ b/docs/Models/Requests/CancelActivityResponse.md @@ -0,0 +1,10 @@ +# CancelActivityResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/CancelGrabRequest.md b/docs/Models/Requests/CancelGrabRequest.md new file mode 100644 index 0000000..e443aa7 --- /dev/null +++ b/docs/Models/Requests/CancelGrabRequest.md @@ -0,0 +1,19 @@ +# CancelGrabRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `OperationId` | *string* | :heavy_check_mark: | The ID of the operation. | | \ No newline at end of file diff --git a/docs/Models/Requests/CancelGrabResponse.md b/docs/Models/Requests/CancelGrabResponse.md new file mode 100644 index 0000000..0202806 --- /dev/null +++ b/docs/Models/Requests/CancelGrabResponse.md @@ -0,0 +1,10 @@ +# CancelGrabResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/CancelRefreshRequest.md b/docs/Models/Requests/CancelRefreshRequest.md new file mode 100644 index 0000000..d59fa9c --- /dev/null +++ b/docs/Models/Requests/CancelRefreshRequest.md @@ -0,0 +1,19 @@ +# CancelRefreshRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/CancelRefreshResponse.md b/docs/Models/Requests/CancelRefreshResponse.md new file mode 100644 index 0000000..1086d99 --- /dev/null +++ b/docs/Models/Requests/CancelRefreshResponse.md @@ -0,0 +1,10 @@ +# CancelRefreshResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/CancelServerActivitiesRequest.md b/docs/Models/Requests/CancelServerActivitiesRequest.md deleted file mode 100644 index e306341..0000000 --- a/docs/Models/Requests/CancelServerActivitiesRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# CancelServerActivitiesRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | -| `ActivityUUID` | *string* | :heavy_check_mark: | The UUID of the activity to cancel. | 25b71ed5-0f9d-461c-baa7-d404e9e10d3e | \ No newline at end of file diff --git a/docs/Models/Requests/CancelServerActivitiesResponse.md b/docs/Models/Requests/CancelServerActivitiesResponse.md deleted file mode 100644 index 01fbdf1..0000000 --- a/docs/Models/Requests/CancelServerActivitiesResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/ChannelMapping.md b/docs/Models/Requests/ChannelMapping.md new file mode 100644 index 0000000..9673f87 --- /dev/null +++ b/docs/Models/Requests/ChannelMapping.md @@ -0,0 +1,9 @@ +# ChannelMapping + +The mapping of changes, passed as a map of device channel to lineup VCN. + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/ChannelMappingByKey.md b/docs/Models/Requests/ChannelMappingByKey.md new file mode 100644 index 0000000..0d81ecb --- /dev/null +++ b/docs/Models/Requests/ChannelMappingByKey.md @@ -0,0 +1,9 @@ +# ChannelMappingByKey + +The mapping of changes, passed as a map of device channel to lineup key. + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/Chapter.md b/docs/Models/Requests/Chapter.md deleted file mode 100644 index 572f3c1..0000000 --- a/docs/Models/Requests/Chapter.md +++ /dev/null @@ -1,15 +0,0 @@ -# Chapter - -The thumbnail for the chapter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | -| `Id` | *long* | :heavy_check_mark: | N/A | 4 | -| `Filter` | *string* | :heavy_check_mark: | N/A | thumb=4 | -| `Index` | *long* | :heavy_check_mark: | N/A | 1 | -| `StartTimeOffset` | *long* | :heavy_check_mark: | N/A | 0 | -| `EndTimeOffset` | *long* | :heavy_check_mark: | N/A | 100100 | -| `Thumb` | *string* | :heavy_check_mark: | N/A | /library/media/46883/chapterImages/1 | \ No newline at end of file diff --git a/docs/Models/Requests/CheckForUpdatesRequest.md b/docs/Models/Requests/CheckForUpdatesRequest.md deleted file mode 100644 index 336cc80..0000000 --- a/docs/Models/Requests/CheckForUpdatesRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# CheckForUpdatesRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| `Download` | [Download](../../Models/Requests/Download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/CheckForUpdatesResponse.md b/docs/Models/Requests/CheckForUpdatesResponse.md deleted file mode 100644 index f978f2b..0000000 --- a/docs/Models/Requests/CheckForUpdatesResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/CheckUpdatesRequest.md b/docs/Models/Requests/CheckUpdatesRequest.md new file mode 100644 index 0000000..ec0fda7 --- /dev/null +++ b/docs/Models/Requests/CheckUpdatesRequest.md @@ -0,0 +1,19 @@ +# CheckUpdatesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Download` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/CheckUpdatesResponse.md b/docs/Models/Requests/CheckUpdatesResponse.md new file mode 100644 index 0000000..963b998 --- /dev/null +++ b/docs/Models/Requests/CheckUpdatesResponse.md @@ -0,0 +1,10 @@ +# CheckUpdatesResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/ChromaSubsampling.md b/docs/Models/Requests/ChromaSubsampling.md new file mode 100644 index 0000000..f8fde26 --- /dev/null +++ b/docs/Models/Requests/ChromaSubsampling.md @@ -0,0 +1,18 @@ +# ChromaSubsampling + +Use the specified chroma subsambling. + - 0: 411 + - 1: 420 + - 2: 422 + - 3: 444 +Defaults to 3 (444) + + +## Values + +| Name | Value | +| ------- | ------- | +| `Zero` | 0 | +| `One` | 1 | +| `Two` | 2 | +| `Three` | 3 | \ No newline at end of file diff --git a/docs/Models/Requests/CleanBundlesResponse.md b/docs/Models/Requests/CleanBundlesResponse.md new file mode 100644 index 0000000..546644b --- /dev/null +++ b/docs/Models/Requests/CleanBundlesResponse.md @@ -0,0 +1,10 @@ +# CleanBundlesResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/ClearPlayQueueRequest.md b/docs/Models/Requests/ClearPlayQueueRequest.md new file mode 100644 index 0000000..8643ba5 --- /dev/null +++ b/docs/Models/Requests/ClearPlayQueueRequest.md @@ -0,0 +1,19 @@ +# ClearPlayQueueRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlayQueueId` | *long* | :heavy_check_mark: | The ID of the play queue. | | \ No newline at end of file diff --git a/docs/Models/Requests/ClearPlayQueueResponse.md b/docs/Models/Requests/ClearPlayQueueResponse.md new file mode 100644 index 0000000..c0e5483 --- /dev/null +++ b/docs/Models/Requests/ClearPlayQueueResponse.md @@ -0,0 +1,11 @@ +# ClearPlayQueueResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ClearPlaylistContentsRequest.md b/docs/Models/Requests/ClearPlaylistContentsRequest.md deleted file mode 100644 index 442096e..0000000 --- a/docs/Models/Requests/ClearPlaylistContentsRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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 deleted file mode 100644 index 1b033be..0000000 --- a/docs/Models/Requests/ClearPlaylistContentsResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/ClearPlaylistItemsRequest.md b/docs/Models/Requests/ClearPlaylistItemsRequest.md new file mode 100644 index 0000000..0d34973 --- /dev/null +++ b/docs/Models/Requests/ClearPlaylistItemsRequest.md @@ -0,0 +1,19 @@ +# ClearPlaylistItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistId` | *long* | :heavy_check_mark: | The ID of the playlist | | \ No newline at end of file diff --git a/docs/Models/Requests/ClearPlaylistItemsResponse.md b/docs/Models/Requests/ClearPlaylistItemsResponse.md new file mode 100644 index 0000000..a9e9791 --- /dev/null +++ b/docs/Models/Requests/ClearPlaylistItemsResponse.md @@ -0,0 +1,11 @@ +# ClearPlaylistItemsResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/Collection.md b/docs/Models/Requests/Collection.md deleted file mode 100644 index b58e7d3..0000000 --- a/docs/Models/Requests/Collection.md +++ /dev/null @@ -1,8 +0,0 @@ -# Collection - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `Tag` | *string* | :heavy_check_mark: | The user-made collection this media item belongs to | My Awesome Collection | \ No newline at end of file diff --git a/docs/Models/Requests/ComputeChannelMapChannelMapping.md b/docs/Models/Requests/ComputeChannelMapChannelMapping.md new file mode 100644 index 0000000..2aa4f6d --- /dev/null +++ b/docs/Models/Requests/ComputeChannelMapChannelMapping.md @@ -0,0 +1,11 @@ +# ComputeChannelMapChannelMapping + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `ChannelKey` | *string* | :heavy_minus_sign: | N/A | +| `DeviceIdentifier` | *string* | :heavy_minus_sign: | The channel description on the device | +| `Favorite` | *bool* | :heavy_minus_sign: | N/A | +| `LineupIdentifier` | *string* | :heavy_minus_sign: | The channel identifier in the lineup | \ No newline at end of file diff --git a/docs/Models/Requests/ComputeChannelMapMediaContainer.md b/docs/Models/Requests/ComputeChannelMapMediaContainer.md new file mode 100644 index 0000000..11bd64a --- /dev/null +++ b/docs/Models/Requests/ComputeChannelMapMediaContainer.md @@ -0,0 +1,17 @@ +# ComputeChannelMapMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `ChannelMapping` | List<[ComputeChannelMapChannelMapping](../../Models/Requests/ComputeChannelMapChannelMapping.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ComputeChannelMapRequest.md b/docs/Models/Requests/ComputeChannelMapRequest.md new file mode 100644 index 0000000..8ae877b --- /dev/null +++ b/docs/Models/Requests/ComputeChannelMapRequest.md @@ -0,0 +1,20 @@ +# ComputeChannelMapRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DeviceQueryParameter` | *string* | :heavy_check_mark: | The URI describing the device | | +| `Lineup` | *string* | :heavy_check_mark: | The URI describing the lineup | | \ No newline at end of file diff --git a/docs/Models/Requests/ComputeChannelMapResponse.md b/docs/Models/Requests/ComputeChannelMapResponse.md new file mode 100644 index 0000000..f2c9c95 --- /dev/null +++ b/docs/Models/Requests/ComputeChannelMapResponse.md @@ -0,0 +1,12 @@ +# ComputeChannelMapResponse + + +## 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` | [ComputeChannelMapResponseBody](../../Models/Requests/ComputeChannelMapResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ComputeChannelMapResponseBody.md b/docs/Models/Requests/ComputeChannelMapResponseBody.md new file mode 100644 index 0000000..0dfa7e7 --- /dev/null +++ b/docs/Models/Requests/ComputeChannelMapResponseBody.md @@ -0,0 +1,10 @@ +# ComputeChannelMapResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `MediaContainer` | [ComputeChannelMapMediaContainer](../../Models/Requests/ComputeChannelMapMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ConnectWebSocketRequest.md b/docs/Models/Requests/ConnectWebSocketRequest.md new file mode 100644 index 0000000..61b6087 --- /dev/null +++ b/docs/Models/Requests/ConnectWebSocketRequest.md @@ -0,0 +1,19 @@ +# ConnectWebSocketRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Filter` | List<*string*> | :heavy_minus_sign: | By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example:

- `filters=-log`: All event types except logs (the default).
- `filters=foo,bar`: Only the foo and bar event types.
- `filters=`: All events types.
- `filters=-foo,bar`: All event types except foo and bar.
| | \ No newline at end of file diff --git a/docs/Models/Requests/ConnectWebSocketResponse.md b/docs/Models/Requests/ConnectWebSocketResponse.md new file mode 100644 index 0000000..781b8e5 --- /dev/null +++ b/docs/Models/Requests/ConnectWebSocketResponse.md @@ -0,0 +1,11 @@ +# ConnectWebSocketResponse + + +## 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 | +| `Bytes` | *byte[]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/Connection.md b/docs/Models/Requests/Connection.md new file mode 100644 index 0000000..367575a --- /dev/null +++ b/docs/Models/Requests/Connection.md @@ -0,0 +1,13 @@ +# Connection + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `Address` | *string* | :heavy_minus_sign: | N/A | +| `Local` | *bool* | :heavy_minus_sign: | Indicates if the connection is the server's LAN address | +| `Port` | *long* | :heavy_minus_sign: | N/A | +| `Protocol` | *string* | :heavy_minus_sign: | N/A | +| `Relay` | *bool* | :heavy_minus_sign: | Indicates the connection is over a relayed connection | +| `Uri` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Connections.md b/docs/Models/Requests/Connections.md deleted file mode 100644 index b8c8319..0000000 --- a/docs/Models/Requests/Connections.md +++ /dev/null @@ -1,14 +0,0 @@ -# Connections - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | -| `Protocol` | [Protocol](../../Models/Requests/Protocol.md) | :heavy_check_mark: | The protocol used for the connection (http, https, etc) | http | -| `Address` | *string* | :heavy_check_mark: | The (ip) address or domain name used for the connection | | -| `Port` | *int* | :heavy_check_mark: | The port used for the connection | | -| `Uri` | *string* | :heavy_check_mark: | The full URI of the connection | | -| `Local` | *bool* | :heavy_check_mark: | If the connection is local address | | -| `Relay` | *bool* | :heavy_check_mark: | If the connection is relayed through plex.direct | | -| `IPv6` | *bool* | :heavy_check_mark: | If the connection is using IPv6 | | \ No newline at end of file diff --git a/docs/Models/Requests/Context.md b/docs/Models/Requests/Context.md deleted file mode 100644 index f1df3b5..0000000 --- a/docs/Models/Requests/Context.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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 index 2ec3364..ca40fd5 100644 --- a/docs/Models/Requests/Country.md +++ b/docs/Models/Requests/Country.md @@ -1,12 +1,15 @@ # Country -The filter query string for country media items. - ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | The unique identifier for the country.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `Tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | -| `Filter` | *string* | :heavy_check_mark: | N/A | country=19 | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `Code` | *string* | :heavy_minus_sign: | Three letter code | +| `Example` | *string* | :heavy_minus_sign: | N/A | +| `Flavor` | [Flavor](../../Models/Requests/Flavor.md) | :heavy_minus_sign: | - `0`: The country is divided into regions, and following the key will lead to a list of regions.
- `1`: The county is divided by postal codes, and an example code is returned in `example`.
- `2`: The country has a single postal code, returned in `example`.
| +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Language` | *string* | :heavy_minus_sign: | Three letter language code | +| `LanguageTitle` | *string* | :heavy_minus_sign: | The title of the language | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CreateCollectionRequest.md b/docs/Models/Requests/CreateCollectionRequest.md new file mode 100644 index 0000000..80a77ea --- /dev/null +++ b/docs/Models/Requests/CreateCollectionRequest.md @@ -0,0 +1,23 @@ +# CreateCollectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *string* | :heavy_check_mark: | The section where this collection will be created | | +| `Title` | *string* | :heavy_minus_sign: | The title to filter by or assign | | +| `Smart` | *bool* | :heavy_minus_sign: | Whether this is a smart collection/playlist | | +| `Uri` | *string* | :heavy_minus_sign: | The URI for processing the smart collection. Required for a smart collection | | +| `Type` | *long* | :heavy_minus_sign: | The metadata type to filter by | | \ No newline at end of file diff --git a/docs/Models/Requests/CreateCollectionResponse.md b/docs/Models/Requests/CreateCollectionResponse.md new file mode 100644 index 0000000..7ee5fb0 --- /dev/null +++ b/docs/Models/Requests/CreateCollectionResponse.md @@ -0,0 +1,11 @@ +# CreateCollectionResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/CreateCustomHubRequest.md b/docs/Models/Requests/CreateCustomHubRequest.md new file mode 100644 index 0000000..02077d9 --- /dev/null +++ b/docs/Models/Requests/CreateCustomHubRequest.md @@ -0,0 +1,23 @@ +# CreateCustomHubRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | The section ID for the hubs to reorder | | +| `MetadataItemId` | *long* | :heavy_check_mark: | The metadata item on which to base this hub. This must currently be a collection | | +| `PromotedToRecommended` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether this hub should be displayed in recommended | 1 | +| `PromotedToOwnHome` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether this hub should be displayed in admin's home | 1 | +| `PromotedToSharedHome` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether this hub should be displayed in shared user's home | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/CreateCustomHubResponse.md b/docs/Models/Requests/CreateCustomHubResponse.md new file mode 100644 index 0000000..5af6704 --- /dev/null +++ b/docs/Models/Requests/CreateCustomHubResponse.md @@ -0,0 +1,10 @@ +# CreateCustomHubResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/CreateDVRRequest.md b/docs/Models/Requests/CreateDVRRequest.md new file mode 100644 index 0000000..2f43ce0 --- /dev/null +++ b/docs/Models/Requests/CreateDVRRequest.md @@ -0,0 +1,21 @@ +# CreateDVRRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Lineup` | *string* | :heavy_minus_sign: | The EPG lineup. | lineup://tv.plex.providers.epg.onconnect/USA-HI51418-DEFAULT | +| `DeviceQueryParameter` | List<*string*> | :heavy_minus_sign: | The device. | device[]=device://tv.plex.grabbers.hdhomerun/1053C0CA | +| `Language` | *string* | :heavy_minus_sign: | The language. | eng | \ No newline at end of file diff --git a/docs/Models/Requests/CreateDVRResponse.md b/docs/Models/Requests/CreateDVRResponse.md new file mode 100644 index 0000000..8e89a10 --- /dev/null +++ b/docs/Models/Requests/CreateDVRResponse.md @@ -0,0 +1,12 @@ +# CreateDVRResponse + + +## 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 | +| `DvrRequestHandlerSlashGetResponses200` | [DvrRequestHandlerSlashGetResponses200](../../Models/Components/DvrRequestHandlerSlashGetResponses200.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CreateDownloadQueueMediaContainer.md b/docs/Models/Requests/CreateDownloadQueueMediaContainer.md new file mode 100644 index 0000000..68d12d6 --- /dev/null +++ b/docs/Models/Requests/CreateDownloadQueueMediaContainer.md @@ -0,0 +1,17 @@ +# CreateDownloadQueueMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `DownloadQueue` | List<[Models.Requests.DownloadQueue](../../Models/Requests/DownloadQueue.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CreateDownloadQueueResponse.md b/docs/Models/Requests/CreateDownloadQueueResponse.md new file mode 100644 index 0000000..0077976 --- /dev/null +++ b/docs/Models/Requests/CreateDownloadQueueResponse.md @@ -0,0 +1,11 @@ +# CreateDownloadQueueResponse + + +## 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` | [CreateDownloadQueueResponseBody](../../Models/Requests/CreateDownloadQueueResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/CreateDownloadQueueResponseBody.md b/docs/Models/Requests/CreateDownloadQueueResponseBody.md new file mode 100644 index 0000000..e97e8fc --- /dev/null +++ b/docs/Models/Requests/CreateDownloadQueueResponseBody.md @@ -0,0 +1,10 @@ +# CreateDownloadQueueResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `MediaContainer` | [CreateDownloadQueueMediaContainer](../../Models/Requests/CreateDownloadQueueMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CreateMarkerMediaContainer.md b/docs/Models/Requests/CreateMarkerMediaContainer.md new file mode 100644 index 0000000..f8e693d --- /dev/null +++ b/docs/Models/Requests/CreateMarkerMediaContainer.md @@ -0,0 +1,23 @@ +# CreateMarkerMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Color` | *string* | :heavy_minus_sign: | N/A | +| `EndTimeOffset` | *long* | :heavy_minus_sign: | N/A | +| `Id` | *long* | :heavy_minus_sign: | N/A | +| `StartTimeOffset` | *long* | :heavy_minus_sign: | N/A | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | [CreateMarkerType](../../Models/Requests/CreateMarkerType.md) | :heavy_minus_sign: | N/A | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CreateMarkerRequest.md b/docs/Models/Requests/CreateMarkerRequest.md new file mode 100644 index 0000000..78dd6e4 --- /dev/null +++ b/docs/Models/Requests/CreateMarkerRequest.md @@ -0,0 +1,23 @@ +# CreateMarkerRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Type` | *long* | :heavy_check_mark: | The type of marker to edit/create | | +| `StartTimeOffset` | *long* | :heavy_check_mark: | The start time of the marker | | +| `EndTimeOffset` | *long* | :heavy_minus_sign: | The end time of the marker | | +| `Attributes` | [Attributes](../../Models/Requests/Attributes.md) | :heavy_minus_sign: | The attributes to assign to this marker | {
"title": "My favorite spot"
} | \ No newline at end of file diff --git a/docs/Models/Requests/CreateMarkerResponse.md b/docs/Models/Requests/CreateMarkerResponse.md new file mode 100644 index 0000000..195678d --- /dev/null +++ b/docs/Models/Requests/CreateMarkerResponse.md @@ -0,0 +1,11 @@ +# CreateMarkerResponse + + +## 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` | [CreateMarkerResponseBody](../../Models/Requests/CreateMarkerResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/CreateMarkerResponseBody.md b/docs/Models/Requests/CreateMarkerResponseBody.md new file mode 100644 index 0000000..800162b --- /dev/null +++ b/docs/Models/Requests/CreateMarkerResponseBody.md @@ -0,0 +1,10 @@ +# CreateMarkerResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `MediaContainer` | [CreateMarkerMediaContainer](../../Models/Requests/CreateMarkerMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CreateMarkerType.md b/docs/Models/Requests/CreateMarkerType.md new file mode 100644 index 0000000..30f1670 --- /dev/null +++ b/docs/Models/Requests/CreateMarkerType.md @@ -0,0 +1,12 @@ +# CreateMarkerType + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Intro` | intro | +| `Commercial` | commercial | +| `Bookmark` | bookmark | +| `Resume` | resume | +| `Credit` | credit | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlayQueueMediaContainer.md b/docs/Models/Requests/CreatePlayQueueMediaContainer.md new file mode 100644 index 0000000..1bc8626 --- /dev/null +++ b/docs/Models/Requests/CreatePlayQueueMediaContainer.md @@ -0,0 +1,25 @@ +# CreatePlayQueueMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `PlayQueueID` | *long* | :heavy_minus_sign: | The ID of the play queue, which is used in subsequent requests. | +| `PlayQueueLastAddedItemID` | *string* | :heavy_minus_sign: | Defines where the "Up Next" region starts | +| `PlayQueueSelectedItemID` | *long* | :heavy_minus_sign: | The queue item ID of the currently selected item. | +| `PlayQueueSelectedItemOffset` | *long* | :heavy_minus_sign: | The offset of the selected item in the play queue, from the beginning of the queue. | +| `PlayQueueSelectedMetadataItemID` | *long* | :heavy_minus_sign: | The metadata item ID of the currently selected item (matches `ratingKey` attribute in metadata item if the media provider is a library). | +| `PlayQueueShuffled` | *bool* | :heavy_minus_sign: | Whether or not the queue is shuffled. | +| `PlayQueueSourceURI` | *string* | :heavy_minus_sign: | The original URI used to create the play queue. | +| `PlayQueueTotalCount` | *long* | :heavy_minus_sign: | The total number of items in the play queue. | +| `PlayQueueVersion` | *long* | :heavy_minus_sign: | The version of the play queue. It increments every time a change is made to the play queue to assist clients in knowing when to refresh. | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlayQueueRequest.md b/docs/Models/Requests/CreatePlayQueueRequest.md new file mode 100644 index 0000000..7c7bb48 --- /dev/null +++ b/docs/Models/Requests/CreatePlayQueueRequest.md @@ -0,0 +1,28 @@ +# CreatePlayQueueRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Uri` | *string* | :heavy_minus_sign: | The content URI for what we're playing. | | +| `PlaylistID` | *long* | :heavy_minus_sign: | the ID of the playlist we're playing. | | +| `Type` | [Models.Requests.Type](../../Models/Requests/Type.md) | :heavy_check_mark: | The type of play queue to create | | +| `Key` | *string* | :heavy_minus_sign: | The key of the first item to play, defaults to the first in the play queue. | | +| `Shuffle` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether to shuffle the playlist, defaults to 0. | 1 | +| `Repeat` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | If the PQ is bigger than the window, fill any empty space with wraparound items, defaults to 0. | 1 | +| `Continuous` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether to create a continuous play queue (e.g. from an episode), defaults to 0. | 1 | +| `ExtrasPrefixCount` | *long* | :heavy_minus_sign: | Number of trailers to prepend a movie with not including the pre-roll. If omitted the pre-roll will not be returned in the play queue. When resuming a movie `extrasPrefixCount` should be omitted as a parameter instead of passing 0. | | +| `Recursive` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Only applies to queues of type photo, whether to retrieve all descendent photos from an album or section, defaults to 1. | 1 | +| `OnDeck` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Only applies to queues of type show or seasons, whether to return a queue that is started on the On Deck episode if one exists. Otherwise begins the play queue on the beginning of the show or season. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlayQueueResponse.md b/docs/Models/Requests/CreatePlayQueueResponse.md new file mode 100644 index 0000000..c24deb0 --- /dev/null +++ b/docs/Models/Requests/CreatePlayQueueResponse.md @@ -0,0 +1,12 @@ +# CreatePlayQueueResponse + + +## 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` | [CreatePlayQueueResponseBody](../../Models/Requests/CreatePlayQueueResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlayQueueResponseBody.md b/docs/Models/Requests/CreatePlayQueueResponseBody.md new file mode 100644 index 0000000..ecf89d8 --- /dev/null +++ b/docs/Models/Requests/CreatePlayQueueResponseBody.md @@ -0,0 +1,10 @@ +# CreatePlayQueueResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `MediaContainer` | [CreatePlayQueueMediaContainer](../../Models/Requests/CreatePlayQueueMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlaylistMediaContainer.md b/docs/Models/Requests/CreatePlaylistMediaContainer.md deleted file mode 100644 index f039a9b..0000000 --- a/docs/Models/Requests/CreatePlaylistMediaContainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# CreatePlaylistMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 7 | -| `Metadata` | List<[CreatePlaylistMetadata](../../Models/Requests/CreatePlaylistMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlaylistMetadata.md b/docs/Models/Requests/CreatePlaylistMetadata.md deleted file mode 100644 index 843ac2a..0000000 --- a/docs/Models/Requests/CreatePlaylistMetadata.md +++ /dev/null @@ -1,23 +0,0 @@ -# CreatePlaylistMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 96 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /playlists/96/items | -| `Guid` | *string* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55 | -| `Type` | *string* | :heavy_minus_sign: | N/A | playlist | -| `Title` | *string* | :heavy_minus_sign: | N/A | A Great Playlist | -| `Summary` | *string* | :heavy_minus_sign: | N/A | What a great playlist | -| `Smart` | *bool* | :heavy_minus_sign: | N/A | false | -| `PlaylistType` | *string* | :heavy_minus_sign: | N/A | video | -| `Icon` | *string* | :heavy_minus_sign: | N/A | playlist://image.smart | -| `ViewCount` | *int* | :heavy_minus_sign: | N/A | 1 | -| `LastViewedAt` | *int* | :heavy_minus_sign: | N/A | 1705719589 | -| `LeafCount` | *int* | :heavy_minus_sign: | N/A | 1 | -| `AddedAt` | *int* | :heavy_minus_sign: | N/A | 1705719589 | -| `UpdatedAt` | *int* | :heavy_minus_sign: | N/A | 1705724593 | -| `Composite` | *string* | :heavy_minus_sign: | N/A | /playlists/96/composite/1705724593 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 141000 | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlaylistQueryParamType.md b/docs/Models/Requests/CreatePlaylistQueryParamType.md deleted file mode 100644 index 5d1ab60..0000000 --- a/docs/Models/Requests/CreatePlaylistQueryParamType.md +++ /dev/null @@ -1,12 +0,0 @@ -# CreatePlaylistQueryParamType - -type of playlist to create - - -## Values - -| Name | Value | -| ------- | ------- | -| `Audio` | audio | -| `Video` | video | -| `Photo` | photo | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlaylistRequest.md b/docs/Models/Requests/CreatePlaylistRequest.md index 68f8fd0..313ed3c 100644 --- a/docs/Models/Requests/CreatePlaylistRequest.md +++ b/docs/Models/Requests/CreatePlaylistRequest.md @@ -3,10 +3,18 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `Title` | *string* | :heavy_check_mark: | name of the playlist | -| `Type` | [CreatePlaylistQueryParamType](../../Models/Requests/CreatePlaylistQueryParamType.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_check_mark: | 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 +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Uri` | *string* | :heavy_minus_sign: | The content URI for what we're playing (e.g. `library://...`). | | +| `PlayQueueID` | *long* | :heavy_minus_sign: | To create a playlist from an existing play queue. | | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlaylistResponse.md b/docs/Models/Requests/CreatePlaylistResponse.md index 21fdd8e..dadb544 100644 --- a/docs/Models/Requests/CreatePlaylistResponse.md +++ b/docs/Models/Requests/CreatePlaylistResponse.md @@ -8,4 +8,4 @@ | `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: | returns all playlists | \ No newline at end of file +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/CreatePlaylistResponseBody.md b/docs/Models/Requests/CreatePlaylistResponseBody.md deleted file mode 100644 index bf3e855..0000000 --- a/docs/Models/Requests/CreatePlaylistResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# CreatePlaylistResponseBody - -returns all playlists - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `MediaContainer` | [CreatePlaylistMediaContainer](../../Models/Requests/CreatePlaylistMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CreateSubscriptionMediaContainer.md b/docs/Models/Requests/CreateSubscriptionMediaContainer.md new file mode 100644 index 0000000..2eec76f --- /dev/null +++ b/docs/Models/Requests/CreateSubscriptionMediaContainer.md @@ -0,0 +1,17 @@ +# CreateSubscriptionMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `MediaSubscription` | List<[Models.Components.MediaSubscription](../../Models/Components/MediaSubscription.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CreateSubscriptionQueryParamPrefs.md b/docs/Models/Requests/CreateSubscriptionQueryParamPrefs.md new file mode 100644 index 0000000..b1cba5d --- /dev/null +++ b/docs/Models/Requests/CreateSubscriptionQueryParamPrefs.md @@ -0,0 +1,9 @@ +# CreateSubscriptionQueryParamPrefs + +Subscription preferences. + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/CreateSubscriptionRequest.md b/docs/Models/Requests/CreateSubscriptionRequest.md new file mode 100644 index 0000000..51df373 --- /dev/null +++ b/docs/Models/Requests/CreateSubscriptionRequest.md @@ -0,0 +1,24 @@ +# CreateSubscriptionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `TargetLibrarySectionID` | *long* | :heavy_minus_sign: | The library section into which we'll grab the media. Not actually required when the subscription is to a playlist. | 1 | +| `TargetSectionLocationID` | *long* | :heavy_minus_sign: | The section location into which to grab. | 3 | +| `Type` | *long* | :heavy_minus_sign: | The type of the thing we're subscribing too (e.g. show, season). | 2 | +| `Hints` | [Hints](../../Models/Requests/Hints.md) | :heavy_minus_sign: | Hints describing what we're looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote. | {
"title": "Family Guy"
} | +| `Prefs` | [CreateSubscriptionQueryParamPrefs](../../Models/Requests/CreateSubscriptionQueryParamPrefs.md) | :heavy_minus_sign: | Subscription preferences. | {
"minVideoQuality": 720
} | +| `Params` | [Params](../../Models/Requests/Params.md) | :heavy_minus_sign: | Subscription parameters.
- `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into
- `source`: Required for downloads to indicate the source of the downloaded content.
| {
"mediaProviderID": 1
} | \ No newline at end of file diff --git a/docs/Models/Requests/CreateSubscriptionResponse.md b/docs/Models/Requests/CreateSubscriptionResponse.md new file mode 100644 index 0000000..ad8fcec --- /dev/null +++ b/docs/Models/Requests/CreateSubscriptionResponse.md @@ -0,0 +1,12 @@ +# CreateSubscriptionResponse + + +## 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` | [CreateSubscriptionResponseBody](../../Models/Requests/CreateSubscriptionResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/CreateSubscriptionResponseBody.md b/docs/Models/Requests/CreateSubscriptionResponseBody.md new file mode 100644 index 0000000..1cbb4fb --- /dev/null +++ b/docs/Models/Requests/CreateSubscriptionResponseBody.md @@ -0,0 +1,10 @@ +# CreateSubscriptionResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `MediaContainer` | [CreateSubscriptionMediaContainer](../../Models/Requests/CreateSubscriptionMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/DecisionResult.md b/docs/Models/Requests/DecisionResult.md new file mode 100644 index 0000000..6a8950d --- /dev/null +++ b/docs/Models/Requests/DecisionResult.md @@ -0,0 +1,16 @@ +# DecisionResult + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `AvailableBandwidth` | *long* | :heavy_minus_sign: | The maximum bitrate set when item was added | +| `DirectPlayDecisionCode` | *long* | :heavy_minus_sign: | N/A | +| `DirectPlayDecisionText` | *string* | :heavy_minus_sign: | N/A | +| `GeneralDecisionCode` | *long* | :heavy_minus_sign: | N/A | +| `GeneralDecisionText` | *string* | :heavy_minus_sign: | N/A | +| `MdeDecisionCode` | *long* | :heavy_minus_sign: | The code indicating the status of evaluation of playback when client indicates `hasMDE=1` | +| `MdeDecisionText` | *string* | :heavy_minus_sign: | Descriptive text for the above code | +| `TranscodeDecisionCode` | *long* | :heavy_minus_sign: | N/A | +| `TranscodeDecisionText` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/DefaultDirection.md b/docs/Models/Requests/DefaultDirection.md deleted file mode 100644 index f0d9651..0000000 --- a/docs/Models/Requests/DefaultDirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# DefaultDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Ascending` | asc | -| `Descending` | desc | \ No newline at end of file diff --git a/docs/Models/Requests/DefaultSubtitleAccessibility.md b/docs/Models/Requests/DefaultSubtitleAccessibility.md deleted file mode 100644 index 592d982..0000000 --- a/docs/Models/Requests/DefaultSubtitleAccessibility.md +++ /dev/null @@ -1,11 +0,0 @@ -# DefaultSubtitleAccessibility - -The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles) - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/DefaultSubtitleForced.md b/docs/Models/Requests/DefaultSubtitleForced.md deleted file mode 100644 index 6270cf9..0000000 --- a/docs/Models/Requests/DefaultSubtitleForced.md +++ /dev/null @@ -1,11 +0,0 @@ -# DefaultSubtitleForced - -The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles) - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteCachesResponse.md b/docs/Models/Requests/DeleteCachesResponse.md new file mode 100644 index 0000000..eb4e19e --- /dev/null +++ b/docs/Models/Requests/DeleteCachesResponse.md @@ -0,0 +1,10 @@ +# DeleteCachesResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteCollectionItemRequest.md b/docs/Models/Requests/DeleteCollectionItemRequest.md new file mode 100644 index 0000000..aa3166c --- /dev/null +++ b/docs/Models/Requests/DeleteCollectionItemRequest.md @@ -0,0 +1,20 @@ +# DeleteCollectionItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `CollectionId` | *long* | :heavy_check_mark: | The collection id | | +| `ItemId` | *long* | :heavy_check_mark: | The item to delete | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteCollectionItemResponse.md b/docs/Models/Requests/DeleteCollectionItemResponse.md new file mode 100644 index 0000000..4672ba2 --- /dev/null +++ b/docs/Models/Requests/DeleteCollectionItemResponse.md @@ -0,0 +1,11 @@ +# DeleteCollectionItemResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteCollectionRequest.md b/docs/Models/Requests/DeleteCollectionRequest.md new file mode 100644 index 0000000..f01e12a --- /dev/null +++ b/docs/Models/Requests/DeleteCollectionRequest.md @@ -0,0 +1,20 @@ +# DeleteCollectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | +| `CollectionId` | *long* | :heavy_check_mark: | Collection Id | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteCollectionResponse.md b/docs/Models/Requests/DeleteCollectionResponse.md new file mode 100644 index 0000000..4714337 --- /dev/null +++ b/docs/Models/Requests/DeleteCollectionResponse.md @@ -0,0 +1,10 @@ +# DeleteCollectionResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteCustomHubRequest.md b/docs/Models/Requests/DeleteCustomHubRequest.md new file mode 100644 index 0000000..3959883 --- /dev/null +++ b/docs/Models/Requests/DeleteCustomHubRequest.md @@ -0,0 +1,20 @@ +# DeleteCustomHubRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | The section ID for the hubs to change | | +| `Identifier` | *string* | :heavy_check_mark: | The identifier of the hub to change | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteCustomHubResponse.md b/docs/Models/Requests/DeleteCustomHubResponse.md new file mode 100644 index 0000000..e844cc5 --- /dev/null +++ b/docs/Models/Requests/DeleteCustomHubResponse.md @@ -0,0 +1,10 @@ +# DeleteCustomHubResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteDVRRequest.md b/docs/Models/Requests/DeleteDVRRequest.md new file mode 100644 index 0000000..7ac3544 --- /dev/null +++ b/docs/Models/Requests/DeleteDVRRequest.md @@ -0,0 +1,19 @@ +# DeleteDVRRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DvrId` | *long* | :heavy_check_mark: | The ID of the DVR. | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteDVRResponse.md b/docs/Models/Requests/DeleteDVRResponse.md new file mode 100644 index 0000000..00022ee --- /dev/null +++ b/docs/Models/Requests/DeleteDVRResponse.md @@ -0,0 +1,10 @@ +# DeleteDVRResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteHistoryRequest.md b/docs/Models/Requests/DeleteHistoryRequest.md new file mode 100644 index 0000000..b86c1f2 --- /dev/null +++ b/docs/Models/Requests/DeleteHistoryRequest.md @@ -0,0 +1,19 @@ +# DeleteHistoryRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `HistoryId` | *long* | :heavy_check_mark: | The id of the history item (the `historyKey` from above) | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteHistoryResponse.md b/docs/Models/Requests/DeleteHistoryResponse.md new file mode 100644 index 0000000..342d205 --- /dev/null +++ b/docs/Models/Requests/DeleteHistoryResponse.md @@ -0,0 +1,12 @@ +# DeleteHistoryResponse + + +## 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 | +| `MediaContainer` | [Models.Components.MediaContainer](../../Models/Components/MediaContainer.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteIndexesRequest.md b/docs/Models/Requests/DeleteIndexesRequest.md new file mode 100644 index 0000000..41772aa --- /dev/null +++ b/docs/Models/Requests/DeleteIndexesRequest.md @@ -0,0 +1,19 @@ +# DeleteIndexesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteIndexesResponse.md b/docs/Models/Requests/DeleteIndexesResponse.md new file mode 100644 index 0000000..fbbfb0e --- /dev/null +++ b/docs/Models/Requests/DeleteIndexesResponse.md @@ -0,0 +1,10 @@ +# DeleteIndexesResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteIntrosRequest.md b/docs/Models/Requests/DeleteIntrosRequest.md new file mode 100644 index 0000000..20ca5f8 --- /dev/null +++ b/docs/Models/Requests/DeleteIntrosRequest.md @@ -0,0 +1,19 @@ +# DeleteIntrosRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteIntrosResponse.md b/docs/Models/Requests/DeleteIntrosResponse.md new file mode 100644 index 0000000..ac7111a --- /dev/null +++ b/docs/Models/Requests/DeleteIntrosResponse.md @@ -0,0 +1,10 @@ +# DeleteIntrosResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLibraryRequest.md b/docs/Models/Requests/DeleteLibraryRequest.md deleted file mode 100644 index c58fde2..0000000 --- a/docs/Models/Requests/DeleteLibraryRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# DeleteLibraryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLibraryResponse.md b/docs/Models/Requests/DeleteLibraryResponse.md deleted file mode 100644 index 9e950ab..0000000 --- a/docs/Models/Requests/DeleteLibraryResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLibrarySectionRequest.md b/docs/Models/Requests/DeleteLibrarySectionRequest.md new file mode 100644 index 0000000..d2d3751 --- /dev/null +++ b/docs/Models/Requests/DeleteLibrarySectionRequest.md @@ -0,0 +1,20 @@ +# DeleteLibrarySectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *string* | :heavy_check_mark: | The section identifier | | +| `Async` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | If set, response will return an activity with the actual deletion process. Otherwise request will return when deletion is complete | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLibrarySectionResponse.md b/docs/Models/Requests/DeleteLibrarySectionResponse.md new file mode 100644 index 0000000..9511400 --- /dev/null +++ b/docs/Models/Requests/DeleteLibrarySectionResponse.md @@ -0,0 +1,10 @@ +# DeleteLibrarySectionResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLineupDVR.md b/docs/Models/Requests/DeleteLineupDVR.md new file mode 100644 index 0000000..5c1a1a2 --- /dev/null +++ b/docs/Models/Requests/DeleteLineupDVR.md @@ -0,0 +1,12 @@ +# DeleteLineupDVR + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Device` | List<[Models.Components.Device](../../Models/Components/Device.md)> | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Language` | *string* | :heavy_minus_sign: | N/A | +| `Lineup` | *string* | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLineupDVRsMediaContainer.md b/docs/Models/Requests/DeleteLineupDVRsMediaContainer.md new file mode 100644 index 0000000..a773b45 --- /dev/null +++ b/docs/Models/Requests/DeleteLineupDVRsMediaContainer.md @@ -0,0 +1,17 @@ +# DeleteLineupDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Status` | *long* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLineupMediaContainer.md b/docs/Models/Requests/DeleteLineupMediaContainer.md new file mode 100644 index 0000000..0a009b4 --- /dev/null +++ b/docs/Models/Requests/DeleteLineupMediaContainer.md @@ -0,0 +1,9 @@ +# DeleteLineupMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `MediaContainer` | [DeleteLineupDVRsMediaContainer](../../Models/Requests/DeleteLineupDVRsMediaContainer.md) | :heavy_minus_sign: | N/A | +| `Dvr` | List<[DeleteLineupDVR](../../Models/Requests/DeleteLineupDVR.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLineupRequest.md b/docs/Models/Requests/DeleteLineupRequest.md new file mode 100644 index 0000000..dac31b0 --- /dev/null +++ b/docs/Models/Requests/DeleteLineupRequest.md @@ -0,0 +1,20 @@ +# DeleteLineupRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DvrId` | *long* | :heavy_check_mark: | The ID of the DVR. | | +| `Lineup` | *string* | :heavy_check_mark: | The lineup to delete | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLineupResponse.md b/docs/Models/Requests/DeleteLineupResponse.md new file mode 100644 index 0000000..36cfe7f --- /dev/null +++ b/docs/Models/Requests/DeleteLineupResponse.md @@ -0,0 +1,12 @@ +# DeleteLineupResponse + + +## 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` | [DeleteLineupResponseBody](../../Models/Requests/DeleteLineupResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteLineupResponseBody.md b/docs/Models/Requests/DeleteLineupResponseBody.md new file mode 100644 index 0000000..01178b0 --- /dev/null +++ b/docs/Models/Requests/DeleteLineupResponseBody.md @@ -0,0 +1,10 @@ +# DeleteLineupResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `MediaContainer` | [DeleteLineupMediaContainer](../../Models/Requests/DeleteLineupMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteMarkerRequest.md b/docs/Models/Requests/DeleteMarkerRequest.md new file mode 100644 index 0000000..a24e7cb --- /dev/null +++ b/docs/Models/Requests/DeleteMarkerRequest.md @@ -0,0 +1,20 @@ +# DeleteMarkerRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Marker` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteMarkerResponse.md b/docs/Models/Requests/DeleteMarkerResponse.md new file mode 100644 index 0000000..17a18c8 --- /dev/null +++ b/docs/Models/Requests/DeleteMarkerResponse.md @@ -0,0 +1,10 @@ +# DeleteMarkerResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteMediaItemRequest.md b/docs/Models/Requests/DeleteMediaItemRequest.md new file mode 100644 index 0000000..99f14f8 --- /dev/null +++ b/docs/Models/Requests/DeleteMediaItemRequest.md @@ -0,0 +1,21 @@ +# DeleteMediaItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `MediaItem` | *string* | :heavy_check_mark: | N/A | | +| `Proxy` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteMediaItemResponse.md b/docs/Models/Requests/DeleteMediaItemResponse.md new file mode 100644 index 0000000..ba61133 --- /dev/null +++ b/docs/Models/Requests/DeleteMediaItemResponse.md @@ -0,0 +1,10 @@ +# DeleteMediaItemResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteMediaProviderRequest.md b/docs/Models/Requests/DeleteMediaProviderRequest.md new file mode 100644 index 0000000..45603f3 --- /dev/null +++ b/docs/Models/Requests/DeleteMediaProviderRequest.md @@ -0,0 +1,19 @@ +# DeleteMediaProviderRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Provider` | *string* | :heavy_check_mark: | The ID of the media provider to delete | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteMediaProviderResponse.md b/docs/Models/Requests/DeleteMediaProviderResponse.md new file mode 100644 index 0000000..bc174e8 --- /dev/null +++ b/docs/Models/Requests/DeleteMediaProviderResponse.md @@ -0,0 +1,10 @@ +# DeleteMediaProviderResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteMetadataItemRequest.md b/docs/Models/Requests/DeleteMetadataItemRequest.md new file mode 100644 index 0000000..11ad32a --- /dev/null +++ b/docs/Models/Requests/DeleteMetadataItemRequest.md @@ -0,0 +1,20 @@ +# DeleteMetadataItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Proxy` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteMetadataItemResponse.md b/docs/Models/Requests/DeleteMetadataItemResponse.md new file mode 100644 index 0000000..91b08cf --- /dev/null +++ b/docs/Models/Requests/DeleteMetadataItemResponse.md @@ -0,0 +1,10 @@ +# DeleteMetadataItemResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeletePlayQueueItemRequest.md b/docs/Models/Requests/DeletePlayQueueItemRequest.md new file mode 100644 index 0000000..a68d965 --- /dev/null +++ b/docs/Models/Requests/DeletePlayQueueItemRequest.md @@ -0,0 +1,20 @@ +# DeletePlayQueueItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlayQueueId` | *long* | :heavy_check_mark: | The ID of the play queue. | | +| `PlayQueueItemId` | *long* | :heavy_check_mark: | The play queue item ID to delete. | | \ No newline at end of file diff --git a/docs/Models/Requests/DeletePlayQueueItemResponse.md b/docs/Models/Requests/DeletePlayQueueItemResponse.md new file mode 100644 index 0000000..ef5381a --- /dev/null +++ b/docs/Models/Requests/DeletePlayQueueItemResponse.md @@ -0,0 +1,11 @@ +# DeletePlayQueueItemResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/DeletePlaylistItemRequest.md b/docs/Models/Requests/DeletePlaylistItemRequest.md new file mode 100644 index 0000000..600b4e7 --- /dev/null +++ b/docs/Models/Requests/DeletePlaylistItemRequest.md @@ -0,0 +1,20 @@ +# DeletePlaylistItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistId` | *long* | :heavy_check_mark: | The ID of the playlist | | +| `GeneratorId` | *long* | :heavy_check_mark: | The generator item ID to delete. | | \ No newline at end of file diff --git a/docs/Models/Requests/DeletePlaylistItemResponse.md b/docs/Models/Requests/DeletePlaylistItemResponse.md new file mode 100644 index 0000000..08a713f --- /dev/null +++ b/docs/Models/Requests/DeletePlaylistItemResponse.md @@ -0,0 +1,11 @@ +# DeletePlaylistItemResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/DeletePlaylistRequest.md b/docs/Models/Requests/DeletePlaylistRequest.md index a825f8e..22c304d 100644 --- a/docs/Models/Requests/DeletePlaylistRequest.md +++ b/docs/Models/Requests/DeletePlaylistRequest.md @@ -3,6 +3,17 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------- | ---------------------- | ---------------------- | ---------------------- | -| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistId` | *long* | :heavy_check_mark: | The ID of the playlist | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteStreamRequest.md b/docs/Models/Requests/DeleteStreamRequest.md new file mode 100644 index 0000000..b30d588 --- /dev/null +++ b/docs/Models/Requests/DeleteStreamRequest.md @@ -0,0 +1,20 @@ +# DeleteStreamRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `StreamId` | *long* | :heavy_check_mark: | The id of the stream | | +| `Ext` | *string* | :heavy_check_mark: | This is not a part of this endpoint but documented here to satisfy OpenAPI | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteStreamResponse.md b/docs/Models/Requests/DeleteStreamResponse.md new file mode 100644 index 0000000..aef4e26 --- /dev/null +++ b/docs/Models/Requests/DeleteStreamResponse.md @@ -0,0 +1,10 @@ +# DeleteStreamResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteSubscriptionRequest.md b/docs/Models/Requests/DeleteSubscriptionRequest.md new file mode 100644 index 0000000..d59bc98 --- /dev/null +++ b/docs/Models/Requests/DeleteSubscriptionRequest.md @@ -0,0 +1,19 @@ +# DeleteSubscriptionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SubscriptionId` | *long* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/DeleteSubscriptionResponse.md b/docs/Models/Requests/DeleteSubscriptionResponse.md new file mode 100644 index 0000000..874569e --- /dev/null +++ b/docs/Models/Requests/DeleteSubscriptionResponse.md @@ -0,0 +1,10 @@ +# DeleteSubscriptionResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DetectAdsRequest.md b/docs/Models/Requests/DetectAdsRequest.md new file mode 100644 index 0000000..8e9f38b --- /dev/null +++ b/docs/Models/Requests/DetectAdsRequest.md @@ -0,0 +1,19 @@ +# DetectAdsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/DetectAdsResponse.md b/docs/Models/Requests/DetectAdsResponse.md new file mode 100644 index 0000000..6e6597a --- /dev/null +++ b/docs/Models/Requests/DetectAdsResponse.md @@ -0,0 +1,10 @@ +# DetectAdsResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DetectCreditsRequest.md b/docs/Models/Requests/DetectCreditsRequest.md new file mode 100644 index 0000000..47af884 --- /dev/null +++ b/docs/Models/Requests/DetectCreditsRequest.md @@ -0,0 +1,21 @@ +# DetectCreditsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Force` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | N/A | 1 | +| `Manual` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/DetectCreditsResponse.md b/docs/Models/Requests/DetectCreditsResponse.md new file mode 100644 index 0000000..866dc7e --- /dev/null +++ b/docs/Models/Requests/DetectCreditsResponse.md @@ -0,0 +1,10 @@ +# DetectCreditsResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DetectIntrosRequest.md b/docs/Models/Requests/DetectIntrosRequest.md new file mode 100644 index 0000000..5704223 --- /dev/null +++ b/docs/Models/Requests/DetectIntrosRequest.md @@ -0,0 +1,21 @@ +# DetectIntrosRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Force` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicate whether detection should be re-run | 1 | +| `Threshold` | *double* | :heavy_minus_sign: | The threshold for determining if content is an intro or not | | \ No newline at end of file diff --git a/docs/Models/Requests/DetectIntrosResponse.md b/docs/Models/Requests/DetectIntrosResponse.md new file mode 100644 index 0000000..9783ccb --- /dev/null +++ b/docs/Models/Requests/DetectIntrosResponse.md @@ -0,0 +1,10 @@ +# DetectIntrosResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/DetectVoiceActivityRequest.md b/docs/Models/Requests/DetectVoiceActivityRequest.md new file mode 100644 index 0000000..3aac667 --- /dev/null +++ b/docs/Models/Requests/DetectVoiceActivityRequest.md @@ -0,0 +1,21 @@ +# DetectVoiceActivityRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Force` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicate whether detection should be re-run | 1 | +| `Manual` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicate whether detection is manually run | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/DetectVoiceActivityResponse.md b/docs/Models/Requests/DetectVoiceActivityResponse.md new file mode 100644 index 0000000..fe3db74 --- /dev/null +++ b/docs/Models/Requests/DetectVoiceActivityResponse.md @@ -0,0 +1,10 @@ +# DetectVoiceActivityResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Device.md b/docs/Models/Requests/Device.md index 838a927..e66761b 100644 --- a/docs/Models/Requests/Device.md +++ b/docs/Models/Requests/Device.md @@ -3,10 +3,9 @@ ## 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 +| Field | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `AccessToken` | *string* | :heavy_minus_sign: | N/A | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | N/A | +| `Connection` | List<[Connection](../../Models/Requests/Connection.md)> | :heavy_minus_sign: | N/A | +| `Name` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/DeviceChannel.md b/docs/Models/Requests/DeviceChannel.md new file mode 100644 index 0000000..11ec79c --- /dev/null +++ b/docs/Models/Requests/DeviceChannel.md @@ -0,0 +1,15 @@ +# DeviceChannel + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `Drm` | *bool* | :heavy_minus_sign: | Indicates the channel is DRMed and thus may not be playable | +| `Favorite` | *bool* | :heavy_minus_sign: | N/A | +| `Hd` | *bool* | :heavy_minus_sign: | N/A | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Name` | *string* | :heavy_minus_sign: | N/A | +| `SignalQuality` | *long* | :heavy_minus_sign: | N/A | +| `SignalStrength` | *long* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Director.md b/docs/Models/Requests/Director.md deleted file mode 100644 index 2150043..0000000 --- a/docs/Models/Requests/Director.md +++ /dev/null @@ -1,12 +0,0 @@ -# Director - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | Unique identifier for the director. | 126522 | -| `Filter` | *string* | :heavy_check_mark: | The filter string used to query this director. | director=235876 | -| `Tag` | *string* | :heavy_check_mark: | The role of Director | Danny Boyle | -| `TagKey` | *string* | :heavy_check_mark: | A unique 24-character hexadecimal key associated with the director's tag, used for internal identification. | 5d776831151a60001f24d031 | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the director. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/Directory.md b/docs/Models/Requests/Directory.md index 972edf0..f5049cb 100644 --- a/docs/Models/Requests/Directory.md +++ b/docs/Models/Requests/Directory.md @@ -3,8 +3,11 @@ ## 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 +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `Filter` | *string* | :heavy_minus_sign: | The filter string to view metadata wit this tag | +| `Id` | *long* | :heavy_minus_sign: | N/A | +| `Tag` | *string* | :heavy_minus_sign: | The name of the tag | +| `TagKey` | *string* | :heavy_minus_sign: | The key of this tag. This is a universal key across all PMS instances and plex.tv services | +| `TagType` | *long* | :heavy_minus_sign: | The type of the tag | +| `Thumb` | *string* | :heavy_minus_sign: | The URL to a thumbnail for this tag | \ No newline at end of file diff --git a/docs/Models/Requests/DiscoverDevicesResponse.md b/docs/Models/Requests/DiscoverDevicesResponse.md new file mode 100644 index 0000000..dff0347 --- /dev/null +++ b/docs/Models/Requests/DiscoverDevicesResponse.md @@ -0,0 +1,11 @@ +# DiscoverDevicesResponse + + +## 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 | +| `MediaContainerWithDevice` | [MediaContainerWithDevice](../../Models/Components/MediaContainerWithDevice.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/Download.md b/docs/Models/Requests/Download.md deleted file mode 100644 index a29a21f..0000000 --- a/docs/Models/Requests/Download.md +++ /dev/null @@ -1,11 +0,0 @@ -# Download - -Indicate that you want to start download any updates found. - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/DownloadQueue.md b/docs/Models/Requests/DownloadQueue.md new file mode 100644 index 0000000..4c6765f --- /dev/null +++ b/docs/Models/Requests/DownloadQueue.md @@ -0,0 +1,10 @@ +# DownloadQueue + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Id` | *long* | :heavy_minus_sign: | N/A | +| `ItemCount` | *long* | :heavy_minus_sign: | N/A | +| `Status` | [Models.Requests.Status](../../Models/Requests/Status.md) | :heavy_minus_sign: | The state of this queue
- deciding: At least one item is still being decided
- waiting: At least one item is waiting for transcode and none are currently transcoding
- processing: At least one item is being transcoded
- done: All items are available (or potentially expired)
- error: At least one item has encountered an error
| \ No newline at end of file diff --git a/docs/Models/Requests/DownloadQueueItem.md b/docs/Models/Requests/DownloadQueueItem.md new file mode 100644 index 0000000..b4d4395 --- /dev/null +++ b/docs/Models/Requests/DownloadQueueItem.md @@ -0,0 +1,15 @@ +# DownloadQueueItem + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `DecisionResult` | [DecisionResult](../../Models/Requests/DecisionResult.md) | :heavy_minus_sign: | N/A | +| `Error` | *string* | :heavy_minus_sign: | The error encountered in transcoding or decision | +| `Id` | *long* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `QueueId` | *long* | :heavy_minus_sign: | N/A | +| `Status` | [ListDownloadQueueItemsStatus](../../Models/Requests/ListDownloadQueueItemsStatus.md) | :heavy_minus_sign: | The state of the item:
- deciding: The item decision is pending
- waiting: The item is waiting for transcode
- processing: The item is being transcoded
- available: The item is available for download
- error: The item encountered an error in the decision or transcode
- expired: The transcoded item has timed out and is no longer available
| +| `Transcode` | [Transcode](../../Models/Requests/Transcode.md) | :heavy_minus_sign: | The transcode session object which is not yet documented otherwise it'd be a $ref here. | +| `TranscodeSession` | [TranscodeSession](../../Models/Components/TranscodeSession.md) | :heavy_minus_sign: | The transcode session if item is currently being transcoded | \ No newline at end of file diff --git a/docs/Models/Requests/Dvr.md b/docs/Models/Requests/Dvr.md new file mode 100644 index 0000000..a852e47 --- /dev/null +++ b/docs/Models/Requests/Dvr.md @@ -0,0 +1,12 @@ +# Dvr + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Device` | List<[Models.Components.Device](../../Models/Components/Device.md)> | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Language` | *string* | :heavy_minus_sign: | N/A | +| `Lineup` | *string* | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/EditMarkerRequest.md b/docs/Models/Requests/EditMarkerRequest.md new file mode 100644 index 0000000..9851610 --- /dev/null +++ b/docs/Models/Requests/EditMarkerRequest.md @@ -0,0 +1,24 @@ +# EditMarkerRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Marker` | *string* | :heavy_check_mark: | The id of the marker to edit | | +| `Type` | *long* | :heavy_check_mark: | The type of marker to edit/create | | +| `StartTimeOffset` | *long* | :heavy_check_mark: | The start time of the marker | | +| `EndTimeOffset` | *long* | :heavy_minus_sign: | The end time of the marker | | +| `Attributes` | [QueryParamAttributes](../../Models/Requests/QueryParamAttributes.md) | :heavy_minus_sign: | The attributes to assign to this marker | {
"title": "My favorite spot"
} | \ No newline at end of file diff --git a/docs/Models/Requests/EditMarkerResponse.md b/docs/Models/Requests/EditMarkerResponse.md new file mode 100644 index 0000000..7fb5b01 --- /dev/null +++ b/docs/Models/Requests/EditMarkerResponse.md @@ -0,0 +1,11 @@ +# EditMarkerResponse + + +## 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 | +| `PostResponses200` | [PostResponses200](../../Models/Components/PostResponses200.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/EditMetadataItemRequest.md b/docs/Models/Requests/EditMetadataItemRequest.md new file mode 100644 index 0000000..76aa45e --- /dev/null +++ b/docs/Models/Requests/EditMetadataItemRequest.md @@ -0,0 +1,20 @@ +# EditMetadataItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | List<*string*> | :heavy_check_mark: | N/A | | +| `Args` | [Args](../../Models/Requests/Args.md) | :heavy_minus_sign: | The new values for the metadata item | | \ No newline at end of file diff --git a/docs/Models/Requests/EditMetadataItemResponse.md b/docs/Models/Requests/EditMetadataItemResponse.md new file mode 100644 index 0000000..e63426b --- /dev/null +++ b/docs/Models/Requests/EditMetadataItemResponse.md @@ -0,0 +1,10 @@ +# EditMetadataItemResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/EditSectionQueryParamPrefs.md b/docs/Models/Requests/EditSectionQueryParamPrefs.md new file mode 100644 index 0000000..713e00f --- /dev/null +++ b/docs/Models/Requests/EditSectionQueryParamPrefs.md @@ -0,0 +1,9 @@ +# EditSectionQueryParamPrefs + +The preferences for this section + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/EditSectionRequest.md b/docs/Models/Requests/EditSectionRequest.md new file mode 100644 index 0000000..6260f3e --- /dev/null +++ b/docs/Models/Requests/EditSectionRequest.md @@ -0,0 +1,26 @@ +# EditSectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *string* | :heavy_check_mark: | The section identifier | | +| `Name` | *string* | :heavy_minus_sign: | The name of the new section | | +| `Scanner` | *string* | :heavy_minus_sign: | The scanner this section should use | | +| `Agent` | *string* | :heavy_check_mark: | The agent this section should use for metadata | | +| `MetadataAgentProviderGroupId` | *string* | :heavy_minus_sign: | The agent group id for this section | | +| `Language` | *string* | :heavy_minus_sign: | The language of this section | | +| `Locations` | List<*string*> | :heavy_minus_sign: | The locations on disk to add to this section | [
"O:\\fatboy\\Media\\Ripped\\Music",
"O:\\fatboy\\Media\\My Music"
] | +| `Prefs` | [EditSectionQueryParamPrefs](../../Models/Requests/EditSectionQueryParamPrefs.md) | :heavy_minus_sign: | The preferences for this section | {
"collectionMode": 2,
"hidden": 0
} | \ No newline at end of file diff --git a/docs/Models/Requests/EditSectionResponse.md b/docs/Models/Requests/EditSectionResponse.md new file mode 100644 index 0000000..dab69c4 --- /dev/null +++ b/docs/Models/Requests/EditSectionResponse.md @@ -0,0 +1,10 @@ +# EditSectionResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/EditSubscriptionPreferencesQueryParamPrefs.md b/docs/Models/Requests/EditSubscriptionPreferencesQueryParamPrefs.md new file mode 100644 index 0000000..1f4aba5 --- /dev/null +++ b/docs/Models/Requests/EditSubscriptionPreferencesQueryParamPrefs.md @@ -0,0 +1,7 @@ +# EditSubscriptionPreferencesQueryParamPrefs + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/EditSubscriptionPreferencesRequest.md b/docs/Models/Requests/EditSubscriptionPreferencesRequest.md new file mode 100644 index 0000000..c6e39e6 --- /dev/null +++ b/docs/Models/Requests/EditSubscriptionPreferencesRequest.md @@ -0,0 +1,20 @@ +# EditSubscriptionPreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SubscriptionId` | *long* | :heavy_check_mark: | N/A | | +| `Prefs` | [EditSubscriptionPreferencesQueryParamPrefs](../../Models/Requests/EditSubscriptionPreferencesQueryParamPrefs.md) | :heavy_minus_sign: | N/A | {
"minVideoQuality": 720
} | \ No newline at end of file diff --git a/docs/Models/Requests/EditSubscriptionPreferencesResponse.md b/docs/Models/Requests/EditSubscriptionPreferencesResponse.md new file mode 100644 index 0000000..d16c650 --- /dev/null +++ b/docs/Models/Requests/EditSubscriptionPreferencesResponse.md @@ -0,0 +1,11 @@ +# EditSubscriptionPreferencesResponse + + +## 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 | +| `MediaContainerWithSubscription` | [MediaContainerWithSubscription](../../Models/Components/MediaContainerWithSubscription.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/Element.md b/docs/Models/Requests/Element.md new file mode 100644 index 0000000..a6016fd --- /dev/null +++ b/docs/Models/Requests/Element.md @@ -0,0 +1,13 @@ +# Element + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Thumb` | thumb | +| `Art` | art | +| `ClearLogo` | clearLogo | +| `Banner` | banner | +| `Poster` | poster | +| `Theme` | theme | \ No newline at end of file diff --git a/docs/Models/Requests/EmptyTrashRequest.md b/docs/Models/Requests/EmptyTrashRequest.md new file mode 100644 index 0000000..6900043 --- /dev/null +++ b/docs/Models/Requests/EmptyTrashRequest.md @@ -0,0 +1,19 @@ +# EmptyTrashRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/EmptyTrashResponse.md b/docs/Models/Requests/EmptyTrashResponse.md new file mode 100644 index 0000000..34a4abc --- /dev/null +++ b/docs/Models/Requests/EmptyTrashResponse.md @@ -0,0 +1,10 @@ +# EmptyTrashResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/EnablePaperTrailResponse.md b/docs/Models/Requests/EnablePaperTrailResponse.md deleted file mode 100644 index 8be67a5..0000000 --- a/docs/Models/Requests/EnablePaperTrailResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/EnablePapertrailRequest.md b/docs/Models/Requests/EnablePapertrailRequest.md new file mode 100644 index 0000000..6953c1c --- /dev/null +++ b/docs/Models/Requests/EnablePapertrailRequest.md @@ -0,0 +1,19 @@ +# EnablePapertrailRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Minutes` | *long* | :heavy_minus_sign: | The number of minutes logging should be sent to Papertrail | | \ 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..cde3942 --- /dev/null +++ b/docs/Models/Requests/EnablePapertrailResponse.md @@ -0,0 +1,10 @@ +# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Extension.md b/docs/Models/Requests/Extension.md new file mode 100644 index 0000000..2e960cf --- /dev/null +++ b/docs/Models/Requests/Extension.md @@ -0,0 +1,12 @@ +# Extension + +Extension + + + +## Values + +| Name | Value | +| ------ | ------ | +| `M3u8` | m3u8 | +| `Mpd` | mpd | \ No newline at end of file diff --git a/docs/Models/Requests/Extras.md b/docs/Models/Requests/Extras.md deleted file mode 100644 index 5a80edb..0000000 --- a/docs/Models/Requests/Extras.md +++ /dev/null @@ -1,8 +0,0 @@ -# Extras - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------- | ----------------------- | ----------------------- | ----------------------- | ----------------------- | -| `Size` | *long* | :heavy_minus_sign: | The size of the extras. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Feature.md b/docs/Models/Requests/Feature.md index 1722a70..6a9f602 100644 --- a/docs/Models/Requests/Feature.md +++ b/docs/Models/Requests/Feature.md @@ -3,12 +3,8 @@ ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `Key` | *string* | :heavy_minus_sign: | N/A | | -| `Type` | *string* | :heavy_check_mark: | N/A | | -| `Flavor` | *string* | :heavy_minus_sign: | N/A | global | -| `ScrobbleKey` | *string* | :heavy_minus_sign: | N/A | /:/scrobble/new | -| `UnscrobbleKey` | *string* | :heavy_minus_sign: | N/A | /:/unscrobble/new | -| `Directory` | List<[GetMediaProvidersDirectory](../../Models/Requests/GetMediaProvidersDirectory.md)> | :heavy_minus_sign: | N/A | | -| `Action` | List<[Action](../../Models/Requests/Action.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `Directory` | List<[Models.Components.Directory](../../Models/Components/Directory.md)> | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Type` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Field.md b/docs/Models/Requests/Field.md deleted file mode 100644 index 09bdab1..0000000 --- a/docs/Models/Requests/Field.md +++ /dev/null @@ -1,11 +0,0 @@ -# Field - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Key` | *string* | :heavy_check_mark: | N/A | show.title | -| `Title` | *string* | :heavy_check_mark: | N/A | Show Title | -| `Type` | *string* | :heavy_check_mark: | N/A | string | -| `SubType` | *string* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/Models/Requests/FieldType.md b/docs/Models/Requests/FieldType.md deleted file mode 100644 index 317972c..0000000 --- a/docs/Models/Requests/FieldType.md +++ /dev/null @@ -1,9 +0,0 @@ -# FieldType - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `Type` | *string* | :heavy_check_mark: | N/A | tag | -| `Operator` | List<[Operator](../../Models/Requests/Operator.md)> | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/Filter.md b/docs/Models/Requests/Filter.md deleted file mode 100644 index 39e65cd..0000000 --- a/docs/Models/Requests/Filter.md +++ /dev/null @@ -1,12 +0,0 @@ -# Filter - -Filter - - -## Values - -| Name | Value | -| ----------- | ----------- | -| `All` | all | -| `Available` | available | -| `Released` | released | \ No newline at end of file diff --git a/docs/Models/Requests/FlattenSeasons.md b/docs/Models/Requests/FlattenSeasons.md deleted file mode 100644 index de37200..0000000 --- a/docs/Models/Requests/FlattenSeasons.md +++ /dev/null @@ -1,13 +0,0 @@ -# FlattenSeasons - -Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - - - -## Values - -| Name | Value | -| ---------------- | ---------------- | -| `LibraryDefault` | -1 | -| `Hide` | 0 | -| `Show` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Flavor.md b/docs/Models/Requests/Flavor.md new file mode 100644 index 0000000..fe9c795 --- /dev/null +++ b/docs/Models/Requests/Flavor.md @@ -0,0 +1,15 @@ +# Flavor + +- `0`: The country is divided into regions, and following the key will lead to a list of regions. +- `1`: The county is divided by postal codes, and an example code is returned in `example`. +- `2`: The country has a single postal code, returned in `example`. + + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | +| `Two` | 2 | \ No newline at end of file diff --git a/docs/Models/Requests/Force.md b/docs/Models/Requests/Force.md deleted file mode 100644 index 4ebae3b..0000000 --- a/docs/Models/Requests/Force.md +++ /dev/null @@ -1,11 +0,0 @@ -# Force - -Force the refresh even if the library is already being refreshed. - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Format.md b/docs/Models/Requests/Format.md new file mode 100644 index 0000000..2d15fe5 --- /dev/null +++ b/docs/Models/Requests/Format.md @@ -0,0 +1,13 @@ +# Format + +The output format for the image; defaults to jpg + + +## Values + +| Name | Value | +| ------ | ------ | +| `Jpg` | jpg | +| `Jpeg` | jpeg | +| `Png` | png | +| `Ppm` | ppm | \ No newline at end of file diff --git a/docs/Models/Requests/Friend.md b/docs/Models/Requests/Friend.md deleted file mode 100644 index 8e12d05..0000000 --- a/docs/Models/Requests/Friend.md +++ /dev/null @@ -1,19 +0,0 @@ -# Friend - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| `Email` | *string* | :heavy_check_mark: | The account email address | username@email.com | -| `FriendlyName` | *string* | :heavy_check_mark: | The account full name | exampleUser | -| `Home` | *bool* | :heavy_check_mark: | If the account is a Plex Home user | | -| `Id` | *int* | :heavy_check_mark: | The Plex account ID | | -| `Restricted` | *bool* | :heavy_minus_sign: | If the account is a Plex Home managed user | | -| `SharedServers` | List<[SharedServers](../../Models/Requests/SharedServers.md)> | :heavy_check_mark: | N/A | | -| `SharedSources` | List<[SharedSources](../../Models/Requests/SharedSources.md)> | :heavy_check_mark: | N/A | | -| `Status` | [Status](../../Models/Requests/Status.md) | :heavy_check_mark: | Current friend request status | accepted | -| `Thumb` | *string* | :heavy_check_mark: | URL of the account thumbnail | https://plex.tv/users/7d1916e0d8f6e76b/avatar?c=1694481578 | -| `Title` | *string* | :heavy_check_mark: | The title of the account (username or friendly name) | username123 | -| `Username` | *string* | :heavy_check_mark: | The account username | username123 | -| `Uuid` | *string* | :heavy_check_mark: | The account Universally Unique Identifier (UUID) | 7d1916e0d8f6e76b | \ No newline at end of file diff --git a/docs/Models/Requests/GenerateThumbsRequest.md b/docs/Models/Requests/GenerateThumbsRequest.md new file mode 100644 index 0000000..3d04e30 --- /dev/null +++ b/docs/Models/Requests/GenerateThumbsRequest.md @@ -0,0 +1,20 @@ +# GenerateThumbsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Force` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GenerateThumbsResponse.md b/docs/Models/Requests/GenerateThumbsResponse.md new file mode 100644 index 0000000..f08fd60 --- /dev/null +++ b/docs/Models/Requests/GenerateThumbsResponse.md @@ -0,0 +1,10 @@ +# GenerateThumbsResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Genre.md b/docs/Models/Requests/Genre.md deleted file mode 100644 index 108e0f6..0000000 --- a/docs/Models/Requests/Genre.md +++ /dev/null @@ -1,12 +0,0 @@ -# Genre - -The filter query string for similar items. - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | The unique identifier for the genre.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `Filter` | *string* | :heavy_check_mark: | N/A | genre=19 | -| `Tag` | *string* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/Models/Requests/GeoData.md b/docs/Models/Requests/GeoData.md deleted file mode 100644 index 124f107..0000000 --- a/docs/Models/Requests/GeoData.md +++ /dev/null @@ -1,20 +0,0 @@ -# GeoData - -Geo location data - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `Code` | *string* | :heavy_check_mark: | The ISO 3166-1 alpha-2 code of the country. | VI | -| `ContinentCode` | *string* | :heavy_check_mark: | The continent code where the country is located. | NA | -| `Country` | *string* | :heavy_check_mark: | The official name of the country. | United States Virgin Islands | -| `City` | *string* | :heavy_check_mark: | The name of the city. | Amsterdam | -| `EuropeanUnionMember` | *bool* | :heavy_minus_sign: | Indicates if the country is a member of the European Union. | true | -| `TimeZone` | *string* | :heavy_check_mark: | The time zone of the country. | America/St_Thomas | -| `PostalCode` | *string* | :heavy_check_mark: | The postal code of the location. | 802 | -| `InPrivacyRestrictedCountry` | *bool* | :heavy_minus_sign: | Indicates if the country has privacy restrictions. | true | -| `InPrivacyRestrictedRegion` | *bool* | :heavy_minus_sign: | Indicates if the region has privacy restrictions. | true | -| `Subdivisions` | *string* | :heavy_check_mark: | The name of the primary administrative subdivision. | Saint Thomas | -| `Coordinates` | *string* | :heavy_check_mark: | The geographical coordinates (latitude, longitude) of the location. | 18.3381, -64.8941 | \ No newline at end of file diff --git a/docs/Models/Requests/GetActorsLibraryDirectory.md b/docs/Models/Requests/GetActorsLibraryDirectory.md deleted file mode 100644 index d99c2be..0000000 --- a/docs/Models/Requests/GetActorsLibraryDirectory.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetActorsLibraryDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `FastKey` | *string* | :heavy_check_mark: | A fast lookup key for the actor relative url. | /library/sections/2/all?actor=134671 | -| `Thumb` | *string* | :heavy_check_mark: | URL for the thumbnail image of the actor. | https://metadata-static.plex.tv/e/people/e2a915b537ef720252b6d408bc1f91b3.jpg | -| `Key` | *string* | :heavy_check_mark: | A unique key representing the actor. | 134671 | -| `Title` | *string* | :heavy_check_mark: | The name of the actor. | Aaron Paul | \ No newline at end of file diff --git a/docs/Models/Requests/GetActorsLibraryMediaContainer.md b/docs/Models/Requests/GetActorsLibraryMediaContainer.md deleted file mode 100644 index dd85b4e..0000000 --- a/docs/Models/Requests/GetActorsLibraryMediaContainer.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetActorsLibraryMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `AllowSync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `Art` | *string* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `MediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `MediaTagVersion` | *long* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `Nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | -| `Thumb` | *string* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `Title1` | *string* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `Title2` | *string* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | -| `ViewGroup` | *string* | :heavy_check_mark: | Identifier for the view group layout. | secondary | -| `ViewMode` | *string* | :heavy_minus_sign: | Identifier for the view mode. | 131131 | -| `Directory` | List<[GetActorsLibraryDirectory](../../Models/Requests/GetActorsLibraryDirectory.md)> | :heavy_minus_sign: | An array of actor entries for media items. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetActorsLibraryQueryParamType.md b/docs/Models/Requests/GetActorsLibraryQueryParamType.md deleted file mode 100644 index 54c839f..0000000 --- a/docs/Models/Requests/GetActorsLibraryQueryParamType.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetActorsLibraryQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | 1 | -| `TvShow` | 2 | -| `Season` | 3 | -| `Episode` | 4 | -| `Artist` | 5 | -| `Album` | 6 | -| `Track` | 7 | -| `PhotoAlbum` | 8 | -| `Photo` | 9 | \ No newline at end of file diff --git a/docs/Models/Requests/GetActorsLibraryRequest.md b/docs/Models/Requests/GetActorsLibraryRequest.md deleted file mode 100644 index 2b2bb94..0000000 --- a/docs/Models/Requests/GetActorsLibraryRequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetActorsLibraryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `Type` | [GetActorsLibraryQueryParamType](../../Models/Requests/GetActorsLibraryQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/Models/Requests/GetActorsLibraryResponse.md b/docs/Models/Requests/GetActorsLibraryResponse.md deleted file mode 100644 index 38e1288..0000000 --- a/docs/Models/Requests/GetActorsLibraryResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetActorsLibraryResponse - - -## 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` | [GetActorsLibraryResponseBody](../../Models/Requests/GetActorsLibraryResponseBody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/Models/Requests/GetActorsLibraryResponseBody.md b/docs/Models/Requests/GetActorsLibraryResponseBody.md deleted file mode 100644 index 867eb42..0000000 --- a/docs/Models/Requests/GetActorsLibraryResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetActorsLibraryResponseBody - -Successful response containing media container data. - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetActorsLibraryMediaContainer](../../Models/Requests/GetActorsLibraryMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAlbumsRequest.md b/docs/Models/Requests/GetAlbumsRequest.md new file mode 100644 index 0000000..1f61a04 --- /dev/null +++ b/docs/Models/Requests/GetAlbumsRequest.md @@ -0,0 +1,19 @@ +# GetAlbumsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/GetAlbumsResponse.md b/docs/Models/Requests/GetAlbumsResponse.md new file mode 100644 index 0000000..cf8413b --- /dev/null +++ b/docs/Models/Requests/GetAlbumsResponse.md @@ -0,0 +1,11 @@ +# GetAlbumsResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllHubsMediaContainer.md b/docs/Models/Requests/GetAllHubsMediaContainer.md new file mode 100644 index 0000000..d429a89 --- /dev/null +++ b/docs/Models/Requests/GetAllHubsMediaContainer.md @@ -0,0 +1,17 @@ +# GetAllHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Hub` | List<[Models.Components.Hub](../../Models/Components/Hub.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllHubsRequest.md b/docs/Models/Requests/GetAllHubsRequest.md new file mode 100644 index 0000000..9481bbe --- /dev/null +++ b/docs/Models/Requests/GetAllHubsRequest.md @@ -0,0 +1,21 @@ +# GetAllHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Count` | *long* | :heavy_minus_sign: | Limit results to count items | | +| `OnlyTransient` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) | 1 | +| `Identifier` | List<*string*> | :heavy_minus_sign: | If provided, limit to only specified hubs | | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllHubsResponse.md b/docs/Models/Requests/GetAllHubsResponse.md new file mode 100644 index 0000000..4606f54 --- /dev/null +++ b/docs/Models/Requests/GetAllHubsResponse.md @@ -0,0 +1,12 @@ +# GetAllHubsResponse + + +## 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` | [GetAllHubsResponseBody](../../Models/Requests/GetAllHubsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllHubsResponseBody.md b/docs/Models/Requests/GetAllHubsResponseBody.md new file mode 100644 index 0000000..271e7c0 --- /dev/null +++ b/docs/Models/Requests/GetAllHubsResponseBody.md @@ -0,0 +1,10 @@ +# GetAllHubsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `MediaContainer` | [GetAllHubsMediaContainer](../../Models/Requests/GetAllHubsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllItemLeavesRequest.md b/docs/Models/Requests/GetAllItemLeavesRequest.md new file mode 100644 index 0000000..c79b1d9 --- /dev/null +++ b/docs/Models/Requests/GetAllItemLeavesRequest.md @@ -0,0 +1,19 @@ +# GetAllItemLeavesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllItemLeavesResponse.md b/docs/Models/Requests/GetAllItemLeavesResponse.md new file mode 100644 index 0000000..0097cee --- /dev/null +++ b/docs/Models/Requests/GetAllItemLeavesResponse.md @@ -0,0 +1,12 @@ +# GetAllItemLeavesResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllLanguagesMediaContainer.md b/docs/Models/Requests/GetAllLanguagesMediaContainer.md new file mode 100644 index 0000000..cdad60a --- /dev/null +++ b/docs/Models/Requests/GetAllLanguagesMediaContainer.md @@ -0,0 +1,17 @@ +# GetAllLanguagesMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Language` | List<[Language](../../Models/Requests/Language.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllLanguagesResponse.md b/docs/Models/Requests/GetAllLanguagesResponse.md new file mode 100644 index 0000000..cfcb300 --- /dev/null +++ b/docs/Models/Requests/GetAllLanguagesResponse.md @@ -0,0 +1,12 @@ +# GetAllLanguagesResponse + + +## 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` | [GetAllLanguagesResponseBody](../../Models/Requests/GetAllLanguagesResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllLanguagesResponseBody.md b/docs/Models/Requests/GetAllLanguagesResponseBody.md new file mode 100644 index 0000000..e364e18 --- /dev/null +++ b/docs/Models/Requests/GetAllLanguagesResponseBody.md @@ -0,0 +1,10 @@ +# GetAllLanguagesResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetAllLanguagesMediaContainer](../../Models/Requests/GetAllLanguagesMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllLeavesRequest.md b/docs/Models/Requests/GetAllLeavesRequest.md new file mode 100644 index 0000000..972dcb1 --- /dev/null +++ b/docs/Models/Requests/GetAllLeavesRequest.md @@ -0,0 +1,19 @@ +# GetAllLeavesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllLeavesResponse.md b/docs/Models/Requests/GetAllLeavesResponse.md new file mode 100644 index 0000000..a42201d --- /dev/null +++ b/docs/Models/Requests/GetAllLeavesResponse.md @@ -0,0 +1,11 @@ +# GetAllLeavesResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllLibrariesDirectory.md b/docs/Models/Requests/GetAllLibrariesDirectory.md deleted file mode 100644 index e340545..0000000 --- a/docs/Models/Requests/GetAllLibrariesDirectory.md +++ /dev/null @@ -1,28 +0,0 @@ -# GetAllLibrariesDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `AllowSync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `Art` | *string* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `Composite` | *string* | :heavy_check_mark: | The relative path to the composite media item. | /library/sections/1/composite/1743824484 | -| `Filters` | *bool* | :heavy_check_mark: | UNKNOWN | true | -| `Refreshing` | *bool* | :heavy_check_mark: | Indicates whether the library is currently being refreshed or updated | true | -| `Thumb` | *string* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `Key` | *string* | :heavy_check_mark: | The library key representing the unique identifier | 1 | -| `Type` | [GetAllLibrariesType](../../Models/Requests/GetAllLibrariesType.md) | :heavy_check_mark: | N/A | movie | -| `Title` | *string* | :heavy_check_mark: | The title of the library | Movies | -| `Agent` | *string* | :heavy_check_mark: | The Plex agent used to match and retrieve media metadata. | tv.plex.agents.movie | -| `Scanner` | *string* | :heavy_check_mark: | UNKNOWN | Plex Movie | -| `Language` | *string* | :heavy_check_mark: | The Plex library language that has been set | en-US | -| `Uuid` | *string* | :heavy_check_mark: | The universally unique identifier for the library. | e69655a2-ef48-4aba-bb19-01e7d3cc34d6 | -| `UpdatedAt` | *long* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `CreatedAt` | *long* | :heavy_minus_sign: | N/A | 1556281940 | -| `ScannedAt` | *long* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `Content` | *bool* | :heavy_check_mark: | UNKNOWN | true | -| `Directory` | *bool* | :heavy_check_mark: | UNKNOWN | true | -| `ContentChangedAt` | *long* | :heavy_check_mark: | Timestamp (in seconds) representing the last time the content was modified.
NOTE: Some Plex server have some absurd values for this field, like 8457612157633039800 so it should be int64
| 9173960 | -| `Hidden` | [Hidden](../../Models/Requests/Hidden.md) | :heavy_minus_sign: | The Plex library visibility setting | 1 | -| `Location` | List<[GetAllLibrariesLocation](../../Models/Requests/GetAllLibrariesLocation.md)> | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllLibrariesLocation.md b/docs/Models/Requests/GetAllLibrariesLocation.md deleted file mode 100644 index 1e7677e..0000000 --- a/docs/Models/Requests/GetAllLibrariesLocation.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetAllLibrariesLocation - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------- | --------------------------- | --------------------------- | --------------------------- | --------------------------- | -| `Id` | *int* | :heavy_check_mark: | The ID of the location. | 1 | -| `Path` | *string* | :heavy_check_mark: | The path to the media item. | /Movies | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllLibrariesMediaContainer.md b/docs/Models/Requests/GetAllLibrariesMediaContainer.md deleted file mode 100644 index 8e374ae..0000000 --- a/docs/Models/Requests/GetAllLibrariesMediaContainer.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAllLibrariesMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `AllowSync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `Title1` | *string* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `Directory` | List<[GetAllLibrariesDirectory](../../Models/Requests/GetAllLibrariesDirectory.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllLibrariesResponse.md b/docs/Models/Requests/GetAllLibrariesResponse.md deleted file mode 100644 index 4fd408e..0000000 --- a/docs/Models/Requests/GetAllLibrariesResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAllLibrariesResponse - - -## 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` | [GetAllLibrariesResponseBody](../../Models/Requests/GetAllLibrariesResponseBody.md) | :heavy_minus_sign: | The libraries available on the Server | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllLibrariesResponseBody.md b/docs/Models/Requests/GetAllLibrariesResponseBody.md deleted file mode 100644 index 8066514..0000000 --- a/docs/Models/Requests/GetAllLibrariesResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetAllLibrariesResponseBody - -The libraries available on the Server - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetAllLibrariesMediaContainer](../../Models/Requests/GetAllLibrariesMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllLibrariesType.md b/docs/Models/Requests/GetAllLibrariesType.md deleted file mode 100644 index 432e044..0000000 --- a/docs/Models/Requests/GetAllLibrariesType.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetAllLibrariesType - -The library type - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | movie | -| `TvShow` | show | -| `Season` | season | -| `Episode` | episode | -| `Artist` | artist | -| `Album` | album | -| `Track` | track | -| `PhotoAlbum` | photoalbum | -| `Photo` | photo | -| `Collection` | collection | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllPreferencesResponse.md b/docs/Models/Requests/GetAllPreferencesResponse.md new file mode 100644 index 0000000..e016c34 --- /dev/null +++ b/docs/Models/Requests/GetAllPreferencesResponse.md @@ -0,0 +1,11 @@ +# GetAllPreferencesResponse + + +## 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 | +| `MediaContainerWithSettings` | [MediaContainerWithSettings](../../Models/Components/MediaContainerWithSettings.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllSubscriptionsRequest.md b/docs/Models/Requests/GetAllSubscriptionsRequest.md new file mode 100644 index 0000000..f061ea7 --- /dev/null +++ b/docs/Models/Requests/GetAllSubscriptionsRequest.md @@ -0,0 +1,20 @@ +# GetAllSubscriptionsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `IncludeGrabs` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates whether the active grabs should be included as well | 1 | +| `IncludeStorage` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Compute the storage of recorded items desired by this subscription | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllSubscriptionsResponse.md b/docs/Models/Requests/GetAllSubscriptionsResponse.md new file mode 100644 index 0000000..015a4db --- /dev/null +++ b/docs/Models/Requests/GetAllSubscriptionsResponse.md @@ -0,0 +1,12 @@ +# GetAllSubscriptionsResponse + + +## 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 | +| `MediaContainerWithSubscription` | [MediaContainerWithSubscription](../../Models/Components/MediaContainerWithSubscription.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetArtsRequest.md b/docs/Models/Requests/GetArtsRequest.md new file mode 100644 index 0000000..daf1c7c --- /dev/null +++ b/docs/Models/Requests/GetArtsRequest.md @@ -0,0 +1,19 @@ +# GetArtsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/GetArtsResponse.md b/docs/Models/Requests/GetArtsResponse.md new file mode 100644 index 0000000..ad8ad78 --- /dev/null +++ b/docs/Models/Requests/GetArtsResponse.md @@ -0,0 +1,11 @@ +# GetArtsResponse + + +## 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 | +| `MediaContainerWithArtwork` | [MediaContainerWithArtwork](../../Models/Components/MediaContainerWithArtwork.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetAugmentationStatusRequest.md b/docs/Models/Requests/GetAugmentationStatusRequest.md new file mode 100644 index 0000000..a5619c1 --- /dev/null +++ b/docs/Models/Requests/GetAugmentationStatusRequest.md @@ -0,0 +1,20 @@ +# GetAugmentationStatusRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `AugmentationId` | *string* | :heavy_check_mark: | The id of the augmentation | | +| `Wait` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Wait for augmentation completion before returning | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetAugmentationStatusResponse.md b/docs/Models/Requests/GetAugmentationStatusResponse.md new file mode 100644 index 0000000..4eede06 --- /dev/null +++ b/docs/Models/Requests/GetAugmentationStatusResponse.md @@ -0,0 +1,10 @@ +# GetAugmentationStatusResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableClientsMediaContainer.md b/docs/Models/Requests/GetAvailableClientsMediaContainer.md deleted file mode 100644 index cdabb42..0000000 --- a/docs/Models/Requests/GetAvailableClientsMediaContainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# 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 deleted file mode 100644 index d96114b..0000000 --- a/docs/Models/Requests/GetAvailableClientsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 | -| `Object` | [GetAvailableClientsResponseBody](../../Models/Requests/GetAvailableClientsResponseBody.md) | :heavy_minus_sign: | Available Clients | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableClientsResponseBody.md b/docs/Models/Requests/GetAvailableClientsResponseBody.md deleted file mode 100644 index a485679..0000000 --- a/docs/Models/Requests/GetAvailableClientsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetAvailableClientsResponseBody - -Available Clients - - -## 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/GetAvailableGrabbersMediaContainer.md b/docs/Models/Requests/GetAvailableGrabbersMediaContainer.md new file mode 100644 index 0000000..be122ce --- /dev/null +++ b/docs/Models/Requests/GetAvailableGrabbersMediaContainer.md @@ -0,0 +1,17 @@ +# GetAvailableGrabbersMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `MediaGrabber` | List<[MediaGrabber](../../Models/Requests/MediaGrabber.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableGrabbersRequest.md b/docs/Models/Requests/GetAvailableGrabbersRequest.md new file mode 100644 index 0000000..bd7201d --- /dev/null +++ b/docs/Models/Requests/GetAvailableGrabbersRequest.md @@ -0,0 +1,19 @@ +# GetAvailableGrabbersRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Protocol` | *string* | :heavy_minus_sign: | Only return grabbers providing this protocol. | livetv | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableGrabbersResponse.md b/docs/Models/Requests/GetAvailableGrabbersResponse.md new file mode 100644 index 0000000..9e8ebf5 --- /dev/null +++ b/docs/Models/Requests/GetAvailableGrabbersResponse.md @@ -0,0 +1,12 @@ +# GetAvailableGrabbersResponse + + +## 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` | [GetAvailableGrabbersResponseBody](../../Models/Requests/GetAvailableGrabbersResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableGrabbersResponseBody.md b/docs/Models/Requests/GetAvailableGrabbersResponseBody.md new file mode 100644 index 0000000..032e0b4 --- /dev/null +++ b/docs/Models/Requests/GetAvailableGrabbersResponseBody.md @@ -0,0 +1,10 @@ +# GetAvailableGrabbersResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetAvailableGrabbersMediaContainer](../../Models/Requests/GetAvailableGrabbersMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableSortsMediaContainer.md b/docs/Models/Requests/GetAvailableSortsMediaContainer.md new file mode 100644 index 0000000..a305c8e --- /dev/null +++ b/docs/Models/Requests/GetAvailableSortsMediaContainer.md @@ -0,0 +1,17 @@ +# GetAvailableSortsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Directory` | List<[Sort](../../Models/Components/Sort.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableSortsRequest.md b/docs/Models/Requests/GetAvailableSortsRequest.md new file mode 100644 index 0000000..695616f --- /dev/null +++ b/docs/Models/Requests/GetAvailableSortsRequest.md @@ -0,0 +1,19 @@ +# GetAvailableSortsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableSortsResponse.md b/docs/Models/Requests/GetAvailableSortsResponse.md new file mode 100644 index 0000000..575536c --- /dev/null +++ b/docs/Models/Requests/GetAvailableSortsResponse.md @@ -0,0 +1,11 @@ +# GetAvailableSortsResponse + + +## 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` | [GetAvailableSortsResponseBody](../../Models/Requests/GetAvailableSortsResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetAvailableSortsResponseBody.md b/docs/Models/Requests/GetAvailableSortsResponseBody.md new file mode 100644 index 0000000..bafbb87 --- /dev/null +++ b/docs/Models/Requests/GetAvailableSortsResponseBody.md @@ -0,0 +1,10 @@ +# GetAvailableSortsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetAvailableSortsMediaContainer](../../Models/Requests/GetAvailableSortsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetBackgroundTasksMediaContainer.md b/docs/Models/Requests/GetBackgroundTasksMediaContainer.md new file mode 100644 index 0000000..53388a0 --- /dev/null +++ b/docs/Models/Requests/GetBackgroundTasksMediaContainer.md @@ -0,0 +1,17 @@ +# GetBackgroundTasksMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `TranscodeJob` | List<[TranscodeJob](../../Models/Requests/TranscodeJob.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetBackgroundTasksResponse.md b/docs/Models/Requests/GetBackgroundTasksResponse.md new file mode 100644 index 0000000..424857a --- /dev/null +++ b/docs/Models/Requests/GetBackgroundTasksResponse.md @@ -0,0 +1,11 @@ +# GetBackgroundTasksResponse + + +## 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` | [GetBackgroundTasksResponseBody](../../Models/Requests/GetBackgroundTasksResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetBackgroundTasksResponseBody.md b/docs/Models/Requests/GetBackgroundTasksResponseBody.md new file mode 100644 index 0000000..182a784 --- /dev/null +++ b/docs/Models/Requests/GetBackgroundTasksResponseBody.md @@ -0,0 +1,10 @@ +# GetBackgroundTasksResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetBackgroundTasksMediaContainer](../../Models/Requests/GetBackgroundTasksMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetBackgroundTasksType.md b/docs/Models/Requests/GetBackgroundTasksType.md new file mode 100644 index 0000000..47b9830 --- /dev/null +++ b/docs/Models/Requests/GetBackgroundTasksType.md @@ -0,0 +1,8 @@ +# GetBackgroundTasksType + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Transcode` | transcode | \ No newline at end of file diff --git a/docs/Models/Requests/GetBandwidthStatisticsAccount.md b/docs/Models/Requests/GetBandwidthStatisticsAccount.md deleted file mode 100644 index 35761a8..0000000 --- a/docs/Models/Requests/GetBandwidthStatisticsAccount.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetBandwidthStatisticsAccount - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `Id` | *int* | :heavy_minus_sign: | N/A | 238960586 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /accounts/238960586 | -| `Name` | *string* | :heavy_minus_sign: | N/A | Diane | -| `DefaultAudioLanguage` | *string* | :heavy_minus_sign: | N/A | en | -| `AutoSelectAudio` | *bool* | :heavy_minus_sign: | N/A | true | -| `DefaultSubtitleLanguage` | *string* | :heavy_minus_sign: | N/A | en | -| `SubtitleMode` | *int* | :heavy_minus_sign: | N/A | 1 | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | https://plex.tv/users/50d83634246da1de/avatar?c=1707110967 | \ No newline at end of file diff --git a/docs/Models/Requests/GetBandwidthStatisticsDevice.md b/docs/Models/Requests/GetBandwidthStatisticsDevice.md deleted file mode 100644 index d426660..0000000 --- a/docs/Models/Requests/GetBandwidthStatisticsDevice.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetBandwidthStatisticsDevice - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `Id` | *int* | :heavy_minus_sign: | N/A | 208 | -| `Name` | *string* | :heavy_minus_sign: | N/A | Roku Express | -| `Platform` | *string* | :heavy_minus_sign: | N/A | Roku | -| `ClientIdentifier` | *string* | :heavy_minus_sign: | N/A | 793095d235660625108ef785cc7646e9 | -| `CreatedAt` | *int* | :heavy_minus_sign: | N/A | 1706470556 | \ No newline at end of file diff --git a/docs/Models/Requests/GetBandwidthStatisticsMediaContainer.md b/docs/Models/Requests/GetBandwidthStatisticsMediaContainer.md deleted file mode 100644 index 12f9d25..0000000 --- a/docs/Models/Requests/GetBandwidthStatisticsMediaContainer.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetBandwidthStatisticsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 5497 | -| `Device` | List<[GetBandwidthStatisticsDevice](../../Models/Requests/GetBandwidthStatisticsDevice.md)> | :heavy_minus_sign: | N/A | | -| `Account` | List<[GetBandwidthStatisticsAccount](../../Models/Requests/GetBandwidthStatisticsAccount.md)> | :heavy_minus_sign: | N/A | | -| `StatisticsBandwidth` | List<[StatisticsBandwidth](../../Models/Requests/StatisticsBandwidth.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetBandwidthStatisticsRequest.md b/docs/Models/Requests/GetBandwidthStatisticsRequest.md deleted file mode 100644 index 2394dff..0000000 --- a/docs/Models/Requests/GetBandwidthStatisticsRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetBandwidthStatisticsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `Timespan` | *long* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | \ No newline at end of file diff --git a/docs/Models/Requests/GetBandwidthStatisticsResponse.md b/docs/Models/Requests/GetBandwidthStatisticsResponse.md deleted file mode 100644 index dbcb385..0000000 --- a/docs/Models/Requests/GetBandwidthStatisticsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetBandwidthStatisticsResponse - - -## 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` | [GetBandwidthStatisticsResponseBody](../../Models/Requests/GetBandwidthStatisticsResponseBody.md) | :heavy_minus_sign: | Bandwidth Statistics | \ No newline at end of file diff --git a/docs/Models/Requests/GetBandwidthStatisticsResponseBody.md b/docs/Models/Requests/GetBandwidthStatisticsResponseBody.md deleted file mode 100644 index 1950eb0..0000000 --- a/docs/Models/Requests/GetBandwidthStatisticsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetBandwidthStatisticsResponseBody - -Bandwidth Statistics - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetBandwidthStatisticsMediaContainer](../../Models/Requests/GetBandwidthStatisticsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetBannerImageRequest.md b/docs/Models/Requests/GetBannerImageRequest.md deleted file mode 100644 index 5a5636f..0000000 --- a/docs/Models/Requests/GetBannerImageRequest.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetBannerImageRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | -| `RatingKey` | *long* | :heavy_check_mark: | the id of the library item to return the children of. | 9518 | -| `Width` | *long* | :heavy_check_mark: | N/A | 396 | -| `Height` | *long* | :heavy_check_mark: | N/A | 396 | -| `MinSize` | *long* | :heavy_check_mark: | N/A | 1 | -| `Upscale` | *long* | :heavy_check_mark: | N/A | 1 | -| `XPlexToken` | *string* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf | \ No newline at end of file diff --git a/docs/Models/Requests/GetBannerImageResponse.md b/docs/Models/Requests/GetBannerImageResponse.md deleted file mode 100644 index 0501ec9..0000000 --- a/docs/Models/Requests/GetBannerImageResponse.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetBannerImageResponse - - -## 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 | -| `Bytes` | *byte[]* | :heavy_minus_sign: | Successful response returning an image | -| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetButlerTasksResponse.md b/docs/Models/Requests/GetButlerTasksResponse.md deleted file mode 100644 index 4524b9e..0000000 --- a/docs/Models/Requests/GetButlerTasksResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 | -| `Object` | [GetButlerTasksResponseBody](../../Models/Requests/GetButlerTasksResponseBody.md) | :heavy_minus_sign: | All butler tasks | \ No newline at end of file diff --git a/docs/Models/Requests/GetButlerTasksResponseBody.md b/docs/Models/Requests/GetButlerTasksResponseBody.md deleted file mode 100644 index 09641b3..0000000 --- a/docs/Models/Requests/GetButlerTasksResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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/GetCategoriesRequest.md b/docs/Models/Requests/GetCategoriesRequest.md new file mode 100644 index 0000000..712b6f4 --- /dev/null +++ b/docs/Models/Requests/GetCategoriesRequest.md @@ -0,0 +1,19 @@ +# GetCategoriesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/GetCategoriesResponse.md b/docs/Models/Requests/GetCategoriesResponse.md new file mode 100644 index 0000000..5adf744 --- /dev/null +++ b/docs/Models/Requests/GetCategoriesResponse.md @@ -0,0 +1,11 @@ +# GetCategoriesResponse + + +## 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 | +| `MediaContainerWithArtwork` | [MediaContainerWithArtwork](../../Models/Components/MediaContainerWithArtwork.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetChannelsMediaContainer.md b/docs/Models/Requests/GetChannelsMediaContainer.md new file mode 100644 index 0000000..6e69438 --- /dev/null +++ b/docs/Models/Requests/GetChannelsMediaContainer.md @@ -0,0 +1,17 @@ +# GetChannelsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Channel` | List<[Channel](../../Models/Components/Channel.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetChannelsRequest.md b/docs/Models/Requests/GetChannelsRequest.md new file mode 100644 index 0000000..e00c868 --- /dev/null +++ b/docs/Models/Requests/GetChannelsRequest.md @@ -0,0 +1,19 @@ +# GetChannelsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Lineup` | *string* | :heavy_check_mark: | The URI describing the lineup | | \ No newline at end of file diff --git a/docs/Models/Requests/GetChannelsResponse.md b/docs/Models/Requests/GetChannelsResponse.md new file mode 100644 index 0000000..ea798c5 --- /dev/null +++ b/docs/Models/Requests/GetChannelsResponse.md @@ -0,0 +1,12 @@ +# GetChannelsResponse + + +## 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` | [GetChannelsResponseBody](../../Models/Requests/GetChannelsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetChannelsResponseBody.md b/docs/Models/Requests/GetChannelsResponseBody.md new file mode 100644 index 0000000..e0661cd --- /dev/null +++ b/docs/Models/Requests/GetChannelsResponseBody.md @@ -0,0 +1,10 @@ +# GetChannelsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `MediaContainer` | [GetChannelsMediaContainer](../../Models/Requests/GetChannelsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetChapterImageRequest.md b/docs/Models/Requests/GetChapterImageRequest.md new file mode 100644 index 0000000..5579a76 --- /dev/null +++ b/docs/Models/Requests/GetChapterImageRequest.md @@ -0,0 +1,20 @@ +# GetChapterImageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `MediaId` | *long* | :heavy_check_mark: | The id of the media item | | +| `Chapter` | *long* | :heavy_check_mark: | The index of the chapter | | \ No newline at end of file diff --git a/docs/Models/Requests/GetChapterImageResponse.md b/docs/Models/Requests/GetChapterImageResponse.md new file mode 100644 index 0000000..8df8254 --- /dev/null +++ b/docs/Models/Requests/GetChapterImageResponse.md @@ -0,0 +1,11 @@ +# GetChapterImageResponse + + +## 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 | +| `Bytes` | *byte[]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetClusterRequest.md b/docs/Models/Requests/GetClusterRequest.md new file mode 100644 index 0000000..5e874b5 --- /dev/null +++ b/docs/Models/Requests/GetClusterRequest.md @@ -0,0 +1,19 @@ +# GetClusterRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/GetClusterResponse.md b/docs/Models/Requests/GetClusterResponse.md new file mode 100644 index 0000000..33925e4 --- /dev/null +++ b/docs/Models/Requests/GetClusterResponse.md @@ -0,0 +1,11 @@ +# GetClusterResponse + + +## 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 | +| `MediaContainerWithArtwork` | [MediaContainerWithArtwork](../../Models/Components/MediaContainerWithArtwork.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetCollectionImageRequest.md b/docs/Models/Requests/GetCollectionImageRequest.md new file mode 100644 index 0000000..7a7756c --- /dev/null +++ b/docs/Models/Requests/GetCollectionImageRequest.md @@ -0,0 +1,21 @@ +# GetCollectionImageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `CollectionId` | *long* | :heavy_check_mark: | The collection id | | +| `UpdatedAt` | *long* | :heavy_check_mark: | The update time of the image. Used for busting cache. | | +| `Composite` | [Composite](../../Models/Components/Composite.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetCollectionImageResponse.md b/docs/Models/Requests/GetCollectionImageResponse.md new file mode 100644 index 0000000..6fa13f6 --- /dev/null +++ b/docs/Models/Requests/GetCollectionImageResponse.md @@ -0,0 +1,11 @@ +# GetCollectionImageResponse + + +## 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 | +| `Bytes` | *byte[]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetCollectionItemsRequest.md b/docs/Models/Requests/GetCollectionItemsRequest.md new file mode 100644 index 0000000..acb830e --- /dev/null +++ b/docs/Models/Requests/GetCollectionItemsRequest.md @@ -0,0 +1,19 @@ +# GetCollectionItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `CollectionId` | *long* | :heavy_check_mark: | The collection id | | \ No newline at end of file diff --git a/docs/Models/Requests/GetCollectionItemsResponse.md b/docs/Models/Requests/GetCollectionItemsResponse.md new file mode 100644 index 0000000..a9765d7 --- /dev/null +++ b/docs/Models/Requests/GetCollectionItemsResponse.md @@ -0,0 +1,11 @@ +# GetCollectionItemsResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetCollectionsRequest.md b/docs/Models/Requests/GetCollectionsRequest.md new file mode 100644 index 0000000..c6647f3 --- /dev/null +++ b/docs/Models/Requests/GetCollectionsRequest.md @@ -0,0 +1,20 @@ +# GetCollectionsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | +| `MediaQuery` | [MediaQuery](../../Models/Components/MediaQuery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file diff --git a/docs/Models/Requests/GetCollectionsResponse.md b/docs/Models/Requests/GetCollectionsResponse.md new file mode 100644 index 0000000..c6ecbb2 --- /dev/null +++ b/docs/Models/Requests/GetCollectionsResponse.md @@ -0,0 +1,12 @@ +# GetCollectionsResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetColorsMediaContainer.md b/docs/Models/Requests/GetColorsMediaContainer.md new file mode 100644 index 0000000..eba9f47 --- /dev/null +++ b/docs/Models/Requests/GetColorsMediaContainer.md @@ -0,0 +1,17 @@ +# GetColorsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `UltraBlurColors` | List<[UltraBlurColors](../../Models/Requests/UltraBlurColors.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetColorsRequest.md b/docs/Models/Requests/GetColorsRequest.md new file mode 100644 index 0000000..4a17ea6 --- /dev/null +++ b/docs/Models/Requests/GetColorsRequest.md @@ -0,0 +1,19 @@ +# GetColorsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Url` | *string* | :heavy_minus_sign: | Url for image which requires color extraction. Can be relative PMS library path or absolute url. | /library/metadata/217745/art/1718931408 | \ No newline at end of file diff --git a/docs/Models/Requests/GetColorsResponse.md b/docs/Models/Requests/GetColorsResponse.md new file mode 100644 index 0000000..f23f5da --- /dev/null +++ b/docs/Models/Requests/GetColorsResponse.md @@ -0,0 +1,11 @@ +# GetColorsResponse + + +## 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` | [GetColorsResponseBody](../../Models/Requests/GetColorsResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetColorsResponseBody.md b/docs/Models/Requests/GetColorsResponseBody.md new file mode 100644 index 0000000..8dc04d1 --- /dev/null +++ b/docs/Models/Requests/GetColorsResponseBody.md @@ -0,0 +1,10 @@ +# GetColorsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `MediaContainer` | [GetColorsMediaContainer](../../Models/Requests/GetColorsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetCommonRequest.md b/docs/Models/Requests/GetCommonRequest.md new file mode 100644 index 0000000..3a3eb08 --- /dev/null +++ b/docs/Models/Requests/GetCommonRequest.md @@ -0,0 +1,21 @@ +# GetCommonRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | +| `Type` | *long* | :heavy_minus_sign: | Item type | | +| `MediaQuery` | [MediaQuery](../../Models/Components/MediaQuery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file diff --git a/docs/Models/Requests/GetCommonResponse.md b/docs/Models/Requests/GetCommonResponse.md new file mode 100644 index 0000000..8f67b11 --- /dev/null +++ b/docs/Models/Requests/GetCommonResponse.md @@ -0,0 +1,12 @@ +# GetCommonResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetCompanionsDataResponse.md b/docs/Models/Requests/GetCompanionsDataResponse.md deleted file mode 100644 index 21cf202..0000000 --- a/docs/Models/Requests/GetCompanionsDataResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetCompanionsDataResponse - - -## 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: | Companions Data | \ No newline at end of file diff --git a/docs/Models/Requests/GetContinueWatchingMediaContainer.md b/docs/Models/Requests/GetContinueWatchingMediaContainer.md new file mode 100644 index 0000000..b69209b --- /dev/null +++ b/docs/Models/Requests/GetContinueWatchingMediaContainer.md @@ -0,0 +1,17 @@ +# GetContinueWatchingMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Hub` | List<[Models.Components.Hub](../../Models/Components/Hub.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetContinueWatchingRequest.md b/docs/Models/Requests/GetContinueWatchingRequest.md new file mode 100644 index 0000000..99cd096 --- /dev/null +++ b/docs/Models/Requests/GetContinueWatchingRequest.md @@ -0,0 +1,19 @@ +# GetContinueWatchingRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Count` | *long* | :heavy_minus_sign: | Limit results to count items | | \ No newline at end of file diff --git a/docs/Models/Requests/GetContinueWatchingResponse.md b/docs/Models/Requests/GetContinueWatchingResponse.md new file mode 100644 index 0000000..1660391 --- /dev/null +++ b/docs/Models/Requests/GetContinueWatchingResponse.md @@ -0,0 +1,12 @@ +# GetContinueWatchingResponse + + +## 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` | [GetContinueWatchingResponseBody](../../Models/Requests/GetContinueWatchingResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetContinueWatchingResponseBody.md b/docs/Models/Requests/GetContinueWatchingResponseBody.md new file mode 100644 index 0000000..8852b11 --- /dev/null +++ b/docs/Models/Requests/GetContinueWatchingResponseBody.md @@ -0,0 +1,10 @@ +# GetContinueWatchingResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetContinueWatchingMediaContainer](../../Models/Requests/GetContinueWatchingMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountriesLibraryDirectory.md b/docs/Models/Requests/GetCountriesLibraryDirectory.md deleted file mode 100644 index eb1ad5b..0000000 --- a/docs/Models/Requests/GetCountriesLibraryDirectory.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCountriesLibraryDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | -| `FastKey` | *string* | :heavy_check_mark: | N/A | /library/sections/2/all?country=15491 | -| `Key` | *string* | :heavy_check_mark: | N/A | 15491 | -| `Title` | *string* | :heavy_check_mark: | N/A | Japan | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountriesLibraryMediaContainer.md b/docs/Models/Requests/GetCountriesLibraryMediaContainer.md deleted file mode 100644 index 6c26afa..0000000 --- a/docs/Models/Requests/GetCountriesLibraryMediaContainer.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetCountriesLibraryMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `AllowSync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `Art` | *string* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `Content` | *string* | :heavy_check_mark: | The content type or mode. | secondary | -| `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `MediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `MediaTagVersion` | *long* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `Nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | -| `Thumb` | *string* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `Title1` | *string* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `Title2` | *string* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | -| `ViewGroup` | *string* | :heavy_check_mark: | Identifier for the view group layout. | secondary | -| `Directory` | List<[GetCountriesLibraryDirectory](../../Models/Requests/GetCountriesLibraryDirectory.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountriesLibraryQueryParamType.md b/docs/Models/Requests/GetCountriesLibraryQueryParamType.md deleted file mode 100644 index d29a551..0000000 --- a/docs/Models/Requests/GetCountriesLibraryQueryParamType.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetCountriesLibraryQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | 1 | -| `TvShow` | 2 | -| `Season` | 3 | -| `Episode` | 4 | -| `Artist` | 5 | -| `Album` | 6 | -| `Track` | 7 | -| `PhotoAlbum` | 8 | -| `Photo` | 9 | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountriesLibraryRequest.md b/docs/Models/Requests/GetCountriesLibraryRequest.md deleted file mode 100644 index 9e6d15a..0000000 --- a/docs/Models/Requests/GetCountriesLibraryRequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetCountriesLibraryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `Type` | [GetCountriesLibraryQueryParamType](../../Models/Requests/GetCountriesLibraryQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountriesLibraryResponse.md b/docs/Models/Requests/GetCountriesLibraryResponse.md deleted file mode 100644 index 072e4f4..0000000 --- a/docs/Models/Requests/GetCountriesLibraryResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetCountriesLibraryResponse - - -## 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` | [GetCountriesLibraryResponseBody](../../Models/Requests/GetCountriesLibraryResponseBody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountriesLibraryResponseBody.md b/docs/Models/Requests/GetCountriesLibraryResponseBody.md deleted file mode 100644 index 853467b..0000000 --- a/docs/Models/Requests/GetCountriesLibraryResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCountriesLibraryResponseBody - -Successful response containing media container data. - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetCountriesLibraryMediaContainer](../../Models/Requests/GetCountriesLibraryMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountriesLineupsRequest.md b/docs/Models/Requests/GetCountriesLineupsRequest.md new file mode 100644 index 0000000..838680b --- /dev/null +++ b/docs/Models/Requests/GetCountriesLineupsRequest.md @@ -0,0 +1,21 @@ +# GetCountriesLineupsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Country` | *string* | :heavy_check_mark: | 3 letter country code | | +| `EpgId` | *string* | :heavy_check_mark: | The `providerIdentifier` of the provider | | +| `PostalCode` | *string* | :heavy_minus_sign: | The postal code for the lineups to fetch | | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountriesLineupsResponse.md b/docs/Models/Requests/GetCountriesLineupsResponse.md new file mode 100644 index 0000000..eb388ed --- /dev/null +++ b/docs/Models/Requests/GetCountriesLineupsResponse.md @@ -0,0 +1,11 @@ +# GetCountriesLineupsResponse + + +## 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 | +| `MediaContainerWithLineup` | [MediaContainerWithLineup](../../Models/Components/MediaContainerWithLineup.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountriesMediaContainer.md b/docs/Models/Requests/GetCountriesMediaContainer.md new file mode 100644 index 0000000..c61589c --- /dev/null +++ b/docs/Models/Requests/GetCountriesMediaContainer.md @@ -0,0 +1,17 @@ +# GetCountriesMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Country` | List<[Country](../../Models/Requests/Country.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountriesResponse.md b/docs/Models/Requests/GetCountriesResponse.md new file mode 100644 index 0000000..8728cf2 --- /dev/null +++ b/docs/Models/Requests/GetCountriesResponse.md @@ -0,0 +1,12 @@ +# GetCountriesResponse + + +## 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` | [GetCountriesResponseBody](../../Models/Requests/GetCountriesResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountriesResponseBody.md b/docs/Models/Requests/GetCountriesResponseBody.md new file mode 100644 index 0000000..87183e5 --- /dev/null +++ b/docs/Models/Requests/GetCountriesResponseBody.md @@ -0,0 +1,10 @@ +# GetCountriesResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `MediaContainer` | [GetCountriesMediaContainer](../../Models/Requests/GetCountriesMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountryRegionsCountry.md b/docs/Models/Requests/GetCountryRegionsCountry.md new file mode 100644 index 0000000..5f59d02 --- /dev/null +++ b/docs/Models/Requests/GetCountryRegionsCountry.md @@ -0,0 +1,11 @@ +# GetCountryRegionsCountry + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `National` | *bool* | :heavy_minus_sign: | N/A | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountryRegionsMediaContainer.md b/docs/Models/Requests/GetCountryRegionsMediaContainer.md new file mode 100644 index 0000000..7165ad3 --- /dev/null +++ b/docs/Models/Requests/GetCountryRegionsMediaContainer.md @@ -0,0 +1,17 @@ +# GetCountryRegionsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Country` | List<[GetCountryRegionsCountry](../../Models/Requests/GetCountryRegionsCountry.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountryRegionsRequest.md b/docs/Models/Requests/GetCountryRegionsRequest.md new file mode 100644 index 0000000..bb57f13 --- /dev/null +++ b/docs/Models/Requests/GetCountryRegionsRequest.md @@ -0,0 +1,20 @@ +# GetCountryRegionsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Country` | *string* | :heavy_check_mark: | 3 letter country code | | +| `EpgId` | *string* | :heavy_check_mark: | The `providerIdentifier` of the provider | | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountryRegionsResponse.md b/docs/Models/Requests/GetCountryRegionsResponse.md new file mode 100644 index 0000000..0975225 --- /dev/null +++ b/docs/Models/Requests/GetCountryRegionsResponse.md @@ -0,0 +1,12 @@ +# GetCountryRegionsResponse + + +## 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` | [GetCountryRegionsResponseBody](../../Models/Requests/GetCountryRegionsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetCountryRegionsResponseBody.md b/docs/Models/Requests/GetCountryRegionsResponseBody.md new file mode 100644 index 0000000..cfd7d29 --- /dev/null +++ b/docs/Models/Requests/GetCountryRegionsResponseBody.md @@ -0,0 +1,10 @@ +# GetCountryRegionsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetCountryRegionsMediaContainer](../../Models/Requests/GetCountryRegionsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDVRDVR.md b/docs/Models/Requests/GetDVRDVR.md new file mode 100644 index 0000000..05c9e2d --- /dev/null +++ b/docs/Models/Requests/GetDVRDVR.md @@ -0,0 +1,12 @@ +# GetDVRDVR + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Device` | List<[Models.Components.Device](../../Models/Components/Device.md)> | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Language` | *string* | :heavy_minus_sign: | N/A | +| `Lineup` | *string* | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDVRDVRsMediaContainer.md b/docs/Models/Requests/GetDVRDVRsMediaContainer.md new file mode 100644 index 0000000..be02e2d --- /dev/null +++ b/docs/Models/Requests/GetDVRDVRsMediaContainer.md @@ -0,0 +1,17 @@ +# GetDVRDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Status` | *long* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/Models/Requests/GetDVRMediaContainer.md b/docs/Models/Requests/GetDVRMediaContainer.md new file mode 100644 index 0000000..4abfd70 --- /dev/null +++ b/docs/Models/Requests/GetDVRMediaContainer.md @@ -0,0 +1,9 @@ +# GetDVRMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `MediaContainer` | [GetDVRDVRsMediaContainer](../../Models/Requests/GetDVRDVRsMediaContainer.md) | :heavy_minus_sign: | N/A | +| `Dvr` | List<[GetDVRDVR](../../Models/Requests/GetDVRDVR.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDVRRequest.md b/docs/Models/Requests/GetDVRRequest.md new file mode 100644 index 0000000..9d5a1cb --- /dev/null +++ b/docs/Models/Requests/GetDVRRequest.md @@ -0,0 +1,19 @@ +# GetDVRRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DvrId` | *long* | :heavy_check_mark: | The ID of the DVR. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetDVRResponse.md b/docs/Models/Requests/GetDVRResponse.md new file mode 100644 index 0000000..63de243 --- /dev/null +++ b/docs/Models/Requests/GetDVRResponse.md @@ -0,0 +1,12 @@ +# GetDVRResponse + + +## 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` | [GetDVRResponseBody](../../Models/Requests/GetDVRResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDVRResponseBody.md b/docs/Models/Requests/GetDVRResponseBody.md new file mode 100644 index 0000000..d191396 --- /dev/null +++ b/docs/Models/Requests/GetDVRResponseBody.md @@ -0,0 +1,10 @@ +# GetDVRResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `MediaContainer` | [GetDVRMediaContainer](../../Models/Requests/GetDVRMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDeviceDetailsRequest.md b/docs/Models/Requests/GetDeviceDetailsRequest.md new file mode 100644 index 0000000..ed9ffd3 --- /dev/null +++ b/docs/Models/Requests/GetDeviceDetailsRequest.md @@ -0,0 +1,19 @@ +# GetDeviceDetailsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DeviceId` | *long* | :heavy_check_mark: | The ID of the device. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetDeviceDetailsResponse.md b/docs/Models/Requests/GetDeviceDetailsResponse.md new file mode 100644 index 0000000..04501a6 --- /dev/null +++ b/docs/Models/Requests/GetDeviceDetailsResponse.md @@ -0,0 +1,11 @@ +# GetDeviceDetailsResponse + + +## 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 | +| `MediaContainerWithDevice` | [MediaContainerWithDevice](../../Models/Components/MediaContainerWithDevice.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetDevicesChannelsMediaContainer.md b/docs/Models/Requests/GetDevicesChannelsMediaContainer.md new file mode 100644 index 0000000..710c9ca --- /dev/null +++ b/docs/Models/Requests/GetDevicesChannelsMediaContainer.md @@ -0,0 +1,17 @@ +# GetDevicesChannelsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `DeviceChannel` | List<[DeviceChannel](../../Models/Requests/DeviceChannel.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDevicesChannelsRequest.md b/docs/Models/Requests/GetDevicesChannelsRequest.md new file mode 100644 index 0000000..7035c66 --- /dev/null +++ b/docs/Models/Requests/GetDevicesChannelsRequest.md @@ -0,0 +1,19 @@ +# GetDevicesChannelsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DeviceId` | *long* | :heavy_check_mark: | The ID of the device. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetDevicesChannelsResponse.md b/docs/Models/Requests/GetDevicesChannelsResponse.md new file mode 100644 index 0000000..8889e0a --- /dev/null +++ b/docs/Models/Requests/GetDevicesChannelsResponse.md @@ -0,0 +1,12 @@ +# GetDevicesChannelsResponse + + +## 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` | [GetDevicesChannelsResponseBody](../../Models/Requests/GetDevicesChannelsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDevicesChannelsResponseBody.md b/docs/Models/Requests/GetDevicesChannelsResponseBody.md new file mode 100644 index 0000000..c4e3a4f --- /dev/null +++ b/docs/Models/Requests/GetDevicesChannelsResponseBody.md @@ -0,0 +1,10 @@ +# GetDevicesChannelsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetDevicesChannelsMediaContainer](../../Models/Requests/GetDevicesChannelsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDevicesMediaContainer.md b/docs/Models/Requests/GetDevicesMediaContainer.md deleted file mode 100644 index 34ea65e..0000000 --- a/docs/Models/Requests/GetDevicesMediaContainer.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 deleted file mode 100644 index 259a4cc..0000000 --- a/docs/Models/Requests/GetDevicesResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 | -| `Object` | [GetDevicesResponseBody](../../Models/Requests/GetDevicesResponseBody.md) | :heavy_minus_sign: | Devices | \ No newline at end of file diff --git a/docs/Models/Requests/GetDevicesResponseBody.md b/docs/Models/Requests/GetDevicesResponseBody.md deleted file mode 100644 index f84caa0..0000000 --- a/docs/Models/Requests/GetDevicesResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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/GetDownloadQueueDownloadQueue.md b/docs/Models/Requests/GetDownloadQueueDownloadQueue.md new file mode 100644 index 0000000..bd2e8a5 --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueDownloadQueue.md @@ -0,0 +1,10 @@ +# GetDownloadQueueDownloadQueue + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Id` | *long* | :heavy_minus_sign: | N/A | +| `ItemCount` | *long* | :heavy_minus_sign: | N/A | +| `Status` | [GetDownloadQueueStatus](../../Models/Requests/GetDownloadQueueStatus.md) | :heavy_minus_sign: | The state of this queue
- deciding: At least one item is still being decided
- waiting: At least one item is waiting for transcode and none are currently transcoding
- processing: At least one item is being transcoded
- done: All items are available (or potentially expired)
- error: At least one item has encountered an error
| \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueItemsDecisionResult.md b/docs/Models/Requests/GetDownloadQueueItemsDecisionResult.md new file mode 100644 index 0000000..03ebae6 --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueItemsDecisionResult.md @@ -0,0 +1,16 @@ +# GetDownloadQueueItemsDecisionResult + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `AvailableBandwidth` | *long* | :heavy_minus_sign: | The maximum bitrate set when item was added | +| `DirectPlayDecisionCode` | *long* | :heavy_minus_sign: | N/A | +| `DirectPlayDecisionText` | *string* | :heavy_minus_sign: | N/A | +| `GeneralDecisionCode` | *long* | :heavy_minus_sign: | N/A | +| `GeneralDecisionText` | *string* | :heavy_minus_sign: | N/A | +| `MdeDecisionCode` | *long* | :heavy_minus_sign: | The code indicating the status of evaluation of playback when client indicates `hasMDE=1` | +| `MdeDecisionText` | *string* | :heavy_minus_sign: | Descriptive text for the above code | +| `TranscodeDecisionCode` | *long* | :heavy_minus_sign: | N/A | +| `TranscodeDecisionText` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueItemsDownloadQueueItem.md b/docs/Models/Requests/GetDownloadQueueItemsDownloadQueueItem.md new file mode 100644 index 0000000..14c00c0 --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueItemsDownloadQueueItem.md @@ -0,0 +1,15 @@ +# GetDownloadQueueItemsDownloadQueueItem + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `DecisionResult` | [GetDownloadQueueItemsDecisionResult](../../Models/Requests/GetDownloadQueueItemsDecisionResult.md) | :heavy_minus_sign: | N/A | +| `Error` | *string* | :heavy_minus_sign: | The error encountered in transcoding or decision | +| `Id` | *long* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `QueueId` | *long* | :heavy_minus_sign: | N/A | +| `Status` | [GetDownloadQueueItemsStatus](../../Models/Requests/GetDownloadQueueItemsStatus.md) | :heavy_minus_sign: | The state of the item:
- deciding: The item decision is pending
- waiting: The item is waiting for transcode
- processing: The item is being transcoded
- available: The item is available for download
- error: The item encountered an error in the decision or transcode
- expired: The transcoded item has timed out and is no longer available
| +| `Transcode` | [GetDownloadQueueItemsTranscode](../../Models/Requests/GetDownloadQueueItemsTranscode.md) | :heavy_minus_sign: | The transcode session object which is not yet documented otherwise it'd be a $ref here. | +| `TranscodeSession` | [TranscodeSession](../../Models/Components/TranscodeSession.md) | :heavy_minus_sign: | The transcode session if item is currently being transcoded | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueItemsMediaContainer.md b/docs/Models/Requests/GetDownloadQueueItemsMediaContainer.md new file mode 100644 index 0000000..6303903 --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueItemsMediaContainer.md @@ -0,0 +1,17 @@ +# GetDownloadQueueItemsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `DownloadQueueItem` | List<[GetDownloadQueueItemsDownloadQueueItem](../../Models/Requests/GetDownloadQueueItemsDownloadQueueItem.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueItemsRequest.md b/docs/Models/Requests/GetDownloadQueueItemsRequest.md new file mode 100644 index 0000000..c64821d --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueItemsRequest.md @@ -0,0 +1,20 @@ +# GetDownloadQueueItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `QueueId` | *long* | :heavy_check_mark: | The queue id | | +| `ItemId` | List<*long*> | :heavy_check_mark: | The item ids | [
32,
345,
23
] | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueItemsResponse.md b/docs/Models/Requests/GetDownloadQueueItemsResponse.md new file mode 100644 index 0000000..8a358a3 --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueItemsResponse.md @@ -0,0 +1,11 @@ +# GetDownloadQueueItemsResponse + + +## 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` | [GetDownloadQueueItemsResponseBody](../../Models/Requests/GetDownloadQueueItemsResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueItemsResponseBody.md b/docs/Models/Requests/GetDownloadQueueItemsResponseBody.md new file mode 100644 index 0000000..6627322 --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueItemsResponseBody.md @@ -0,0 +1,10 @@ +# GetDownloadQueueItemsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetDownloadQueueItemsMediaContainer](../../Models/Requests/GetDownloadQueueItemsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueItemsStatus.md b/docs/Models/Requests/GetDownloadQueueItemsStatus.md new file mode 100644 index 0000000..3a63d5a --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueItemsStatus.md @@ -0,0 +1,22 @@ +# GetDownloadQueueItemsStatus + +The state of the item: + - deciding: The item decision is pending + - waiting: The item is waiting for transcode + - processing: The item is being transcoded + - available: The item is available for download + - error: The item encountered an error in the decision or transcode + - expired: The transcoded item has timed out and is no longer available + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Deciding` | deciding | +| `Waiting` | waiting | +| `Processing` | processing | +| `Available` | available | +| `Error` | error | +| `Expired` | expired | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueItemsTranscode.md b/docs/Models/Requests/GetDownloadQueueItemsTranscode.md new file mode 100644 index 0000000..cf4954a --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueItemsTranscode.md @@ -0,0 +1,9 @@ +# GetDownloadQueueItemsTranscode + +The transcode session object which is not yet documented otherwise it'd be a $ref here. + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueMediaContainer.md b/docs/Models/Requests/GetDownloadQueueMediaContainer.md new file mode 100644 index 0000000..2c3952c --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueMediaContainer.md @@ -0,0 +1,17 @@ +# GetDownloadQueueMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `DownloadQueue` | List<[GetDownloadQueueDownloadQueue](../../Models/Requests/GetDownloadQueueDownloadQueue.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueMediaRequest.md b/docs/Models/Requests/GetDownloadQueueMediaRequest.md new file mode 100644 index 0000000..044a8fa --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueMediaRequest.md @@ -0,0 +1,20 @@ +# GetDownloadQueueMediaRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `QueueId` | *long* | :heavy_check_mark: | The queue id | | +| `ItemId` | *long* | :heavy_check_mark: | The item ids | 32 | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueMediaResponse.md b/docs/Models/Requests/GetDownloadQueueMediaResponse.md new file mode 100644 index 0000000..588514c --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueMediaResponse.md @@ -0,0 +1,11 @@ +# GetDownloadQueueMediaResponse + + +## 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 | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueRequest.md b/docs/Models/Requests/GetDownloadQueueRequest.md new file mode 100644 index 0000000..63e44d4 --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueRequest.md @@ -0,0 +1,19 @@ +# GetDownloadQueueRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `QueueId` | *long* | :heavy_check_mark: | The queue id | | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueResponse.md b/docs/Models/Requests/GetDownloadQueueResponse.md new file mode 100644 index 0000000..58d4a95 --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueResponse.md @@ -0,0 +1,11 @@ +# GetDownloadQueueResponse + + +## 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` | [GetDownloadQueueResponseBody](../../Models/Requests/GetDownloadQueueResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueResponseBody.md b/docs/Models/Requests/GetDownloadQueueResponseBody.md new file mode 100644 index 0000000..40f4907 --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueResponseBody.md @@ -0,0 +1,10 @@ +# GetDownloadQueueResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetDownloadQueueMediaContainer](../../Models/Requests/GetDownloadQueueMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetDownloadQueueStatus.md b/docs/Models/Requests/GetDownloadQueueStatus.md new file mode 100644 index 0000000..620e88c --- /dev/null +++ b/docs/Models/Requests/GetDownloadQueueStatus.md @@ -0,0 +1,20 @@ +# GetDownloadQueueStatus + +The state of this queue + - deciding: At least one item is still being decided + - waiting: At least one item is waiting for transcode and none are currently transcoding + - processing: At least one item is being transcoded + - done: All items are available (or potentially expired) + - error: At least one item has encountered an error + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Deciding` | deciding | +| `Waiting` | waiting | +| `Processing` | processing | +| `Done` | done | +| `Error` | error | \ No newline at end of file diff --git a/docs/Models/Requests/GetExtrasRequest.md b/docs/Models/Requests/GetExtrasRequest.md new file mode 100644 index 0000000..5571c23 --- /dev/null +++ b/docs/Models/Requests/GetExtrasRequest.md @@ -0,0 +1,19 @@ +# GetExtrasRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetExtrasResponse.md b/docs/Models/Requests/GetExtrasResponse.md new file mode 100644 index 0000000..a6c8fd4 --- /dev/null +++ b/docs/Models/Requests/GetExtrasResponse.md @@ -0,0 +1,12 @@ +# GetExtrasResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetFileHashRequest.md b/docs/Models/Requests/GetFileHashRequest.md deleted file mode 100644 index b1ec341..0000000 --- a/docs/Models/Requests/GetFileHashRequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# 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 deleted file mode 100644 index 6fcec8a..0000000 --- a/docs/Models/Requests/GetFileHashResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/GetFileRequest.md b/docs/Models/Requests/GetFileRequest.md new file mode 100644 index 0000000..e5db5dc --- /dev/null +++ b/docs/Models/Requests/GetFileRequest.md @@ -0,0 +1,20 @@ +# GetFileRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Url` | *string* | :heavy_minus_sign: | The bundle url, typically starting with `metadata://` or `media://` | | \ No newline at end of file diff --git a/docs/Models/Requests/GetFileResponse.md b/docs/Models/Requests/GetFileResponse.md new file mode 100644 index 0000000..81db38b --- /dev/null +++ b/docs/Models/Requests/GetFileResponse.md @@ -0,0 +1,12 @@ +# GetFileResponse + + +## 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 | +| `TwoHundredAudioMpeg3Bytes` | *byte[]* | :heavy_minus_sign: | OK | +| `TwoHundredImageJpegBytes` | *byte[]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetFirstCharactersDirectory.md b/docs/Models/Requests/GetFirstCharactersDirectory.md new file mode 100644 index 0000000..fae26b4 --- /dev/null +++ b/docs/Models/Requests/GetFirstCharactersDirectory.md @@ -0,0 +1,10 @@ +# GetFirstCharactersDirectory + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Size` | *long* | :heavy_minus_sign: | The number of items starting with this character | +| `Title` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetFirstCharactersMediaContainer.md b/docs/Models/Requests/GetFirstCharactersMediaContainer.md new file mode 100644 index 0000000..81f1c23 --- /dev/null +++ b/docs/Models/Requests/GetFirstCharactersMediaContainer.md @@ -0,0 +1,17 @@ +# GetFirstCharactersMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Directory` | List<[GetFirstCharactersDirectory](../../Models/Requests/GetFirstCharactersDirectory.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetFirstCharactersRequest.md b/docs/Models/Requests/GetFirstCharactersRequest.md new file mode 100644 index 0000000..e8fdd2d --- /dev/null +++ b/docs/Models/Requests/GetFirstCharactersRequest.md @@ -0,0 +1,22 @@ +# GetFirstCharactersRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | +| `Type` | *long* | :heavy_minus_sign: | The metadata type to filter on | | +| `Sort` | *long* | :heavy_minus_sign: | The metadata type to filter on | | +| `MediaQuery` | [MediaQuery](../../Models/Components/MediaQuery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file diff --git a/docs/Models/Requests/GetFirstCharactersResponse.md b/docs/Models/Requests/GetFirstCharactersResponse.md new file mode 100644 index 0000000..33e8474 --- /dev/null +++ b/docs/Models/Requests/GetFirstCharactersResponse.md @@ -0,0 +1,11 @@ +# GetFirstCharactersResponse + + +## 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` | [GetFirstCharactersResponseBody](../../Models/Requests/GetFirstCharactersResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetFirstCharactersResponseBody.md b/docs/Models/Requests/GetFirstCharactersResponseBody.md new file mode 100644 index 0000000..d1896c4 --- /dev/null +++ b/docs/Models/Requests/GetFirstCharactersResponseBody.md @@ -0,0 +1,10 @@ +# GetFirstCharactersResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetFirstCharactersMediaContainer](../../Models/Requests/GetFirstCharactersMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetFoldersDirectory.md b/docs/Models/Requests/GetFoldersDirectory.md new file mode 100644 index 0000000..a64d593 --- /dev/null +++ b/docs/Models/Requests/GetFoldersDirectory.md @@ -0,0 +1,10 @@ +# GetFoldersDirectory + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `FastKey` | *string* | :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/GetFoldersMediaContainer.md b/docs/Models/Requests/GetFoldersMediaContainer.md new file mode 100644 index 0000000..0fa8ca7 --- /dev/null +++ b/docs/Models/Requests/GetFoldersMediaContainer.md @@ -0,0 +1,17 @@ +# GetFoldersMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Directory` | List<[GetFoldersDirectory](../../Models/Requests/GetFoldersDirectory.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetFoldersRequest.md b/docs/Models/Requests/GetFoldersRequest.md new file mode 100644 index 0000000..51978bc --- /dev/null +++ b/docs/Models/Requests/GetFoldersRequest.md @@ -0,0 +1,19 @@ +# GetFoldersRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/GetFoldersResponse.md b/docs/Models/Requests/GetFoldersResponse.md new file mode 100644 index 0000000..e6773e2 --- /dev/null +++ b/docs/Models/Requests/GetFoldersResponse.md @@ -0,0 +1,11 @@ +# GetFoldersResponse + + +## 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` | [GetFoldersResponseBody](../../Models/Requests/GetFoldersResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetFoldersResponseBody.md b/docs/Models/Requests/GetFoldersResponseBody.md new file mode 100644 index 0000000..bfb42d0 --- /dev/null +++ b/docs/Models/Requests/GetFoldersResponseBody.md @@ -0,0 +1,10 @@ +# GetFoldersResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `MediaContainer` | [GetFoldersMediaContainer](../../Models/Requests/GetFoldersMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetGenresLibraryDirectory.md b/docs/Models/Requests/GetGenresLibraryDirectory.md deleted file mode 100644 index dccf938..0000000 --- a/docs/Models/Requests/GetGenresLibraryDirectory.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGenresLibraryDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | -| `FastKey` | *string* | :heavy_check_mark: | N/A | /library/sections/10/all?genre=89 | -| `Key` | *string* | :heavy_check_mark: | N/A | 89 | -| `Title` | *string* | :heavy_check_mark: | N/A | Action | -| `Type` | *string* | :heavy_check_mark: | N/A | genre | \ No newline at end of file diff --git a/docs/Models/Requests/GetGenresLibraryMediaContainer.md b/docs/Models/Requests/GetGenresLibraryMediaContainer.md deleted file mode 100644 index 79ff79c..0000000 --- a/docs/Models/Requests/GetGenresLibraryMediaContainer.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetGenresLibraryMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `AllowSync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `Art` | *string* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `Content` | *string* | :heavy_check_mark: | The content type or mode. | secondary | -| `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `MediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `MediaTagVersion` | *long* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `Nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | -| `Thumb` | *string* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `Title1` | *string* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `Title2` | *string* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | -| `ViewGroup` | *string* | :heavy_check_mark: | Identifier for the view group layout. | secondary | -| `Directory` | List<[GetGenresLibraryDirectory](../../Models/Requests/GetGenresLibraryDirectory.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetGenresLibraryQueryParamType.md b/docs/Models/Requests/GetGenresLibraryQueryParamType.md deleted file mode 100644 index 9f1c219..0000000 --- a/docs/Models/Requests/GetGenresLibraryQueryParamType.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetGenresLibraryQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | 1 | -| `TvShow` | 2 | -| `Season` | 3 | -| `Episode` | 4 | -| `Artist` | 5 | -| `Album` | 6 | -| `Track` | 7 | -| `PhotoAlbum` | 8 | -| `Photo` | 9 | \ No newline at end of file diff --git a/docs/Models/Requests/GetGenresLibraryRequest.md b/docs/Models/Requests/GetGenresLibraryRequest.md deleted file mode 100644 index 6c59e4b..0000000 --- a/docs/Models/Requests/GetGenresLibraryRequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetGenresLibraryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `Type` | [GetGenresLibraryQueryParamType](../../Models/Requests/GetGenresLibraryQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/Models/Requests/GetGenresLibraryResponse.md b/docs/Models/Requests/GetGenresLibraryResponse.md deleted file mode 100644 index 67d8111..0000000 --- a/docs/Models/Requests/GetGenresLibraryResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGenresLibraryResponse - - -## 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` | [GetGenresLibraryResponseBody](../../Models/Requests/GetGenresLibraryResponseBody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/Models/Requests/GetGenresLibraryResponseBody.md b/docs/Models/Requests/GetGenresLibraryResponseBody.md deleted file mode 100644 index 30970a6..0000000 --- a/docs/Models/Requests/GetGenresLibraryResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGenresLibraryResponseBody - -Successful response containing media container data. - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetGenresLibraryMediaContainer](../../Models/Requests/GetGenresLibraryMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetGeoDataGeoData.md b/docs/Models/Requests/GetGeoDataGeoData.md deleted file mode 100644 index c8d68e9..0000000 --- a/docs/Models/Requests/GetGeoDataGeoData.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetGeoDataGeoData - -Geo location data - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `Code` | *string* | :heavy_check_mark: | The ISO 3166-1 alpha-2 code of the country. | VI | -| `ContinentCode` | *string* | :heavy_check_mark: | The continent code where the country is located. | NA | -| `Country` | *string* | :heavy_check_mark: | The official name of the country. | United States Virgin Islands | -| `City` | *string* | :heavy_check_mark: | The name of the city. | Amsterdam | -| `EuropeanUnionMember` | *bool* | :heavy_minus_sign: | Indicates if the country is a member of the European Union. | true | -| `TimeZone` | *string* | :heavy_check_mark: | The time zone of the country. | America/St_Thomas | -| `PostalCode` | *string* | :heavy_check_mark: | The postal code of the location. | 802 | -| `InPrivacyRestrictedCountry` | *bool* | :heavy_minus_sign: | Indicates if the country has privacy restrictions. | true | -| `InPrivacyRestrictedRegion` | *bool* | :heavy_minus_sign: | Indicates if the region has privacy restrictions. | true | -| `Subdivisions` | *string* | :heavy_check_mark: | The name of the primary administrative subdivision. | Saint Thomas | -| `Coordinates` | *string* | :heavy_check_mark: | The geographical coordinates (latitude, longitude) of the location. | 18.3381, -64.8941 | \ No newline at end of file diff --git a/docs/Models/Requests/GetGeoDataResponse.md b/docs/Models/Requests/GetGeoDataResponse.md deleted file mode 100644 index db601ec..0000000 --- a/docs/Models/Requests/GetGeoDataResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGeoDataResponse - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `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 | | -| `GeoData` | [GetGeoDataGeoData](../../Models/Requests/GetGeoDataGeoData.md) | :heavy_minus_sign: | Gets the geo location data of the user | {
"code": "VI",
"continent_code": "NA",
"country": "United States Virgin Islands",
"city": "Amsterdam",
"european_union_member": true,
"time_zone": "America/St_Thomas",
"postal_code": 802,
"in_privacy_restricted_country": true,
"in_privacy_restricted_region": true,
"subdivisions": "Saint Thomas",
"coordinates": "18.3381, -64.8941"
} | \ No newline at end of file diff --git a/docs/Models/Requests/GetGlobalHubsMediaContainer.md b/docs/Models/Requests/GetGlobalHubsMediaContainer.md deleted file mode 100644 index 1203dfa..0000000 --- a/docs/Models/Requests/GetGlobalHubsMediaContainer.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGlobalHubsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 8 | -| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | true | -| `Identifier` | *string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `Hub` | List<[Hub](../../Models/Requests/Hub.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetGlobalHubsMetadata.md b/docs/Models/Requests/GetGlobalHubsMetadata.md deleted file mode 100644 index 21aec4a..0000000 --- a/docs/Models/Requests/GetGlobalHubsMetadata.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetGlobalHubsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 57070 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /playlists/57070/items | -| `Guid` | *string* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://9fee6c5b-3143-4923-813e-57bd0190056c | -| `Type` | *string* | :heavy_minus_sign: | N/A | playlist | -| `Title` | *string* | :heavy_minus_sign: | N/A | November Movie Day | -| `TitleSort` | *string* | :heavy_minus_sign: | N/A | Tracks | -| `Summary` | *string* | :heavy_minus_sign: | N/A | | -| `Smart` | *bool* | :heavy_minus_sign: | N/A | false | -| `PlaylistType` | *string* | :heavy_minus_sign: | N/A | video | -| `Composite` | *string* | :heavy_minus_sign: | N/A | /playlists/57070/composite/1668787730 | -| `Icon` | *string* | :heavy_minus_sign: | N/A | playlist://image.smart | -| `ViewCount` | *int* | :heavy_minus_sign: | N/A | 2 | -| `LastViewedAt` | *int* | :heavy_minus_sign: | N/A | 1668787732 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 16873000 | -| `LeafCount` | *int* | :heavy_minus_sign: | N/A | 3 | -| `AddedAt` | *int* | :heavy_minus_sign: | N/A | 1668779618 | -| `UpdatedAt` | *int* | :heavy_minus_sign: | N/A | 1668787730 | \ No newline at end of file diff --git a/docs/Models/Requests/GetGlobalHubsRequest.md b/docs/Models/Requests/GetGlobalHubsRequest.md deleted file mode 100644 index 2c8afd7..0000000 --- a/docs/Models/Requests/GetGlobalHubsRequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# 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 deleted file mode 100644 index c2a8761..0000000 --- a/docs/Models/Requests/GetGlobalHubsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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: | returns global hubs | \ No newline at end of file diff --git a/docs/Models/Requests/GetGlobalHubsResponseBody.md b/docs/Models/Requests/GetGlobalHubsResponseBody.md deleted file mode 100644 index 6887385..0000000 --- a/docs/Models/Requests/GetGlobalHubsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGlobalHubsResponseBody - -returns global hubs - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| `MediaContainer` | [GetGlobalHubsMediaContainer](../../Models/Requests/GetGlobalHubsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetHistoryItemRequest.md b/docs/Models/Requests/GetHistoryItemRequest.md new file mode 100644 index 0000000..b3ed585 --- /dev/null +++ b/docs/Models/Requests/GetHistoryItemRequest.md @@ -0,0 +1,19 @@ +# GetHistoryItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `HistoryId` | *long* | :heavy_check_mark: | The id of the history item (the `historyKey` from above) | | \ No newline at end of file diff --git a/docs/Models/Requests/GetHistoryItemResponse.md b/docs/Models/Requests/GetHistoryItemResponse.md new file mode 100644 index 0000000..9844bc9 --- /dev/null +++ b/docs/Models/Requests/GetHistoryItemResponse.md @@ -0,0 +1,12 @@ +# GetHistoryItemResponse + + +## 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 | +| `HistoryAllGetResponses200` | [HistoryAllGetResponses200](../../Models/Components/HistoryAllGetResponses200.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetHomeDataResponse.md b/docs/Models/Requests/GetHomeDataResponse.md deleted file mode 100644 index f60954f..0000000 --- a/docs/Models/Requests/GetHomeDataResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetHomeDataResponse - - -## 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` | [GetHomeDataResponseBody](../../Models/Requests/GetHomeDataResponseBody.md) | :heavy_minus_sign: | Home Data | \ No newline at end of file diff --git a/docs/Models/Requests/GetHomeDataResponseBody.md b/docs/Models/Requests/GetHomeDataResponseBody.md deleted file mode 100644 index fc83e0f..0000000 --- a/docs/Models/Requests/GetHomeDataResponseBody.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetHomeDataResponseBody - -Home Data - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | -| `Id` | *double* | :heavy_minus_sign: | N/A | 1841489 | -| `Name` | *string* | :heavy_minus_sign: | N/A | Blindkitty38's home | -| `GuestUserID` | *double* | :heavy_minus_sign: | N/A | 58815432 | -| `GuestUserUUID` | *string* | :heavy_minus_sign: | N/A | f3df4e01bfca0787 | -| `GuestEnabled` | *bool* | :heavy_minus_sign: | N/A | | -| `Subscription` | *bool* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetHubItemsRequest.md b/docs/Models/Requests/GetHubItemsRequest.md new file mode 100644 index 0000000..2c4fb4b --- /dev/null +++ b/docs/Models/Requests/GetHubItemsRequest.md @@ -0,0 +1,20 @@ +# GetHubItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Count` | *long* | :heavy_minus_sign: | Limit results to count items | | +| `Identifier` | List<*string*> | :heavy_check_mark: | If provided, limit to only specified hubs | | \ No newline at end of file diff --git a/docs/Models/Requests/GetHubItemsResponse.md b/docs/Models/Requests/GetHubItemsResponse.md new file mode 100644 index 0000000..58463f5 --- /dev/null +++ b/docs/Models/Requests/GetHubItemsResponse.md @@ -0,0 +1,12 @@ +# GetHubItemsResponse + + +## 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` | [GetHubItemsResponseBody](../../Models/Requests/GetHubItemsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetHubItemsResponseBody.md b/docs/Models/Requests/GetHubItemsResponseBody.md new file mode 100644 index 0000000..1d96dd6 --- /dev/null +++ b/docs/Models/Requests/GetHubItemsResponseBody.md @@ -0,0 +1,10 @@ +# GetHubItemsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `MediaContainer` | [Models.Components.MediaContainer](../../Models/Components/MediaContainer.md) | :heavy_minus_sign: | `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
| \ No newline at end of file diff --git a/docs/Models/Requests/GetIdentityMediaContainer.md b/docs/Models/Requests/GetIdentityMediaContainer.md new file mode 100644 index 0000000..c011957 --- /dev/null +++ b/docs/Models/Requests/GetIdentityMediaContainer.md @@ -0,0 +1,11 @@ +# GetIdentityMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `Claimed` | *bool* | :heavy_minus_sign: | Indicates whether this server has been claimed by a user | +| `MachineIdentifier` | *string* | :heavy_minus_sign: | A unique identifier of the computer | +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `Version` | *string* | :heavy_minus_sign: | The full version string of the PMS | \ No newline at end of file diff --git a/docs/Models/Requests/GetIdentityResponse.md b/docs/Models/Requests/GetIdentityResponse.md new file mode 100644 index 0000000..8a1e172 --- /dev/null +++ b/docs/Models/Requests/GetIdentityResponse.md @@ -0,0 +1,11 @@ +# GetIdentityResponse + + +## 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` | [GetIdentityResponseBody](../../Models/Requests/GetIdentityResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetIdentityResponseBody.md b/docs/Models/Requests/GetIdentityResponseBody.md new file mode 100644 index 0000000..6d749e6 --- /dev/null +++ b/docs/Models/Requests/GetIdentityResponseBody.md @@ -0,0 +1,10 @@ +# GetIdentityResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `MediaContainer` | [GetIdentityMediaContainer](../../Models/Requests/GetIdentityMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetImageFromBifRequest.md b/docs/Models/Requests/GetImageFromBifRequest.md new file mode 100644 index 0000000..c97c08a --- /dev/null +++ b/docs/Models/Requests/GetImageFromBifRequest.md @@ -0,0 +1,21 @@ +# GetImageFromBifRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PartId` | *long* | :heavy_check_mark: | The part id who's index is to be fetched | | +| `Index` | [PathParamIndex](../../Models/Requests/PathParamIndex.md) | :heavy_check_mark: | The type of index to grab. | | +| `Offset` | *long* | :heavy_check_mark: | The offset to seek in ms. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetImageFromBifResponse.md b/docs/Models/Requests/GetImageFromBifResponse.md new file mode 100644 index 0000000..93db771 --- /dev/null +++ b/docs/Models/Requests/GetImageFromBifResponse.md @@ -0,0 +1,11 @@ +# GetImageFromBifResponse + + +## 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 | +| `Bytes` | *byte[]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetImageRequest.md b/docs/Models/Requests/GetImageRequest.md new file mode 100644 index 0000000..f503d31 --- /dev/null +++ b/docs/Models/Requests/GetImageRequest.md @@ -0,0 +1,25 @@ +# GetImageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `TopLeft` | *string* | :heavy_minus_sign: | The base color (hex) for the top left quadrant. | 3f280a | +| `TopRight` | *string* | :heavy_minus_sign: | The base color (hex) for the top right quadrant. | 6b4713 | +| `BottomRight` | *string* | :heavy_minus_sign: | The base color (hex) for the bottom right quadrant. | 0f2a43 | +| `BottomLeft` | *string* | :heavy_minus_sign: | The base color (hex) for the bottom left quadrant. | 1c425d | +| `Width` | *long* | :heavy_minus_sign: | Width in pixels for the image. | 1920 | +| `Height` | *long* | :heavy_minus_sign: | Height in pixels for the image. | 1080 | +| `Noise` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether to add noise to the ouput image. Noise can reduce color banding with the gradients. Image sizes with noise will be larger. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetImageResponse.md b/docs/Models/Requests/GetImageResponse.md new file mode 100644 index 0000000..1c72e32 --- /dev/null +++ b/docs/Models/Requests/GetImageResponse.md @@ -0,0 +1,11 @@ +# GetImageResponse + + +## 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 | +| `Bytes` | *byte[]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetItemArtworkPathParamElement.md b/docs/Models/Requests/GetItemArtworkPathParamElement.md new file mode 100644 index 0000000..f259366 --- /dev/null +++ b/docs/Models/Requests/GetItemArtworkPathParamElement.md @@ -0,0 +1,13 @@ +# GetItemArtworkPathParamElement + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Thumb` | thumb | +| `Art` | art | +| `ClearLogo` | clearLogo | +| `Banner` | banner | +| `Poster` | poster | +| `Theme` | theme | \ No newline at end of file diff --git a/docs/Models/Requests/GetItemArtworkRequest.md b/docs/Models/Requests/GetItemArtworkRequest.md new file mode 100644 index 0000000..daa7e1a --- /dev/null +++ b/docs/Models/Requests/GetItemArtworkRequest.md @@ -0,0 +1,21 @@ +# GetItemArtworkRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Element` | [GetItemArtworkPathParamElement](../../Models/Requests/GetItemArtworkPathParamElement.md) | :heavy_check_mark: | N/A | | +| `Timestamp` | *long* | :heavy_check_mark: | A timestamp on the element used for cache management in the client | | \ No newline at end of file diff --git a/docs/Models/Requests/GetItemArtworkResponse.md b/docs/Models/Requests/GetItemArtworkResponse.md new file mode 100644 index 0000000..7a700fb --- /dev/null +++ b/docs/Models/Requests/GetItemArtworkResponse.md @@ -0,0 +1,12 @@ +# GetItemArtworkResponse + + +## 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 | +| `TwoHundredAudioMpeg3Bytes` | *byte[]* | :heavy_minus_sign: | OK | +| `TwoHundredImageJpegBytes` | *byte[]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetItemDecisionRequest.md b/docs/Models/Requests/GetItemDecisionRequest.md new file mode 100644 index 0000000..62c9b14 --- /dev/null +++ b/docs/Models/Requests/GetItemDecisionRequest.md @@ -0,0 +1,20 @@ +# GetItemDecisionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `QueueId` | *long* | :heavy_check_mark: | The queue id | | +| `ItemId` | *long* | :heavy_check_mark: | The item ids | 32 | \ No newline at end of file diff --git a/docs/Models/Requests/GetItemDecisionResponse.md b/docs/Models/Requests/GetItemDecisionResponse.md new file mode 100644 index 0000000..30fd5ba --- /dev/null +++ b/docs/Models/Requests/GetItemDecisionResponse.md @@ -0,0 +1,11 @@ +# GetItemDecisionResponse + + +## 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 | +| `MediaContainerWithDecision` | [MediaContainerWithDecision](../../Models/Components/MediaContainerWithDecision.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetItemTreeRequest.md b/docs/Models/Requests/GetItemTreeRequest.md new file mode 100644 index 0000000..b1c0937 --- /dev/null +++ b/docs/Models/Requests/GetItemTreeRequest.md @@ -0,0 +1,19 @@ +# GetItemTreeRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetItemTreeResponse.md b/docs/Models/Requests/GetItemTreeResponse.md new file mode 100644 index 0000000..d60ade8 --- /dev/null +++ b/docs/Models/Requests/GetItemTreeResponse.md @@ -0,0 +1,11 @@ +# GetItemTreeResponse + + +## 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 | +| `MediaContainerWithNestedMetadata` | [MediaContainerWithNestedMetadata](../../Models/Components/MediaContainerWithNestedMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryDetailsDirectory.md b/docs/Models/Requests/GetLibraryDetailsDirectory.md deleted file mode 100644 index f2c210a..0000000 --- a/docs/Models/Requests/GetLibraryDetailsDirectory.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryDetailsDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Key` | *string* | :heavy_minus_sign: | N/A | search?type=1 | -| `Title` | *string* | :heavy_minus_sign: | N/A | Search... | -| `Secondary` | *bool* | :heavy_minus_sign: | N/A | true | -| `Prompt` | *string* | :heavy_minus_sign: | N/A | Search Movies | -| `Search` | *bool* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryDetailsField.md b/docs/Models/Requests/GetLibraryDetailsField.md deleted file mode 100644 index 7b15cb5..0000000 --- a/docs/Models/Requests/GetLibraryDetailsField.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryDetailsField - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Key` | *string* | :heavy_minus_sign: | N/A | label | -| `Title` | *string* | :heavy_minus_sign: | N/A | Label | -| `Type` | *string* | :heavy_minus_sign: | N/A | tag | -| `SubType` | *string* | :heavy_minus_sign: | N/A | bitrate | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryDetailsFieldType.md b/docs/Models/Requests/GetLibraryDetailsFieldType.md deleted file mode 100644 index 6615c0a..0000000 --- a/docs/Models/Requests/GetLibraryDetailsFieldType.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryDetailsFieldType - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `Type` | *string* | :heavy_minus_sign: | N/A | resolution | -| `Operator` | List<[GetLibraryDetailsOperator](../../Models/Requests/GetLibraryDetailsOperator.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryDetailsFilter.md b/docs/Models/Requests/GetLibraryDetailsFilter.md deleted file mode 100644 index 5bd6c5f..0000000 --- a/docs/Models/Requests/GetLibraryDetailsFilter.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryDetailsFilter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | -| `Filter` | *string* | :heavy_minus_sign: | N/A | label | -| `FilterType` | *string* | :heavy_minus_sign: | N/A | string | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/sections/1/label | -| `Title` | *string* | :heavy_minus_sign: | N/A | Labels | -| `Type` | *string* | :heavy_minus_sign: | N/A | filter | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryDetailsMediaContainer.md b/docs/Models/Requests/GetLibraryDetailsMediaContainer.md index 8afe218..9341045 100644 --- a/docs/Models/Requests/GetLibraryDetailsMediaContainer.md +++ b/docs/Models/Requests/GetLibraryDetailsMediaContainer.md @@ -3,20 +3,19 @@ ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 29 | -| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | false | -| `Art` | *string* | :heavy_minus_sign: | N/A | /:/resources/movie-fanart.jpg | -| `Content` | *string* | :heavy_minus_sign: | N/A | secondary | -| `Identifier` | *string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `LibrarySectionID` | *int* | :heavy_minus_sign: | N/A | 1 | -| `MediaTagPrefix` | *string* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `MediaTagVersion` | *int* | :heavy_minus_sign: | N/A | 1701731894 | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /:/resources/movie.png | -| `Title1` | *string* | :heavy_minus_sign: | N/A | Movies | -| `ViewGroup` | *string* | :heavy_minus_sign: | N/A | secondary | -| `ViewMode` | *int* | :heavy_minus_sign: | N/A | 65592 | -| `Directory` | List<[GetLibraryDetailsDirectory](../../Models/Requests/GetLibraryDetailsDirectory.md)> | :heavy_minus_sign: | N/A | | -| `Type` | List<[GetLibraryDetailsType](../../Models/Requests/GetLibraryDetailsType.md)> | :heavy_minus_sign: | N/A | | -| `FieldType` | List<[GetLibraryDetailsFieldType](../../Models/Requests/GetLibraryDetailsFieldType.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `Content` | *string* | :heavy_minus_sign: | The flavors of directory found here:
- Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users.
- Secondary: These are marked with `"secondary": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation.
- Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `"search": true` which used to be used to allow clients to build search dialogs on the fly. | +| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | +| `Art` | *string* | :heavy_minus_sign: | N/A | +| `Directory` | List<[Models.Components.Metadata](../../Models/Components/Metadata.md)> | :heavy_minus_sign: | N/A | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `LibrarySectionID` | *long* | :heavy_minus_sign: | N/A | +| `MediaTagPrefix` | *string* | :heavy_minus_sign: | N/A | +| `MediaTagVersion` | *long* | :heavy_minus_sign: | N/A | +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `SortAsc` | *bool* | :heavy_minus_sign: | N/A | +| `Thumb` | *string* | :heavy_minus_sign: | N/A | +| `Title1` | *string* | :heavy_minus_sign: | N/A | +| `ViewGroup` | *string* | :heavy_minus_sign: | N/A | +| `ViewMode` | *long* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryDetailsOperator.md b/docs/Models/Requests/GetLibraryDetailsOperator.md deleted file mode 100644 index 3d5175e..0000000 --- a/docs/Models/Requests/GetLibraryDetailsOperator.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryDetailsOperator - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Key` | *string* | :heavy_minus_sign: | N/A | = | -| `Title` | *string* | :heavy_minus_sign: | N/A | is | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryDetailsRequest.md b/docs/Models/Requests/GetLibraryDetailsRequest.md index d87c6a9..ef3ee9b 100644 --- a/docs/Models/Requests/GetLibraryDetailsRequest.md +++ b/docs/Models/Requests/GetLibraryDetailsRequest.md @@ -3,7 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `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.
| | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *string* | :heavy_check_mark: | The section identifier | | +| `IncludeDetails` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether or not to include details for a section (types, filters, and sorts). Only exists for backwards compatibility, media providers other than the server libraries have it on always. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryDetailsResponse.md b/docs/Models/Requests/GetLibraryDetailsResponse.md index c4b8857..99ff2a4 100644 --- a/docs/Models/Requests/GetLibraryDetailsResponse.md +++ b/docs/Models/Requests/GetLibraryDetailsResponse.md @@ -8,4 +8,4 @@ | `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` | [GetLibraryDetailsResponseBody](../../Models/Requests/GetLibraryDetailsResponseBody.md) | :heavy_minus_sign: | The details of the library | \ No newline at end of file +| `Object` | [GetLibraryDetailsResponseBody](../../Models/Requests/GetLibraryDetailsResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryDetailsResponseBody.md b/docs/Models/Requests/GetLibraryDetailsResponseBody.md index 12e2979..81b852c 100644 --- a/docs/Models/Requests/GetLibraryDetailsResponseBody.md +++ b/docs/Models/Requests/GetLibraryDetailsResponseBody.md @@ -1,6 +1,6 @@ # GetLibraryDetailsResponseBody -The details of the library +OK ## Fields diff --git a/docs/Models/Requests/GetLibraryDetailsSort.md b/docs/Models/Requests/GetLibraryDetailsSort.md deleted file mode 100644 index 45136f4..0000000 --- a/docs/Models/Requests/GetLibraryDetailsSort.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetLibraryDetailsSort - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `Default` | *string* | :heavy_minus_sign: | N/A | asc | -| `DefaultDirection` | *string* | :heavy_minus_sign: | N/A | desc | -| `DescKey` | *string* | :heavy_minus_sign: | N/A | random:desc | -| `FirstCharacterKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/1/firstCharacter | -| `Key` | *string* | :heavy_minus_sign: | N/A | random | -| `Title` | *string* | :heavy_minus_sign: | N/A | Randomly | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryDetailsType.md b/docs/Models/Requests/GetLibraryDetailsType.md deleted file mode 100644 index 3083656..0000000 --- a/docs/Models/Requests/GetLibraryDetailsType.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetLibraryDetailsType - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/sections/1/all?type=1 | -| `Type` | *string* | :heavy_minus_sign: | N/A | movie | -| `Title` | *string* | :heavy_minus_sign: | N/A | Movies | -| `Active` | *bool* | :heavy_minus_sign: | N/A | false | -| `Filter` | List<[GetLibraryDetailsFilter](../../Models/Requests/GetLibraryDetailsFilter.md)> | :heavy_minus_sign: | N/A | | -| `Sort` | List<[GetLibraryDetailsSort](../../Models/Requests/GetLibraryDetailsSort.md)> | :heavy_minus_sign: | N/A | | -| `Field` | List<[GetLibraryDetailsField](../../Models/Requests/GetLibraryDetailsField.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsCountry.md b/docs/Models/Requests/GetLibraryHubsCountry.md deleted file mode 100644 index 9d850ef..0000000 --- a/docs/Models/Requests/GetLibraryHubsCountry.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryHubsCountry - - -## 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/GetLibraryHubsDirector.md b/docs/Models/Requests/GetLibraryHubsDirector.md deleted file mode 100644 index 5597867..0000000 --- a/docs/Models/Requests/GetLibraryHubsDirector.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryHubsDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_minus_sign: | N/A | Nathan Greno | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsGenre.md b/docs/Models/Requests/GetLibraryHubsGenre.md deleted file mode 100644 index ded856f..0000000 --- a/docs/Models/Requests/GetLibraryHubsGenre.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryHubsGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_minus_sign: | N/A | Animation | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsHub.md b/docs/Models/Requests/GetLibraryHubsHub.md deleted file mode 100644 index 0799846..0000000 --- a/docs/Models/Requests/GetLibraryHubsHub.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetLibraryHubsHub - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/sections/1/all?sort=lastViewedAt:desc&unwatched=0&viewOffset=0 | -| `Title` | *string* | :heavy_minus_sign: | N/A | Recently Played Movies | -| `Type` | *string* | :heavy_minus_sign: | N/A | movie | -| `HubIdentifier` | *string* | :heavy_minus_sign: | N/A | movie.recentlyviewed.1 | -| `Context` | *string* | :heavy_minus_sign: | N/A | hub.movie.recentlyviewed | -| `Size` | *int* | :heavy_minus_sign: | N/A | 6 | -| `More` | *bool* | :heavy_minus_sign: | N/A | true | -| `Style` | *string* | :heavy_minus_sign: | N/A | shelf | -| `HubKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66485,66098,57249,11449,5858,14944 | -| `Metadata` | List<[GetLibraryHubsMetadata](../../Models/Requests/GetLibraryHubsMetadata.md)> | :heavy_minus_sign: | N/A | | -| `Promoted` | *bool* | :heavy_minus_sign: | N/A | true | -| `Random` | *bool* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsMedia.md b/docs/Models/Requests/GetLibraryHubsMedia.md deleted file mode 100644 index 21cd3a7..0000000 --- a/docs/Models/Requests/GetLibraryHubsMedia.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetLibraryHubsMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `Id` | *int* | :heavy_minus_sign: | N/A | 38247 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 6017237 | -| `Bitrate` | *int* | :heavy_minus_sign: | N/A | 2051 | -| `Width` | *int* | :heavy_minus_sign: | N/A | 1920 | -| `Height` | *int* | :heavy_minus_sign: | N/A | 1080 | -| `AspectRatio` | *double* | :heavy_minus_sign: | N/A | 1.78 | -| `AudioChannels` | *int* | :heavy_minus_sign: | N/A | 2 | -| `AudioCodec` | *string* | :heavy_minus_sign: | N/A | aac | -| `VideoCodec` | *string* | :heavy_minus_sign: | N/A | h264 | -| `VideoResolution` | *string* | :heavy_minus_sign: | N/A | 1080 | -| `Container` | *string* | :heavy_minus_sign: | N/A | mp4 | -| `VideoFrameRate` | *string* | :heavy_minus_sign: | N/A | 24p | -| `OptimizedForStreaming` | *int* | :heavy_minus_sign: | N/A | 1 | -| `AudioProfile` | *string* | :heavy_minus_sign: | N/A | lc | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | high | -| `Part` | List<[GetLibraryHubsPart](../../Models/Requests/GetLibraryHubsPart.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsMediaContainer.md b/docs/Models/Requests/GetLibraryHubsMediaContainer.md deleted file mode 100644 index 2160210..0000000 --- a/docs/Models/Requests/GetLibraryHubsMediaContainer.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetLibraryHubsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 7 | -| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | true | -| `Identifier` | *string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `LibrarySectionID` | *int* | :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 | -| `Hub` | List<[GetLibraryHubsHub](../../Models/Requests/GetLibraryHubsHub.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsMetadata.md b/docs/Models/Requests/GetLibraryHubsMetadata.md deleted file mode 100644 index 0da1f97..0000000 --- a/docs/Models/Requests/GetLibraryHubsMetadata.md +++ /dev/null @@ -1,41 +0,0 @@ -# GetLibraryHubsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 14944 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/14944 | -| `Guid` | *string* | :heavy_minus_sign: | N/A | plex://movie/5d77686eeb5d26001f1eb339 | -| `Studio` | *string* | :heavy_minus_sign: | N/A | Walt Disney Animation Studios | -| `Type` | *string* | :heavy_minus_sign: | N/A | movie | -| `Title` | *string* | :heavy_minus_sign: | N/A | Tangled | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | N/A | Movies | -| `LibrarySectionID` | *int* | :heavy_minus_sign: | N/A | 1 | -| `LibrarySectionKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/1 | -| `ContentRating` | *string* | :heavy_minus_sign: | N/A | PG | -| `Summary` | *string* | :heavy_minus_sign: | N/A | The magically long-haired Rapunzel has spent her entire life in a tower, but now that a runaway thief has stumbled upon her, she is about to discover the world for the first time, and who she really is. | -| `Rating` | *double* | :heavy_minus_sign: | N/A | 8.9 | -| `AudienceRating` | *double* | :heavy_minus_sign: | N/A | 8.7 | -| `ViewCount` | *int* | :heavy_minus_sign: | N/A | 1 | -| `LastViewedAt` | *int* | :heavy_minus_sign: | N/A | 1704936047 | -| `Year` | *int* | :heavy_minus_sign: | N/A | 2010 | -| `Tagline` | *string* | :heavy_minus_sign: | N/A | They're taking adventure to new lengths. | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/14944/thumb/1705739847 | -| `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/14944/art/1705739847 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 6017237 | -| `OriginallyAvailableAt` | [LocalDate](https://nodatime.org/3.1.x/api/NodaTime.LocalDate.html) | :heavy_minus_sign: | N/A | 2010-11-24 00:00:00 +0000 UTC | -| `AddedAt` | *int* | :heavy_minus_sign: | N/A | 1589412494 | -| `UpdatedAt` | *int* | :heavy_minus_sign: | N/A | 1705739847 | -| `AudienceRatingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | -| `PrimaryExtraKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/14952 | -| `RatingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.ripe | -| `Media` | List<[GetLibraryHubsMedia](../../Models/Requests/GetLibraryHubsMedia.md)> | :heavy_minus_sign: | N/A | | -| `Genre` | List<[GetLibraryHubsGenre](../../Models/Requests/GetLibraryHubsGenre.md)> | :heavy_minus_sign: | N/A | | -| `Country` | List<[GetLibraryHubsCountry](../../Models/Requests/GetLibraryHubsCountry.md)> | :heavy_minus_sign: | N/A | | -| `Director` | List<[GetLibraryHubsDirector](../../Models/Requests/GetLibraryHubsDirector.md)> | :heavy_minus_sign: | N/A | | -| `Role` | List<[GetLibraryHubsRole](../../Models/Requests/GetLibraryHubsRole.md)> | :heavy_minus_sign: | N/A | | -| `Writer` | List<[GetLibraryHubsWriter](../../Models/Requests/GetLibraryHubsWriter.md)> | :heavy_minus_sign: | N/A | | -| `SkipCount` | *int* | :heavy_minus_sign: | N/A | 1 | -| `ChapterSource` | *string* | :heavy_minus_sign: | N/A | media | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsPart.md b/docs/Models/Requests/GetLibraryHubsPart.md deleted file mode 100644 index fc24c5b..0000000 --- a/docs/Models/Requests/GetLibraryHubsPart.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetLibraryHubsPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | -| `Id` | *int* | :heavy_minus_sign: | N/A | 38247 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/parts/38247/1589412494/file.mp4 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 6017237 | -| `File` | *string* | :heavy_minus_sign: | N/A | /movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4 | -| `Size` | *int* | :heavy_minus_sign: | N/A | 1545647447 | -| `AudioProfile` | *string* | :heavy_minus_sign: | N/A | lc | -| `Container` | *string* | :heavy_minus_sign: | N/A | mp4 | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `OptimizedForStreaming` | *bool* | :heavy_minus_sign: | N/A | true | -| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | high | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsRequest.md b/docs/Models/Requests/GetLibraryHubsRequest.md deleted file mode 100644 index b2aea58..0000000 --- a/docs/Models/Requests/GetLibraryHubsRequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 deleted file mode 100644 index d00daf9..0000000 --- a/docs/Models/Requests/GetLibraryHubsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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: | The hubs specific to the library | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsResponseBody.md b/docs/Models/Requests/GetLibraryHubsResponseBody.md deleted file mode 100644 index a4b3e57..0000000 --- a/docs/Models/Requests/GetLibraryHubsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryHubsResponseBody - -The hubs specific to the library - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetLibraryHubsMediaContainer](../../Models/Requests/GetLibraryHubsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsRole.md b/docs/Models/Requests/GetLibraryHubsRole.md deleted file mode 100644 index 213e2c7..0000000 --- a/docs/Models/Requests/GetLibraryHubsRole.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryHubsRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_minus_sign: | N/A | Donna Murphy | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryHubsWriter.md b/docs/Models/Requests/GetLibraryHubsWriter.md deleted file mode 100644 index 145eef5..0000000 --- a/docs/Models/Requests/GetLibraryHubsWriter.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryHubsWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_minus_sign: | N/A | Wilhelm Grimm | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsActiveDirection.md b/docs/Models/Requests/GetLibraryItemsActiveDirection.md deleted file mode 100644 index 308a017..0000000 --- a/docs/Models/Requests/GetLibraryItemsActiveDirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsActiveDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Ascending` | asc | -| `Descending` | desc | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsCollection.md b/docs/Models/Requests/GetLibraryItemsCollection.md deleted file mode 100644 index b844f00..0000000 --- a/docs/Models/Requests/GetLibraryItemsCollection.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryItemsCollection - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `Tag` | *string* | :heavy_check_mark: | The user-made collection this media item belongs to | My Awesome Collection | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsCountry.md b/docs/Models/Requests/GetLibraryItemsCountry.md deleted file mode 100644 index b2d5c37..0000000 --- a/docs/Models/Requests/GetLibraryItemsCountry.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryItemsCountry - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | The unique identifier for the country.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `Tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsDefaultDirection.md b/docs/Models/Requests/GetLibraryItemsDefaultDirection.md deleted file mode 100644 index e9cec29..0000000 --- a/docs/Models/Requests/GetLibraryItemsDefaultDirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsDefaultDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Ascending` | asc | -| `Descending` | desc | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsDirector.md b/docs/Models/Requests/GetLibraryItemsDirector.md deleted file mode 100644 index f6a0737..0000000 --- a/docs/Models/Requests/GetLibraryItemsDirector.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | Unique identifier for the director. | 126522 | -| `Tag` | *string* | :heavy_check_mark: | The role of Director | Danny Boyle | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the director. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsField.md b/docs/Models/Requests/GetLibraryItemsField.md deleted file mode 100644 index d102ed3..0000000 --- a/docs/Models/Requests/GetLibraryItemsField.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsField - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Key` | *string* | :heavy_check_mark: | N/A | show.title | -| `Title` | *string* | :heavy_check_mark: | N/A | Show Title | -| `Type` | *string* | :heavy_check_mark: | N/A | string | -| `SubType` | *string* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsFieldType.md b/docs/Models/Requests/GetLibraryItemsFieldType.md deleted file mode 100644 index de402f0..0000000 --- a/docs/Models/Requests/GetLibraryItemsFieldType.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryItemsFieldType - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `Type` | *string* | :heavy_check_mark: | N/A | tag | -| `Operator` | List<[GetLibraryItemsOperator](../../Models/Requests/GetLibraryItemsOperator.md)> | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsFilter.md b/docs/Models/Requests/GetLibraryItemsFilter.md deleted file mode 100644 index 9585aa3..0000000 --- a/docs/Models/Requests/GetLibraryItemsFilter.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsFilter - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `Filter` | *string* | :heavy_check_mark: | N/A | genre | -| `FilterType` | *string* | :heavy_check_mark: | N/A | string | -| `Key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | -| `Title` | *string* | :heavy_check_mark: | N/A | Genre | -| `Type` | *string* | :heavy_check_mark: | N/A | filter | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsGenre.md b/docs/Models/Requests/GetLibraryItemsGenre.md deleted file mode 100644 index f87f6bc..0000000 --- a/docs/Models/Requests/GetLibraryItemsGenre.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryItemsGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | The unique identifier for the genre.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `Tag` | *string* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsGuids.md b/docs/Models/Requests/GetLibraryItemsGuids.md deleted file mode 100644 index 780f0d5..0000000 --- a/docs/Models/Requests/GetLibraryItemsGuids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryItemsGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsHasThumbnail.md b/docs/Models/Requests/GetLibraryItemsHasThumbnail.md deleted file mode 100644 index 5fe3536..0000000 --- a/docs/Models/Requests/GetLibraryItemsHasThumbnail.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsHasThumbnail - -Indicates if the part has a thumbnail. - - - -## Values - -| Name | Value | -| ------- | ------- | -| `False` | 0 | -| `True` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsImage.md b/docs/Models/Requests/GetLibraryItemsImage.md deleted file mode 100644 index b9f509d..0000000 --- a/docs/Models/Requests/GetLibraryItemsImage.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsImage - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -| `Alt` | *string* | :heavy_check_mark: | N/A | Episode 1 | -| `Type` | [GetLibraryItemsLibraryResponseType](../../Models/Requests/GetLibraryItemsLibraryResponseType.md) | :heavy_check_mark: | N/A | background | -| `Url` | *string* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsLibraryOptimizedForStreaming.md b/docs/Models/Requests/GetLibraryItemsLibraryOptimizedForStreaming.md deleted file mode 100644 index 13d1849..0000000 --- a/docs/Models/Requests/GetLibraryItemsLibraryOptimizedForStreaming.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetLibraryItemsLibraryOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - - -## Supported Types - -### GetLibraryItemsOptimizedForStreaming1 - -```csharp -GetLibraryItemsLibraryOptimizedForStreaming.CreateGetLibraryItemsOptimizedForStreaming1(/* values here */); -``` - -### Boolean - -```csharp -GetLibraryItemsLibraryOptimizedForStreaming.CreateBoolean(/* values here */); -``` diff --git a/docs/Models/Requests/GetLibraryItemsLibraryResponseType.md b/docs/Models/Requests/GetLibraryItemsLibraryResponseType.md deleted file mode 100644 index c74a08a..0000000 --- a/docs/Models/Requests/GetLibraryItemsLibraryResponseType.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsLibraryResponseType - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `CoverPoster` | coverPoster | -| `Background` | background | -| `Snapshot` | snapshot | -| `ClearLogo` | clearLogo | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsLibraryType.md b/docs/Models/Requests/GetLibraryItemsLibraryType.md deleted file mode 100644 index bf680f4..0000000 --- a/docs/Models/Requests/GetLibraryItemsLibraryType.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetLibraryItemsLibraryType - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `Key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `Type` | *string* | :heavy_check_mark: | N/A | show | -| `Title` | *string* | :heavy_check_mark: | N/A | TV Shows | -| `Active` | *bool* | :heavy_check_mark: | N/A | false | -| `Filter` | List<[GetLibraryItemsFilter](../../Models/Requests/GetLibraryItemsFilter.md)> | :heavy_minus_sign: | N/A | | -| `Sort` | List<[GetLibraryItemsSort](../../Models/Requests/GetLibraryItemsSort.md)> | :heavy_minus_sign: | N/A | | -| `Field` | List<[GetLibraryItemsField](../../Models/Requests/GetLibraryItemsField.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsLocation.md b/docs/Models/Requests/GetLibraryItemsLocation.md deleted file mode 100644 index 9c290c9..0000000 --- a/docs/Models/Requests/GetLibraryItemsLocation.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsLocation - -The folder path for the media item. - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | -| `Path` | *string* | :heavy_check_mark: | N/A | /TV Shows/Clarkson's Farm | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsMedia.md b/docs/Models/Requests/GetLibraryItemsMedia.md deleted file mode 100644 index 43f84b3..0000000 --- a/docs/Models/Requests/GetLibraryItemsMedia.md +++ /dev/null @@ -1,26 +0,0 @@ -# GetLibraryItemsMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `Duration` | *int* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | -| `Bitrate` | *int* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | -| `Width` | *int* | :heavy_minus_sign: | Video width in pixels. | 3840 | -| `Height` | *int* | :heavy_minus_sign: | Video height in pixels. | 1602 | -| `AspectRatio` | *float* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | -| `AudioChannels` | *int* | :heavy_minus_sign: | Number of audio channels. | 6 | -| `DisplayOffset` | *int* | :heavy_minus_sign: | N/A | 50 | -| `AudioCodec` | *string* | :heavy_minus_sign: | Audio codec used. | aac | -| `VideoCodec` | *string* | :heavy_minus_sign: | Video codec used. | hevc | -| `VideoResolution` | *string* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | -| `Container` | *string* | :heavy_minus_sign: | Container format of the media. | mp4 | -| `VideoFrameRate` | *string* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | -| `VideoProfile` | *string* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `HasVoiceActivity` | *bool* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | -| `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `OptimizedForStreaming` | [GetLibraryItemsOptimizedForStreaming](../../Models/Requests/GetLibraryItemsOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | Indicates whether the media has 64-bit offsets.
This is relevant for media files that may require larger offsets than what 32-bit integers can provide.
| false | -| `Part` | List<[GetLibraryItemsPart](../../Models/Requests/GetLibraryItemsPart.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsMediaContainer.md b/docs/Models/Requests/GetLibraryItemsMediaContainer.md deleted file mode 100644 index e18bea6..0000000 --- a/docs/Models/Requests/GetLibraryItemsMediaContainer.md +++ /dev/null @@ -1,28 +0,0 @@ -# GetLibraryItemsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `TotalSize` | *int* | :heavy_check_mark: | Total number of media items in the library. | 50 | -| `Offset` | *long* | :heavy_check_mark: | Offset value for pagination. | 0 | -| `Content` | *string* | :heavy_check_mark: | The content type or mode. | secondary | -| `AllowSync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `Nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | -| `Art` | *string* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `LibrarySectionID` | *long* | :heavy_minus_sign: | The unique identifier for the library section. | 2 | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | The title of the library section. | TV Series | -| `LibrarySectionUUID` | *string* | :heavy_minus_sign: | The universally unique identifier for the library section. | e69655a2-ef48-4aba-bb19-0cc34d1e7d36 | -| `MediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `MediaTagVersion` | *long* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `Thumb` | *string* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `Title1` | *string* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `Title2` | *string* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | -| `ViewGroup` | *string* | :heavy_check_mark: | Identifier for the view group layout. | secondary | -| `ViewMode` | *string* | :heavy_minus_sign: | Identifier for the view mode. | 131131 | -| `MixedParents` | *bool* | :heavy_minus_sign: | Indicates if the media container has mixed parents. | true | -| `Metadata` | List<[GetLibraryItemsMetadata](../../Models/Requests/GetLibraryItemsMetadata.md)> | :heavy_check_mark: | An array of metadata items. | | -| `Meta` | [GetLibraryItemsMeta](../../Models/Requests/GetLibraryItemsMeta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsMeta.md b/docs/Models/Requests/GetLibraryItemsMeta.md deleted file mode 100644 index 933cb14..0000000 --- a/docs/Models/Requests/GetLibraryItemsMeta.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsMeta - -The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `Type` | List<[GetLibraryItemsLibraryType](../../Models/Requests/GetLibraryItemsLibraryType.md)> | :heavy_minus_sign: | N/A | -| `FieldType` | List<[GetLibraryItemsFieldType](../../Models/Requests/GetLibraryItemsFieldType.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsMetadata.md b/docs/Models/Requests/GetLibraryItemsMetadata.md deleted file mode 100644 index 6cd80a2..0000000 --- a/docs/Models/Requests/GetLibraryItemsMetadata.md +++ /dev/null @@ -1,88 +0,0 @@ -# GetLibraryItemsMetadata - -Unknown - - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_check_mark: | The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. | 58683 | -| `Key` | *string* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | -| `Guid` | *string* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | -| `Slug` | *string* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | -| `Studio` | *string* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | -| `Type` | [GetLibraryItemsType](../../Models/Requests/GetLibraryItemsType.md) | :heavy_check_mark: | N/A | movie | -| `Title` | *string* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | -| `Banner` | *string* | :heavy_check_mark: | The banner image URL for the media item. | /library/metadata/58683/banner/1703239236 | -| `TitleSort` | *string* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | -| `ContentRating` | *string* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | -| `Summary` | *string* | :heavy_check_mark: | A synopsis of the media item. | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.
| -| `Rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | -| `AudienceRating` | *double* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | -| `Year` | *int* | :heavy_minus_sign: | The release year of the media item. | 2022 | -| `Tagline` | *string* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | -| `Thumb` | *string* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | -| `Art` | *string* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | -| `Theme` | *string* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | -| `Index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | -| `LeafCount` | *int* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | -| `ViewedLeafCount` | *int* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | -| `ChildCount` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | -| `SeasonCount` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | -| `Duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | -| `OriginallyAvailableAt` | [LocalDate](https://nodatime.org/3.1.x/api/NodaTime.LocalDate.html) | :heavy_minus_sign: | The original release date of the media item. | 2022-12-14 | -| `AddedAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | -| `UpdatedAt` | *long* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `AudienceRatingImage` | *string* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | -| `ChapterSource` | *string* | :heavy_minus_sign: | The source from which chapter data is derived. | media | -| `PrimaryExtraKey` | *string* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | -| `OriginalTitle` | *string* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | -| `ParentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | -| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | -| `ParentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `GrandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `GrandparentSlug` | *string* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | -| `GrandparentKey` | *string* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | -| `ParentKey` | *string* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | -| `GrandparentTitle` | *string* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | -| `GrandparentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | -| `GrandparentTheme` | *string* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | -| `GrandparentArt` | *string* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | -| `ParentTitle` | *string* | :heavy_minus_sign: | The title of the parent media item. | Caprica | -| `ParentIndex` | *int* | :heavy_minus_sign: | The index position of the parent media item. | 1 | -| `ParentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | -| `RatingImage` | *string* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | -| `ViewCount` | *int* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | -| `ViewOffset` | *int* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | -| `SkipCount` | *int* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | -| `Subtype` | *string* | :heavy_minus_sign: | A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. | clip | -| `LastRatedAt` | *long* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | -| `CreatedAtAccuracy` | *string* | :heavy_minus_sign: | The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). | epoch,local | -| `CreatedAtTZOffset` | *string* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | -| `LastViewedAt` | *int* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | -| `UserRating` | *float* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | -| `Image` | List<[GetLibraryItemsImage](../../Models/Requests/GetLibraryItemsImage.md)> | :heavy_minus_sign: | N/A | | -| `UltraBlurColors` | [GetLibraryItemsUltraBlurColors](../../Models/Requests/GetLibraryItemsUltraBlurColors.md) | :heavy_minus_sign: | N/A | | -| `Guids` | List<[GetLibraryItemsGuids](../../Models/Requests/GetLibraryItemsGuids.md)> | :heavy_minus_sign: | N/A | | -| `LibrarySectionID` | *long* | :heavy_minus_sign: | The identifier for the library section. | 1 | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | The title of the library section. | Movies | -| `LibrarySectionKey` | *string* | :heavy_minus_sign: | The key corresponding to the library section. | /library/sections/1 | -| `ShowOrdering` | [ShowOrdering](../../Models/Requests/ShowOrdering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.
Options:
- None = Library default
- tmdbAiring = The Movie Database (Aired)
- aired = TheTVDB (Aired)
- dvd = TheTVDB (DVD)
- absolute = TheTVDB (Absolute)
| absolute | -| `FlattenSeasons` | [FlattenSeasons](../../Models/Requests/FlattenSeasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
| 1 | -| `SkipChildren` | *bool* | :heavy_minus_sign: | Indicates whether child items should be skipped. | false | -| `Media` | List<[GetLibraryItemsMedia](../../Models/Requests/GetLibraryItemsMedia.md)> | :heavy_minus_sign: | N/A | | -| `Genre` | List<[GetLibraryItemsGenre](../../Models/Requests/GetLibraryItemsGenre.md)> | :heavy_minus_sign: | N/A | | -| `Country` | List<[GetLibraryItemsCountry](../../Models/Requests/GetLibraryItemsCountry.md)> | :heavy_minus_sign: | N/A | | -| `Director` | List<[GetLibraryItemsDirector](../../Models/Requests/GetLibraryItemsDirector.md)> | :heavy_minus_sign: | N/A | | -| `Writer` | List<[GetLibraryItemsWriter](../../Models/Requests/GetLibraryItemsWriter.md)> | :heavy_minus_sign: | N/A | | -| `Producer` | List<[GetLibraryItemsProducer](../../Models/Requests/GetLibraryItemsProducer.md)> | :heavy_minus_sign: | N/A | | -| `Collection` | List<[GetLibraryItemsCollection](../../Models/Requests/GetLibraryItemsCollection.md)> | :heavy_minus_sign: | N/A | | -| `Role` | List<[GetLibraryItemsRole](../../Models/Requests/GetLibraryItemsRole.md)> | :heavy_minus_sign: | N/A | | -| `Ratings` | List<[Ratings](../../Models/Requests/Ratings.md)> | :heavy_minus_sign: | N/A | | -| `Similar` | List<[GetLibraryItemsSimilar](../../Models/Requests/GetLibraryItemsSimilar.md)> | :heavy_minus_sign: | N/A | | -| `Location` | List<[GetLibraryItemsLocation](../../Models/Requests/GetLibraryItemsLocation.md)> | :heavy_minus_sign: | N/A | | -| `Chapter` | List<[Chapter](../../Models/Requests/Chapter.md)> | :heavy_minus_sign: | N/A | | -| `Marker` | List<[Marker](../../Models/Requests/Marker.md)> | :heavy_minus_sign: | N/A | | -| `Extras` | [Extras](../../Models/Requests/Extras.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsOperator.md b/docs/Models/Requests/GetLibraryItemsOperator.md deleted file mode 100644 index 58c7b30..0000000 --- a/docs/Models/Requests/GetLibraryItemsOperator.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryItemsOperator - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Key` | *string* | :heavy_check_mark: | N/A | = | -| `Title` | *string* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsOptimizedForStreaming.md b/docs/Models/Requests/GetLibraryItemsOptimizedForStreaming.md deleted file mode 100644 index e2379bd..0000000 --- a/docs/Models/Requests/GetLibraryItemsOptimizedForStreaming.md +++ /dev/null @@ -1,18 +0,0 @@ -# GetLibraryItemsOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### OptimizedForStreaming1 - -```csharp -GetLibraryItemsOptimizedForStreaming.CreateOptimizedForStreaming1(/* values here */); -``` - -### Boolean - -```csharp -GetLibraryItemsOptimizedForStreaming.CreateBoolean(/* values here */); -``` diff --git a/docs/Models/Requests/GetLibraryItemsOptimizedForStreaming1.md b/docs/Models/Requests/GetLibraryItemsOptimizedForStreaming1.md deleted file mode 100644 index 6a83310..0000000 --- a/docs/Models/Requests/GetLibraryItemsOptimizedForStreaming1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryItemsOptimizedForStreaming1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsPart.md b/docs/Models/Requests/GetLibraryItemsPart.md deleted file mode 100644 index 3b66db6..0000000 --- a/docs/Models/Requests/GetLibraryItemsPart.md +++ /dev/null @@ -1,22 +0,0 @@ -# GetLibraryItemsPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | -| `Accessible` | *bool* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `Exists` | *bool* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `Id` | *long* | :heavy_check_mark: | Unique part identifier. | 418385 | -| `Key` | *string* | :heavy_minus_sign: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | -| `Indexes` | *string* | :heavy_minus_sign: | N/A | sd | -| `Duration` | *int* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | -| `File` | *string* | :heavy_minus_sign: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | -| `Size` | *long* | :heavy_minus_sign: | File size in bytes. | 30649952104 | -| `PacketLength` | *int* | :heavy_minus_sign: | N/A | 188 | -| `Container` | *string* | :heavy_minus_sign: | Container format of the part. | mkv | -| `VideoProfile` | *string* | :heavy_minus_sign: | Video profile for the part. | main 10 | -| `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `OptimizedForStreaming` | [GetLibraryItemsLibraryOptimizedForStreaming](../../Models/Requests/GetLibraryItemsLibraryOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
| | -| `HasThumbnail` | [GetLibraryItemsHasThumbnail](../../Models/Requests/GetLibraryItemsHasThumbnail.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsProducer.md b/docs/Models/Requests/GetLibraryItemsProducer.md deleted file mode 100644 index 36a1320..0000000 --- a/docs/Models/Requests/GetLibraryItemsProducer.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetLibraryItemsProducer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | The unique role identifier. | 109501 | -| `Filter` | *string* | :heavy_check_mark: | The filter string for the role. | actor=109501 | -| `Tag` | *string* | :heavy_check_mark: | The actor's name. | Bob Odenkirk | -| `TagKey` | *string* | :heavy_check_mark: | A key associated with the actor tag. | 5d77683254f42c001f8c3f69 | -| `Role` | *string* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | -| `Thumb` | *string* | :heavy_minus_sign: | URL for the role thumbnail image. | https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsQueryParamIncludeMeta.md b/docs/Models/Requests/GetLibraryItemsQueryParamIncludeMeta.md deleted file mode 100644 index d721bb9..0000000 --- a/docs/Models/Requests/GetLibraryItemsQueryParamIncludeMeta.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsQueryParamIncludeMeta - -Adds the Meta object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsQueryParamType.md b/docs/Models/Requests/GetLibraryItemsQueryParamType.md deleted file mode 100644 index 02791ea..0000000 --- a/docs/Models/Requests/GetLibraryItemsQueryParamType.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetLibraryItemsQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | 1 | -| `TvShow` | 2 | -| `Season` | 3 | -| `Episode` | 4 | -| `Artist` | 5 | -| `Album` | 6 | -| `Track` | 7 | -| `PhotoAlbum` | 8 | -| `Photo` | 9 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsRequest.md b/docs/Models/Requests/GetLibraryItemsRequest.md index 58c0073..6e30372 100644 --- a/docs/Models/Requests/GetLibraryItemsRequest.md +++ b/docs/Models/Requests/GetLibraryItemsRequest.md @@ -3,12 +3,17 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Tag` | [Tag](../../Models/Requests/Tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. | | -| `IncludeGuids` | [IncludeGuids](../../Models/Requests/IncludeGuids.md) | :heavy_minus_sign: | Adds the Guids object to the response
| 1 | -| `Type` | [GetLibraryItemsQueryParamType](../../Models/Requests/GetLibraryItemsQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `IncludeMeta` | [GetLibraryItemsQueryParamIncludeMeta](../../Models/Requests/GetLibraryItemsQueryParamIncludeMeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | -| `XPlexContainerStart` | *int* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | -| `XPlexContainerSize` | *int* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `MediaQuery` | [MediaQuery](../../Models/Components/MediaQuery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsResponse.md b/docs/Models/Requests/GetLibraryItemsResponse.md index 4e8bbc7..40c3d06 100644 --- a/docs/Models/Requests/GetLibraryItemsResponse.md +++ b/docs/Models/Requests/GetLibraryItemsResponse.md @@ -8,4 +8,5 @@ | `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: | The contents of the library by section and tag | \ No newline at end of file +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsResponseBody.md b/docs/Models/Requests/GetLibraryItemsResponseBody.md deleted file mode 100644 index b6f586b..0000000 --- a/docs/Models/Requests/GetLibraryItemsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsResponseBody - -The contents of the library by section and tag - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetLibraryItemsMediaContainer](../../Models/Requests/GetLibraryItemsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsRole.md b/docs/Models/Requests/GetLibraryItemsRole.md deleted file mode 100644 index 91f1a33..0000000 --- a/docs/Models/Requests/GetLibraryItemsRole.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | The unique identifier for the role.
NOTE: This is different for each Plex server and is not globally unique.
| 126522 | -| `Tag` | *string* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | -| `Role` | *string* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsSimilar.md b/docs/Models/Requests/GetLibraryItemsSimilar.md deleted file mode 100644 index cf38699..0000000 --- a/docs/Models/Requests/GetLibraryItemsSimilar.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsSimilar - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | The unique similar item identifier. | 26 | -| `Filter` | *string* | :heavy_check_mark: | The filter string for similar items. | similar=26 | -| `Tag` | *string* | :heavy_check_mark: | The tag or title of the similar content. | Breaking Bad | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsSort.md b/docs/Models/Requests/GetLibraryItemsSort.md deleted file mode 100644 index 86da785..0000000 --- a/docs/Models/Requests/GetLibraryItemsSort.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetLibraryItemsSort - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| `Default` | *string* | :heavy_minus_sign: | N/A | asc | -| `Active` | *bool* | :heavy_minus_sign: | N/A | false | -| `ActiveDirection` | [GetLibraryItemsActiveDirection](../../Models/Requests/GetLibraryItemsActiveDirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `DefaultDirection` | [GetLibraryItemsDefaultDirection](../../Models/Requests/GetLibraryItemsDefaultDirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `DescKey` | *string* | :heavy_minus_sign: | N/A | titleSort:desc | -| `FirstCharacterKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | -| `Key` | *string* | :heavy_check_mark: | N/A | titleSort | -| `Title` | *string* | :heavy_check_mark: | N/A | Title | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsType.md b/docs/Models/Requests/GetLibraryItemsType.md deleted file mode 100644 index d2d39f5..0000000 --- a/docs/Models/Requests/GetLibraryItemsType.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetLibraryItemsType - -The type of media content in the Plex library. This can represent videos, music, or photos. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | movie | -| `TvShow` | show | -| `Season` | season | -| `Episode` | episode | -| `Artist` | artist | -| `Album` | album | -| `Track` | track | -| `PhotoAlbum` | photoalbum | -| `Photo` | photo | -| `Collection` | collection | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsUltraBlurColors.md b/docs/Models/Requests/GetLibraryItemsUltraBlurColors.md deleted file mode 100644 index 88376a4..0000000 --- a/docs/Models/Requests/GetLibraryItemsUltraBlurColors.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsUltraBlurColors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `TopLeft` | *string* | :heavy_check_mark: | N/A | 11333b | -| `TopRight` | *string* | :heavy_check_mark: | N/A | 0a232d | -| `BottomRight` | *string* | :heavy_check_mark: | N/A | 73958 | -| `BottomLeft` | *string* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsWriter.md b/docs/Models/Requests/GetLibraryItemsWriter.md deleted file mode 100644 index 22d168a..0000000 --- a/docs/Models/Requests/GetLibraryItemsWriter.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | -| `Tag` | *string* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the writer. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryMatchesRequest.md b/docs/Models/Requests/GetLibraryMatchesRequest.md new file mode 100644 index 0000000..dce3c60 --- /dev/null +++ b/docs/Models/Requests/GetLibraryMatchesRequest.md @@ -0,0 +1,32 @@ +# GetLibraryMatchesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Type` | *long* | :heavy_minus_sign: | The metadata type to filter by | | +| `IncludeFullMetadata` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | N/A | 1 | +| `IncludeAncestorMetadata` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | N/A | 1 | +| `IncludeAlternateMetadataSources` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | N/A | 1 | +| `Guid` | *string* | :heavy_minus_sign: | Used for movies, shows, artists, albums, and tracks. Allowed for various URI schemes, to be defined. | | +| `Title` | *string* | :heavy_minus_sign: | The title to filter by or assign | | +| `Year` | *long* | :heavy_minus_sign: | Used for movies shows, and albums. Optional. | | +| `Path` | *string* | :heavy_minus_sign: | Used for movies, episodes, and tracks. The full path to the media file, used for "cloud-scanning" an item. | | +| `GrandparentTitle` | *string* | :heavy_minus_sign: | Used for episodes and tracks. The title of the show/artist. Required if `path` isn't passed. | | +| `GrandparentYear` | *long* | :heavy_minus_sign: | Used for episodes. The year of the show. | | +| `ParentIndex` | *long* | :heavy_minus_sign: | Used for episodes and tracks. The season/album number. | | +| `Index` | *long* | :heavy_minus_sign: | Used for episodes and tracks. The episode/tracks number in the season/album. | | +| `OriginallyAvailableAt` | *string* | :heavy_minus_sign: | Used for episodes. In the format `YYYY-MM-DD`. | | +| `ParentTitle` | *string* | :heavy_minus_sign: | Used for albums and tracks. The artist name for albums or the album name for tracks. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryMatchesResponse.md b/docs/Models/Requests/GetLibraryMatchesResponse.md new file mode 100644 index 0000000..9f1624f --- /dev/null +++ b/docs/Models/Requests/GetLibraryMatchesResponse.md @@ -0,0 +1,12 @@ +# GetLibraryMatchesResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllActiveDirection.md b/docs/Models/Requests/GetLibrarySectionsAllActiveDirection.md deleted file mode 100644 index ad9278a..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllActiveDirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibrarySectionsAllActiveDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Ascending` | asc | -| `Descending` | desc | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllCollection.md b/docs/Models/Requests/GetLibrarySectionsAllCollection.md deleted file mode 100644 index 6a5ba61..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllCollection.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllCollection - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `Tag` | *string* | :heavy_check_mark: | The user-made collection this media item belongs to | My Awesome Collection | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllCountry.md b/docs/Models/Requests/GetLibrarySectionsAllCountry.md deleted file mode 100644 index 8f7c182..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllCountry.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllCountry - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `Tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllDefaultDirection.md b/docs/Models/Requests/GetLibrarySectionsAllDefaultDirection.md deleted file mode 100644 index 3f42363..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllDefaultDirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibrarySectionsAllDefaultDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Ascending` | asc | -| `Descending` | desc | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllDirector.md b/docs/Models/Requests/GetLibrarySectionsAllDirector.md deleted file mode 100644 index 734b296..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllDirector.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- | -| `Tag` | *string* | :heavy_check_mark: | The role of Director | Danny Boyle | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllField.md b/docs/Models/Requests/GetLibrarySectionsAllField.md deleted file mode 100644 index a160c61..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllField.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllField - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Key` | *string* | :heavy_check_mark: | N/A | show.title | -| `Title` | *string* | :heavy_check_mark: | N/A | Show Title | -| `Type` | *string* | :heavy_check_mark: | N/A | string | -| `SubType` | *string* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllFieldType.md b/docs/Models/Requests/GetLibrarySectionsAllFieldType.md deleted file mode 100644 index b709dd2..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllFieldType.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibrarySectionsAllFieldType - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `Type` | *string* | :heavy_check_mark: | N/A | tag | -| `Operator` | List<[GetLibrarySectionsAllOperator](../../Models/Requests/GetLibrarySectionsAllOperator.md)> | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllFilter.md b/docs/Models/Requests/GetLibrarySectionsAllFilter.md deleted file mode 100644 index 729884f..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllFilter.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetLibrarySectionsAllFilter - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `Filter` | *string* | :heavy_check_mark: | N/A | genre | -| `FilterType` | *string* | :heavy_check_mark: | N/A | string | -| `Key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | -| `Title` | *string* | :heavy_check_mark: | N/A | Genre | -| `Type` | *string* | :heavy_check_mark: | N/A | filter | -| `Advanced` | *bool* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllGenre.md b/docs/Models/Requests/GetLibrarySectionsAllGenre.md deleted file mode 100644 index 8e47801..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllGenre.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `Tag` | *string* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllGuids.md b/docs/Models/Requests/GetLibrarySectionsAllGuids.md deleted file mode 100644 index c8f92aa..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllGuids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllHasThumbnail.md b/docs/Models/Requests/GetLibrarySectionsAllHasThumbnail.md deleted file mode 100644 index 327600d..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllHasThumbnail.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllHasThumbnail - -Indicates if the part has a thumbnail. - - -## Values - -| Name | Value | -| ------- | ------- | -| `False` | 0 | -| `True` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllImage.md b/docs/Models/Requests/GetLibrarySectionsAllImage.md deleted file mode 100644 index 2cfc6f2..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllImage.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibrarySectionsAllImage - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| `Alt` | *string* | :heavy_check_mark: | N/A | Episode 1 | -| `Type` | [GetLibrarySectionsAllLibraryResponseType](../../Models/Requests/GetLibrarySectionsAllLibraryResponseType.md) | :heavy_check_mark: | N/A | background | -| `Url` | *string* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllLibraryOptimizedForStreaming.md b/docs/Models/Requests/GetLibrarySectionsAllLibraryOptimizedForStreaming.md deleted file mode 100644 index 13cc0a3..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllLibraryOptimizedForStreaming.md +++ /dev/null @@ -1,18 +0,0 @@ -# GetLibrarySectionsAllLibraryOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### GetLibrarySectionsAllOptimizedForStreamingLibrary1 - -```csharp -GetLibrarySectionsAllLibraryOptimizedForStreaming.CreateGetLibrarySectionsAllOptimizedForStreamingLibrary1(/* values here */); -``` - -### Boolean - -```csharp -GetLibrarySectionsAllLibraryOptimizedForStreaming.CreateBoolean(/* values here */); -``` diff --git a/docs/Models/Requests/GetLibrarySectionsAllLibraryResponseType.md b/docs/Models/Requests/GetLibrarySectionsAllLibraryResponseType.md deleted file mode 100644 index ccda328..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllLibraryResponseType.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllLibraryResponseType - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `CoverPoster` | coverPoster | -| `Background` | background | -| `Snapshot` | snapshot | -| `ClearLogo` | clearLogo | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllLibraryType.md b/docs/Models/Requests/GetLibrarySectionsAllLibraryType.md deleted file mode 100644 index 5b9c6fb..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllLibraryType.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetLibrarySectionsAllLibraryType - -The type of media content in the Plex library. This can represent videos, music, or photos. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | movie | -| `TvShow` | show | -| `Season` | season | -| `Episode` | episode | -| `Artist` | artist | -| `Album` | album | -| `Track` | track | -| `PhotoAlbum` | photoalbum | -| `Photo` | photo | -| `Collection` | collection | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllMedia.md b/docs/Models/Requests/GetLibrarySectionsAllMedia.md deleted file mode 100644 index 43a0c23..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllMedia.md +++ /dev/null @@ -1,26 +0,0 @@ -# GetLibrarySectionsAllMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `Duration` | *int* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | -| `Bitrate` | *int* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | -| `Width` | *int* | :heavy_minus_sign: | Video width in pixels. | 3840 | -| `Height` | *int* | :heavy_minus_sign: | Video height in pixels. | 1602 | -| `AspectRatio` | *float* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | -| `AudioChannels` | *int* | :heavy_minus_sign: | Number of audio channels. | 6 | -| `DisplayOffset` | *int* | :heavy_minus_sign: | N/A | 50 | -| `AudioCodec` | *string* | :heavy_minus_sign: | Audio codec used. | eac3 | -| `VideoCodec` | *string* | :heavy_minus_sign: | Video codec used. | hevc | -| `VideoResolution` | *string* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | -| `Container` | *string* | :heavy_minus_sign: | File container type. | mkv | -| `VideoFrameRate` | *string* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | -| `VideoProfile` | *string* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `HasVoiceActivity` | *bool* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | -| `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `OptimizedForStreaming` | [GetLibrarySectionsAllOptimizedForStreaming](../../Models/Requests/GetLibrarySectionsAllOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `Part` | List<[GetLibrarySectionsAllPart](../../Models/Requests/GetLibrarySectionsAllPart.md)> | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllMediaContainer.md b/docs/Models/Requests/GetLibrarySectionsAllMediaContainer.md deleted file mode 100644 index f6d3413..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllMediaContainer.md +++ /dev/null @@ -1,26 +0,0 @@ -# GetLibrarySectionsAllMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `TotalSize` | *int* | :heavy_check_mark: | Total number of media items in the library. | 50 | -| `Offset` | *long* | :heavy_check_mark: | Offset value for pagination. | 0 | -| `AllowSync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `Art` | *string* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `Content` | *string* | :heavy_check_mark: | The content type or mode. | secondary | -| `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `LibrarySectionID` | *long* | :heavy_minus_sign: | The unique identifier for the library section. | 2 | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | The title of the library section. | TV Series | -| `LibrarySectionUUID` | *string* | :heavy_minus_sign: | The universally unique identifier for the library section. | e69655a2-ef48-4aba-bb19-0cc34d1e7d36 | -| `MediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `MediaTagVersion` | *long* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `Thumb` | *string* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `Nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | -| `Title1` | *string* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `Title2` | *string* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | -| `ViewGroup` | *string* | :heavy_check_mark: | Identifier for the view group layout. | secondary | -| `Meta` | [GetLibrarySectionsAllMeta](../../Models/Requests/GetLibrarySectionsAllMeta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | -| `Metadata` | List<[GetLibrarySectionsAllMetadata](../../Models/Requests/GetLibrarySectionsAllMetadata.md)> | :heavy_minus_sign: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllMeta.md b/docs/Models/Requests/GetLibrarySectionsAllMeta.md deleted file mode 100644 index 97249ee..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllMeta.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibrarySectionsAllMeta - -The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `Type` | List<[GetLibrarySectionsAllType](../../Models/Requests/GetLibrarySectionsAllType.md)> | :heavy_minus_sign: | N/A | -| `FieldType` | List<[GetLibrarySectionsAllFieldType](../../Models/Requests/GetLibrarySectionsAllFieldType.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllMetadata.md b/docs/Models/Requests/GetLibrarySectionsAllMetadata.md deleted file mode 100644 index 47739da..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllMetadata.md +++ /dev/null @@ -1,74 +0,0 @@ -# GetLibrarySectionsAllMetadata - -Unknown - - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_check_mark: | The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. | 58683 | -| `Key` | *string* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | -| `Guid` | *string* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | -| `Slug` | *string* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | -| `Studio` | *string* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | -| `Type` | [GetLibrarySectionsAllLibraryType](../../Models/Requests/GetLibrarySectionsAllLibraryType.md) | :heavy_check_mark: | N/A | movie | -| `Title` | *string* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | -| `TitleSort` | *string* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | -| `ContentRating` | *string* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | -| `Summary` | *string* | :heavy_check_mark: | A synopsis of the media item. | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.
| -| `Rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | -| `AudienceRating` | *double* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | -| `Year` | *int* | :heavy_minus_sign: | The release year of the media item. | 2022 | -| `Tagline` | *string* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | -| `Thumb` | *string* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | -| `Art` | *string* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | -| `Theme` | *string* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | -| `Index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | -| `LeafCount` | *int* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | -| `ViewedLeafCount` | *int* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | -| `ChildCount` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | -| `SeasonCount` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | -| `Duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | -| `OriginallyAvailableAt` | [LocalDate](https://nodatime.org/3.1.x/api/NodaTime.LocalDate.html) | :heavy_minus_sign: | The original release date of the media item. | 2022-12-14 | -| `AddedAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | -| `UpdatedAt` | *long* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `AudienceRatingImage` | *string* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | -| `ChapterSource` | *string* | :heavy_minus_sign: | The source from which chapter data is derived. | media | -| `PrimaryExtraKey` | *string* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | -| `OriginalTitle` | *string* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | -| `ParentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | -| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | -| `ParentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `GrandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `GrandparentSlug` | *string* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | -| `GrandparentKey` | *string* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | -| `ParentKey` | *string* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | -| `GrandparentTitle` | *string* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | -| `GrandparentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | -| `GrandparentTheme` | *string* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | -| `GrandparentArt` | *string* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | -| `ParentTitle` | *string* | :heavy_minus_sign: | The title of the parent media item. | Caprica | -| `ParentIndex` | *int* | :heavy_minus_sign: | The index position of the parent media item. | 1 | -| `ParentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | -| `RatingImage` | *string* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | -| `ViewCount` | *int* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | -| `ViewOffset` | *int* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | -| `SkipCount` | *int* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | -| `Subtype` | *string* | :heavy_minus_sign: | A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. | clip | -| `LastRatedAt` | *long* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | -| `CreatedAtAccuracy` | *string* | :heavy_minus_sign: | The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). | epoch,local | -| `CreatedAtTZOffset` | *string* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | -| `LastViewedAt` | *int* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | -| `UserRating` | *float* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | -| `Image` | List<[GetLibrarySectionsAllImage](../../Models/Requests/GetLibrarySectionsAllImage.md)> | :heavy_minus_sign: | N/A | | -| `UltraBlurColors` | [GetLibrarySectionsAllUltraBlurColors](../../Models/Requests/GetLibrarySectionsAllUltraBlurColors.md) | :heavy_minus_sign: | N/A | | -| `Guids` | List<[GetLibrarySectionsAllGuids](../../Models/Requests/GetLibrarySectionsAllGuids.md)> | :heavy_minus_sign: | N/A | | -| `Media` | List<[GetLibrarySectionsAllMedia](../../Models/Requests/GetLibrarySectionsAllMedia.md)> | :heavy_minus_sign: | N/A | | -| `Genre` | List<[GetLibrarySectionsAllGenre](../../Models/Requests/GetLibrarySectionsAllGenre.md)> | :heavy_minus_sign: | N/A | | -| `Country` | List<[GetLibrarySectionsAllCountry](../../Models/Requests/GetLibrarySectionsAllCountry.md)> | :heavy_minus_sign: | N/A | | -| `Director` | List<[GetLibrarySectionsAllDirector](../../Models/Requests/GetLibrarySectionsAllDirector.md)> | :heavy_minus_sign: | N/A | | -| `Writer` | List<[GetLibrarySectionsAllWriter](../../Models/Requests/GetLibrarySectionsAllWriter.md)> | :heavy_minus_sign: | N/A | | -| `Role` | List<[GetLibrarySectionsAllRole](../../Models/Requests/GetLibrarySectionsAllRole.md)> | :heavy_minus_sign: | N/A | | -| `Collection` | List<[GetLibrarySectionsAllCollection](../../Models/Requests/GetLibrarySectionsAllCollection.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllOperator.md b/docs/Models/Requests/GetLibrarySectionsAllOperator.md deleted file mode 100644 index 36d9bad..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllOperator.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibrarySectionsAllOperator - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Key` | *string* | :heavy_check_mark: | N/A | = | -| `Title` | *string* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming.md b/docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming.md deleted file mode 100644 index 10afb84..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming.md +++ /dev/null @@ -1,18 +0,0 @@ -# GetLibrarySectionsAllOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### GetLibrarySectionsAllOptimizedForStreaming1 - -```csharp -GetLibrarySectionsAllOptimizedForStreaming.CreateGetLibrarySectionsAllOptimizedForStreaming1(/* values here */); -``` - -### Boolean - -```csharp -GetLibrarySectionsAllOptimizedForStreaming.CreateBoolean(/* values here */); -``` diff --git a/docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming1.md b/docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming1.md deleted file mode 100644 index d9de3df..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreaming1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibrarySectionsAllOptimizedForStreaming1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreamingLibrary1.md b/docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreamingLibrary1.md deleted file mode 100644 index ebe4787..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllOptimizedForStreamingLibrary1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibrarySectionsAllOptimizedForStreamingLibrary1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllPart.md b/docs/Models/Requests/GetLibrarySectionsAllPart.md deleted file mode 100644 index 3df1597..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllPart.md +++ /dev/null @@ -1,23 +0,0 @@ -# GetLibrarySectionsAllPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | -| `Accessible` | *bool* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `Exists` | *bool* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `Id` | *long* | :heavy_check_mark: | Unique part identifier. | 418385 | -| `Key` | *string* | :heavy_check_mark: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | -| `Indexes` | *string* | :heavy_minus_sign: | N/A | sd | -| `Duration` | *int* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | -| `File` | *string* | :heavy_check_mark: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | -| `Size` | *long* | :heavy_check_mark: | File size in bytes. | 30649952104 | -| `PacketLength` | *int* | :heavy_minus_sign: | N/A | 188 | -| `Container` | *string* | :heavy_minus_sign: | Container format of the part. | mkv | -| `VideoProfile` | *string* | :heavy_minus_sign: | Video profile for the part. | main 10 | -| `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `OptimizedForStreaming` | [GetLibrarySectionsAllLibraryOptimizedForStreaming](../../Models/Requests/GetLibrarySectionsAllLibraryOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `HasThumbnail` | [GetLibrarySectionsAllHasThumbnail](../../Models/Requests/GetLibrarySectionsAllHasThumbnail.md) | :heavy_minus_sign: | N/A | 1 | -| `Stream` | List<[GetLibrarySectionsAllStream](../../Models/Requests/GetLibrarySectionsAllStream.md)> | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllQueryParamIncludeMeta.md b/docs/Models/Requests/GetLibrarySectionsAllQueryParamIncludeMeta.md deleted file mode 100644 index 7f15773..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllQueryParamIncludeMeta.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibrarySectionsAllQueryParamIncludeMeta - -Adds the Meta object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllQueryParamType.md b/docs/Models/Requests/GetLibrarySectionsAllQueryParamType.md deleted file mode 100644 index 7e859e6..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllQueryParamType.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetLibrarySectionsAllQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | 1 | -| `TvShow` | 2 | -| `Season` | 3 | -| `Episode` | 4 | -| `Artist` | 5 | -| `Album` | 6 | -| `Track` | 7 | -| `PhotoAlbum` | 8 | -| `Photo` | 9 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllRequest.md b/docs/Models/Requests/GetLibrarySectionsAllRequest.md deleted file mode 100644 index 15855e4..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllRequest.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetLibrarySectionsAllRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `Type` | [GetLibrarySectionsAllQueryParamType](../../Models/Requests/GetLibrarySectionsAllQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `IncludeMeta` | [GetLibrarySectionsAllQueryParamIncludeMeta](../../Models/Requests/GetLibrarySectionsAllQueryParamIncludeMeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | -| `IncludeGuids` | [QueryParamIncludeGuids](../../Models/Requests/QueryParamIncludeGuids.md) | :heavy_minus_sign: | Adds the Guid object to the response
| 1 | -| `IncludeAdvanced` | [IncludeAdvanced](../../Models/Requests/IncludeAdvanced.md) | :heavy_minus_sign: | N/A | 1 | -| `IncludeCollections` | [QueryParamIncludeCollections](../../Models/Requests/QueryParamIncludeCollections.md) | :heavy_minus_sign: | N/A | 1 | -| `IncludeExternalMedia` | [QueryParamIncludeExternalMedia](../../Models/Requests/QueryParamIncludeExternalMedia.md) | :heavy_minus_sign: | N/A | 1 | -| `XPlexContainerStart` | *int* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | -| `XPlexContainerSize` | *int* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllResponse.md b/docs/Models/Requests/GetLibrarySectionsAllResponse.md deleted file mode 100644 index c156eb2..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllResponse - - -## 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` | [GetLibrarySectionsAllResponseBody](../../Models/Requests/GetLibrarySectionsAllResponseBody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllResponseBody.md b/docs/Models/Requests/GetLibrarySectionsAllResponseBody.md deleted file mode 100644 index 97d7e11..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibrarySectionsAllResponseBody - -Successful response containing media container data. - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetLibrarySectionsAllMediaContainer](../../Models/Requests/GetLibrarySectionsAllMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllRole.md b/docs/Models/Requests/GetLibrarySectionsAllRole.md deleted file mode 100644 index 10233d2..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllRole.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| `Tag` | *string* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllSort.md b/docs/Models/Requests/GetLibrarySectionsAllSort.md deleted file mode 100644 index e72e8f9..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllSort.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetLibrarySectionsAllSort - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -| `Default` | *string* | :heavy_minus_sign: | N/A | asc | -| `Active` | *bool* | :heavy_minus_sign: | N/A | false | -| `ActiveDirection` | [GetLibrarySectionsAllActiveDirection](../../Models/Requests/GetLibrarySectionsAllActiveDirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `DefaultDirection` | [GetLibrarySectionsAllDefaultDirection](../../Models/Requests/GetLibrarySectionsAllDefaultDirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `DescKey` | *string* | :heavy_minus_sign: | N/A | titleSort:desc | -| `FirstCharacterKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | -| `Key` | *string* | :heavy_check_mark: | N/A | titleSort | -| `Title` | *string* | :heavy_check_mark: | N/A | Title | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllStream.md b/docs/Models/Requests/GetLibrarySectionsAllStream.md deleted file mode 100644 index 1db66c5..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllStream.md +++ /dev/null @@ -1,58 +0,0 @@ -# GetLibrarySectionsAllStream - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | Unique stream identifier. | 1002625 | -| `StreamType` | *long* | :heavy_check_mark: | Stream type:
- VIDEO = 1
- AUDIO = 2
- SUBTITLE = 3
| | -| `Format` | *string* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | -| `Default` | *bool* | :heavy_minus_sign: | Indicates if this stream is default. | true | -| `Codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | -| `Index` | *int* | :heavy_minus_sign: | Index of the stream. | 0 | -| `Bitrate` | *int* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | -| `Language` | *string* | :heavy_minus_sign: | Language of the stream. | English | -| `LanguageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | -| `LanguageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | -| `HeaderCompression` | *bool* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | -| `DOVIBLCompatID` | *int* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | -| `DOVIBLPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | -| `DOVIELPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | -| `DOVILevel` | *int* | :heavy_minus_sign: | Dolby Vision level. | 6 | -| `DOVIPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | -| `DOVIProfile` | *int* | :heavy_minus_sign: | Dolby Vision profile. | 8 | -| `DOVIRPUPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | -| `DOVIVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | -| `BitDepth` | *int* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | -| `ChromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | -| `ChromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | -| `CodedHeight` | *int* | :heavy_minus_sign: | Coded video height. | 1608 | -| `CodedWidth` | *int* | :heavy_minus_sign: | Coded video width. | 3840 | -| `ClosedCaptions` | *bool* | :heavy_minus_sign: | N/A | true | -| `ColorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | -| `ColorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | -| `ColorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | -| `ColorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | -| `FrameRate` | *float* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | -| `Key` | *string* | :heavy_minus_sign: | Key to access this stream part. | /library/streams/216389 | -| `Height` | *int* | :heavy_minus_sign: | Height of the video stream. | 1602 | -| `Level` | *int* | :heavy_minus_sign: | Video level. | 150 | -| `Original` | *bool* | :heavy_minus_sign: | Indicates if this is the original stream. | true | -| `HasScalingMatrix` | *bool* | :heavy_minus_sign: | N/A | false | -| `Profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | -| `ScanType` | *string* | :heavy_minus_sign: | N/A | progressive | -| `EmbeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | -| `RefFrames` | *int* | :heavy_minus_sign: | Number of reference frames. | 1 | -| `Width` | *int* | :heavy_minus_sign: | Width of the video stream. | 3840 | -| `DisplayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `ExtendedDisplayTitle` | *string* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `Selected` | *bool* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | -| `Forced` | *bool* | :heavy_minus_sign: | N/A | true | -| `Channels` | *int* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | -| `AudioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | -| `SamplingRate` | *int* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | -| `CanAutoSync` | *bool* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | -| `HearingImpaired` | *bool* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | -| `Dub` | *bool* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | -| `Title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllType.md b/docs/Models/Requests/GetLibrarySectionsAllType.md deleted file mode 100644 index a9f43ef..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllType.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetLibrarySectionsAllType - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `Key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `Type` | *string* | :heavy_check_mark: | N/A | filter | -| `Subtype` | *string* | :heavy_minus_sign: | N/A | clip | -| `Title` | *string* | :heavy_check_mark: | N/A | TV Shows | -| `Active` | *bool* | :heavy_check_mark: | N/A | false | -| `Filter` | List<[GetLibrarySectionsAllFilter](../../Models/Requests/GetLibrarySectionsAllFilter.md)> | :heavy_minus_sign: | N/A | | -| `Sort` | List<[GetLibrarySectionsAllSort](../../Models/Requests/GetLibrarySectionsAllSort.md)> | :heavy_minus_sign: | N/A | | -| `Field` | List<[GetLibrarySectionsAllField](../../Models/Requests/GetLibrarySectionsAllField.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllUltraBlurColors.md b/docs/Models/Requests/GetLibrarySectionsAllUltraBlurColors.md deleted file mode 100644 index ea42dca..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllUltraBlurColors.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllUltraBlurColors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `TopLeft` | *string* | :heavy_check_mark: | N/A | 11333b | -| `TopRight` | *string* | :heavy_check_mark: | N/A | 0a232d | -| `BottomRight` | *string* | :heavy_check_mark: | N/A | 73958 | -| `BottomLeft` | *string* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibrarySectionsAllWriter.md b/docs/Models/Requests/GetLibrarySectionsAllWriter.md deleted file mode 100644 index b7e940d..0000000 --- a/docs/Models/Requests/GetLibrarySectionsAllWriter.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | \ No newline at end of file diff --git a/docs/Models/Requests/GetLineupChannelsMediaContainer.md b/docs/Models/Requests/GetLineupChannelsMediaContainer.md new file mode 100644 index 0000000..15f15d5 --- /dev/null +++ b/docs/Models/Requests/GetLineupChannelsMediaContainer.md @@ -0,0 +1,17 @@ +# GetLineupChannelsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Lineup` | List<[Models.Requests.Lineup](../../Models/Requests/Lineup.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLineupChannelsRequest.md b/docs/Models/Requests/GetLineupChannelsRequest.md new file mode 100644 index 0000000..d6e9a6d --- /dev/null +++ b/docs/Models/Requests/GetLineupChannelsRequest.md @@ -0,0 +1,19 @@ +# GetLineupChannelsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Lineup` | List<*string*> | :heavy_check_mark: | The URIs describing the lineups | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLineupChannelsResponse.md b/docs/Models/Requests/GetLineupChannelsResponse.md new file mode 100644 index 0000000..8113a85 --- /dev/null +++ b/docs/Models/Requests/GetLineupChannelsResponse.md @@ -0,0 +1,11 @@ +# GetLineupChannelsResponse + + +## 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` | [GetLineupChannelsResponseBody](../../Models/Requests/GetLineupChannelsResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetLineupChannelsResponseBody.md b/docs/Models/Requests/GetLineupChannelsResponseBody.md new file mode 100644 index 0000000..d4ef447 --- /dev/null +++ b/docs/Models/Requests/GetLineupChannelsResponseBody.md @@ -0,0 +1,10 @@ +# GetLineupChannelsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetLineupChannelsMediaContainer](../../Models/Requests/GetLineupChannelsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLineupRequest.md b/docs/Models/Requests/GetLineupRequest.md new file mode 100644 index 0000000..0b2c27a --- /dev/null +++ b/docs/Models/Requests/GetLineupRequest.md @@ -0,0 +1,20 @@ +# GetLineupRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DeviceQueryParameter` | *string* | :heavy_check_mark: | The URI describing the device | | +| `LineupGroup` | *string* | :heavy_check_mark: | The URI describing the lineupGroup | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLineupResponse.md b/docs/Models/Requests/GetLineupResponse.md new file mode 100644 index 0000000..1406372 --- /dev/null +++ b/docs/Models/Requests/GetLineupResponse.md @@ -0,0 +1,11 @@ +# GetLineupResponse + + +## 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 | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetLiveTVSessionRequest.md b/docs/Models/Requests/GetLiveTVSessionRequest.md new file mode 100644 index 0000000..55d2cca --- /dev/null +++ b/docs/Models/Requests/GetLiveTVSessionRequest.md @@ -0,0 +1,19 @@ +# GetLiveTVSessionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SessionId` | *string* | :heavy_check_mark: | The session id | | \ No newline at end of file diff --git a/docs/Models/Requests/GetLiveTVSessionResponse.md b/docs/Models/Requests/GetLiveTVSessionResponse.md new file mode 100644 index 0000000..1163718 --- /dev/null +++ b/docs/Models/Requests/GetLiveTVSessionResponse.md @@ -0,0 +1,12 @@ +# GetLiveTVSessionResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaArtsMediaContainer.md b/docs/Models/Requests/GetMediaArtsMediaContainer.md deleted file mode 100644 index 05398d0..0000000 --- a/docs/Models/Requests/GetMediaArtsMediaContainer.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaArtsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `MediaTagVersion` | *long* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `MediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `Metadata` | List<[GetMediaArtsMetadata](../../Models/Requests/GetMediaArtsMetadata.md)> | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaArtsMetadata.md b/docs/Models/Requests/GetMediaArtsMetadata.md deleted file mode 100644 index 58f3a37..0000000 --- a/docs/Models/Requests/GetMediaArtsMetadata.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaArtsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Key` | *string* | :heavy_check_mark: | The URL of the artwork. | https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg | -| `Provider` | *string* | :heavy_minus_sign: | The provider of the artwork. | tmdb | -| `RatingKey` | *string* | :heavy_check_mark: | The URL of the artwork. | https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg | -| `Selected` | *bool* | :heavy_check_mark: | Whether this is the selected artwork. | true | -| `Thumb` | *string* | :heavy_check_mark: | The URL of the artwork thumbnail. | https://images.plex.tv/photo?height=270&width=480&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FixgFmf1X59PUZam2qbAfskx2gQr%2Ejpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaArtsRequest.md b/docs/Models/Requests/GetMediaArtsRequest.md deleted file mode 100644 index 2b2bb9e..0000000 --- a/docs/Models/Requests/GetMediaArtsRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetMediaArtsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `RatingKey` | *long* | :heavy_check_mark: | the id of the library item to return the artwork of. | 16099 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaArtsResponse.md b/docs/Models/Requests/GetMediaArtsResponse.md deleted file mode 100644 index ef2c66c..0000000 --- a/docs/Models/Requests/GetMediaArtsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaArtsResponse - - -## 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` | [GetMediaArtsResponseBody](../../Models/Requests/GetMediaArtsResponseBody.md) | :heavy_minus_sign: | The available background artwork for the library item. | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaArtsResponseBody.md b/docs/Models/Requests/GetMediaArtsResponseBody.md deleted file mode 100644 index 7c6a235..0000000 --- a/docs/Models/Requests/GetMediaArtsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaArtsResponseBody - -The available background artwork for the library item. - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `MediaContainer` | [GetMediaArtsMediaContainer](../../Models/Requests/GetMediaArtsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataAttributes.md b/docs/Models/Requests/GetMediaMetaDataAttributes.md deleted file mode 100644 index b4db61e..0000000 --- a/docs/Models/Requests/GetMediaMetaDataAttributes.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaMetaDataAttributes - -Attributes associated with the marker. - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | The identifier for the attributes. | 306970 | -| `Version` | *long* | :heavy_minus_sign: | The version number of the marker attributes. | 4 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataChapter.md b/docs/Models/Requests/GetMediaMetaDataChapter.md deleted file mode 100644 index a9a8154..0000000 --- a/docs/Models/Requests/GetMediaMetaDataChapter.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetMediaMetaDataChapter - -The thumbnail for the chapter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | -| `Id` | *long* | :heavy_check_mark: | N/A | 4 | -| `Filter` | *string* | :heavy_check_mark: | N/A | thumb=4 | -| `Index` | *long* | :heavy_check_mark: | N/A | 1 | -| `StartTimeOffset` | *long* | :heavy_check_mark: | N/A | 0 | -| `EndTimeOffset` | *long* | :heavy_check_mark: | N/A | 100100 | -| `Thumb` | *string* | :heavy_check_mark: | N/A | /library/media/46883/chapterImages/1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataCountry.md b/docs/Models/Requests/GetMediaMetaDataCountry.md deleted file mode 100644 index 9d9cd56..0000000 --- a/docs/Models/Requests/GetMediaMetaDataCountry.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaMetaDataCountry - -The filter query string for country media items. - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | The unique identifier for the country.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `Tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | -| `Filter` | *string* | :heavy_check_mark: | N/A | country=19 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataDirector.md b/docs/Models/Requests/GetMediaMetaDataDirector.md deleted file mode 100644 index 68955e1..0000000 --- a/docs/Models/Requests/GetMediaMetaDataDirector.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaMetaDataDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | Unique identifier for the director. | 126522 | -| `Tag` | *string* | :heavy_check_mark: | The role of Director | Danny Boyle | -| `Filter` | *string* | :heavy_check_mark: | The filter string used to query this director. | director=235876 | -| `TagKey` | *string* | :heavy_check_mark: | A unique 24-character hexadecimal key associated with the director's tag, used for internal identification. | 5d776831151a60001f24d031 | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the director. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataExtras.md b/docs/Models/Requests/GetMediaMetaDataExtras.md deleted file mode 100644 index 09e1a99..0000000 --- a/docs/Models/Requests/GetMediaMetaDataExtras.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetMediaMetaDataExtras - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------- | ----------------------- | ----------------------- | ----------------------- | ----------------------- | -| `Size` | *long* | :heavy_minus_sign: | The size of the extras. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataGenre.md b/docs/Models/Requests/GetMediaMetaDataGenre.md deleted file mode 100644 index 43b7bc0..0000000 --- a/docs/Models/Requests/GetMediaMetaDataGenre.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaMetaDataGenre - -The filter query string for similar items. - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | The unique identifier for the genre.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `Tag` | *string* | :heavy_check_mark: | The genre name of this media-item
| Crime | -| `Filter` | *string* | :heavy_check_mark: | N/A | genre=19 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataGuids.md b/docs/Models/Requests/GetMediaMetaDataGuids.md deleted file mode 100644 index a151ef3..0000000 --- a/docs/Models/Requests/GetMediaMetaDataGuids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetMediaMetaDataGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataHasThumbnail.md b/docs/Models/Requests/GetMediaMetaDataHasThumbnail.md deleted file mode 100644 index fc2814d..0000000 --- a/docs/Models/Requests/GetMediaMetaDataHasThumbnail.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaMetaDataHasThumbnail - -Indicates if the part has a thumbnail. - - - -## Values - -| Name | Value | -| ------- | ------- | -| `False` | 0 | -| `True` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataImage.md b/docs/Models/Requests/GetMediaMetaDataImage.md deleted file mode 100644 index a8a9bf6..0000000 --- a/docs/Models/Requests/GetMediaMetaDataImage.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaMetaDataImage - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| `Alt` | *string* | :heavy_check_mark: | N/A | Episode 1 | -| `Type` | [GetMediaMetaDataLibraryType](../../Models/Requests/GetMediaMetaDataLibraryType.md) | :heavy_check_mark: | N/A | background | -| `Url` | *string* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.md b/docs/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.md deleted file mode 100644 index 87f1f95..0000000 --- a/docs/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetMediaMetaDataLibraryOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - - -## Supported Types - -### GetMediaMetaDataOptimizedForStreamingLibrary1 - -```csharp -GetMediaMetaDataLibraryOptimizedForStreaming.CreateGetMediaMetaDataOptimizedForStreamingLibrary1(/* values here */); -``` - -### Boolean - -```csharp -GetMediaMetaDataLibraryOptimizedForStreaming.CreateBoolean(/* values here */); -``` diff --git a/docs/Models/Requests/GetMediaMetaDataLibraryType.md b/docs/Models/Requests/GetMediaMetaDataLibraryType.md deleted file mode 100644 index 4ec8e6b..0000000 --- a/docs/Models/Requests/GetMediaMetaDataLibraryType.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaMetaDataLibraryType - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `CoverPoster` | coverPoster | -| `Background` | background | -| `Snapshot` | snapshot | -| `ClearLogo` | clearLogo | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataLocation.md b/docs/Models/Requests/GetMediaMetaDataLocation.md deleted file mode 100644 index a3a1d7b..0000000 --- a/docs/Models/Requests/GetMediaMetaDataLocation.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetMediaMetaDataLocation - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Path` | *string* | :heavy_check_mark: | The file path for the location. | /TV Shows/Better Call Saul | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataMarker.md b/docs/Models/Requests/GetMediaMetaDataMarker.md deleted file mode 100644 index 77fc0bc..0000000 --- a/docs/Models/Requests/GetMediaMetaDataMarker.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetMediaMetaDataMarker - -The final status of the marker - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | N/A | 306970 | -| `Type` | *string* | :heavy_check_mark: | N/A | credits | -| `StartTimeOffset` | *long* | :heavy_check_mark: | N/A | 4176050 | -| `EndTimeOffset` | *long* | :heavy_check_mark: | N/A | 4393389 | -| `Final` | *bool* | :heavy_minus_sign: | N/A | true | -| `Attributes` | [GetMediaMetaDataAttributes](../../Models/Requests/GetMediaMetaDataAttributes.md) | :heavy_minus_sign: | Attributes associated with the marker. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataMedia.md b/docs/Models/Requests/GetMediaMetaDataMedia.md deleted file mode 100644 index b1a960d..0000000 --- a/docs/Models/Requests/GetMediaMetaDataMedia.md +++ /dev/null @@ -1,26 +0,0 @@ -# GetMediaMetaDataMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `Duration` | *int* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | -| `Bitrate` | *int* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | -| `Width` | *int* | :heavy_minus_sign: | Video width in pixels. | 3840 | -| `Height` | *int* | :heavy_minus_sign: | Video height in pixels. | 1602 | -| `AspectRatio` | *float* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | -| `AudioChannels` | *int* | :heavy_minus_sign: | Number of audio channels. | 6 | -| `DisplayOffset` | *int* | :heavy_minus_sign: | N/A | 50 | -| `AudioCodec` | *string* | :heavy_minus_sign: | Audio codec used. | aac | -| `VideoCodec` | *string* | :heavy_minus_sign: | Video codec used. | hevc | -| `VideoResolution` | *string* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | -| `Container` | *string* | :heavy_minus_sign: | Container format of the media. | mp4 | -| `VideoFrameRate` | *string* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | -| `VideoProfile` | *string* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `HasVoiceActivity` | *bool* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | -| `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `OptimizedForStreaming` | [GetMediaMetaDataOptimizedForStreaming](../../Models/Requests/GetMediaMetaDataOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | Indicates whether the media has 64-bit offsets.
This is relevant for media files that may require larger offsets than what 32-bit integers can provide.
| false | -| `Part` | List<[GetMediaMetaDataPart](../../Models/Requests/GetMediaMetaDataPart.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataMediaContainer.md b/docs/Models/Requests/GetMediaMetaDataMediaContainer.md deleted file mode 100644 index 76d5ba1..0000000 --- a/docs/Models/Requests/GetMediaMetaDataMediaContainer.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetMediaMetaDataMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `AllowSync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `LibrarySectionID` | *long* | :heavy_minus_sign: | The unique identifier for the library section. | 2 | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | The title of the library section. | TV Series | -| `LibrarySectionUUID` | *string* | :heavy_minus_sign: | The universally unique identifier for the library section. | e69655a2-ef48-4aba-bb19-0cc34d1e7d36 | -| `MediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `MediaTagVersion` | *long* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `Metadata` | List<[GetMediaMetaDataMetadata](../../Models/Requests/GetMediaMetaDataMetadata.md)> | :heavy_check_mark: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataMetadata.md b/docs/Models/Requests/GetMediaMetaDataMetadata.md deleted file mode 100644 index afd7aaf..0000000 --- a/docs/Models/Requests/GetMediaMetaDataMetadata.md +++ /dev/null @@ -1,83 +0,0 @@ -# GetMediaMetaDataMetadata - -Unknown - - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_check_mark: | The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. | 58683 | -| `Key` | *string* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | -| `Guid` | *string* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | -| `Slug` | *string* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | -| `Studio` | *string* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | -| `Type` | [GetMediaMetaDataType](../../Models/Requests/GetMediaMetaDataType.md) | :heavy_check_mark: | N/A | movie | -| `Title` | *string* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | -| `TitleSort` | *string* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | -| `ContentRating` | *string* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | -| `Summary` | *string* | :heavy_check_mark: | A synopsis of the media item. | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.
| -| `Rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | -| `AudienceRating` | *double* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | -| `Year` | *int* | :heavy_minus_sign: | The release year of the media item. | 2022 | -| `Tagline` | *string* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | -| `Thumb` | *string* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | -| `Art` | *string* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | -| `Theme` | *string* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | -| `Index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | -| `LeafCount` | *int* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | -| `ViewedLeafCount` | *int* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | -| `ChildCount` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | -| `SeasonCount` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | -| `Duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | -| `OriginallyAvailableAt` | [LocalDate](https://nodatime.org/3.1.x/api/NodaTime.LocalDate.html) | :heavy_minus_sign: | The original release date of the media item. | 2022-12-14 | -| `AddedAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | -| `UpdatedAt` | *long* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `AudienceRatingImage` | *string* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | -| `ChapterSource` | *string* | :heavy_minus_sign: | The source from which chapter data is derived. | media | -| `PrimaryExtraKey` | *string* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | -| `OriginalTitle` | *string* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | -| `ParentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | -| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | -| `ParentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `GrandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `GrandparentSlug` | *string* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | -| `GrandparentKey` | *string* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | -| `ParentKey` | *string* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | -| `GrandparentTitle` | *string* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | -| `GrandparentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | -| `GrandparentTheme` | *string* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | -| `GrandparentArt` | *string* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | -| `ParentTitle` | *string* | :heavy_minus_sign: | The title of the parent media item. | Caprica | -| `ParentIndex` | *int* | :heavy_minus_sign: | The index position of the parent media item. | 1 | -| `ParentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | -| `RatingImage` | *string* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | -| `ViewCount` | *int* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | -| `ViewOffset` | *int* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | -| `SkipCount` | *int* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | -| `Subtype` | *string* | :heavy_minus_sign: | A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. | clip | -| `LastRatedAt` | *long* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | -| `CreatedAtAccuracy` | *string* | :heavy_minus_sign: | The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). | epoch,local | -| `CreatedAtTZOffset` | *string* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | -| `LastViewedAt` | *int* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | -| `UserRating` | *float* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | -| `Image` | List<[GetMediaMetaDataImage](../../Models/Requests/GetMediaMetaDataImage.md)> | :heavy_minus_sign: | N/A | | -| `UltraBlurColors` | [GetMediaMetaDataUltraBlurColors](../../Models/Requests/GetMediaMetaDataUltraBlurColors.md) | :heavy_minus_sign: | N/A | | -| `LibrarySectionID` | *long* | :heavy_minus_sign: | The identifier for the library section. | 1 | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | The title of the library section. | Movies | -| `LibrarySectionKey` | *string* | :heavy_minus_sign: | The key corresponding to the library section. | /library/sections/1 | -| `Guids` | List<[GetMediaMetaDataGuids](../../Models/Requests/GetMediaMetaDataGuids.md)> | :heavy_minus_sign: | N/A | | -| `Media` | List<[GetMediaMetaDataMedia](../../Models/Requests/GetMediaMetaDataMedia.md)> | :heavy_minus_sign: | N/A | | -| `Genre` | List<[GetMediaMetaDataGenre](../../Models/Requests/GetMediaMetaDataGenre.md)> | :heavy_minus_sign: | N/A | | -| `Country` | List<[GetMediaMetaDataCountry](../../Models/Requests/GetMediaMetaDataCountry.md)> | :heavy_minus_sign: | N/A | | -| `Director` | List<[GetMediaMetaDataDirector](../../Models/Requests/GetMediaMetaDataDirector.md)> | :heavy_minus_sign: | N/A | | -| `Writer` | List<[GetMediaMetaDataWriter](../../Models/Requests/GetMediaMetaDataWriter.md)> | :heavy_minus_sign: | N/A | | -| `Producer` | List<[GetMediaMetaDataProducer](../../Models/Requests/GetMediaMetaDataProducer.md)> | :heavy_minus_sign: | N/A | | -| `Role` | List<[GetMediaMetaDataRole](../../Models/Requests/GetMediaMetaDataRole.md)> | :heavy_minus_sign: | N/A | | -| `Ratings` | List<[GetMediaMetaDataRatings](../../Models/Requests/GetMediaMetaDataRatings.md)> | :heavy_minus_sign: | N/A | | -| `Similar` | List<[GetMediaMetaDataSimilar](../../Models/Requests/GetMediaMetaDataSimilar.md)> | :heavy_minus_sign: | N/A | | -| `Location` | List<[GetMediaMetaDataLocation](../../Models/Requests/GetMediaMetaDataLocation.md)> | :heavy_minus_sign: | N/A | | -| `Chapter` | List<[GetMediaMetaDataChapter](../../Models/Requests/GetMediaMetaDataChapter.md)> | :heavy_minus_sign: | N/A | | -| `Marker` | List<[GetMediaMetaDataMarker](../../Models/Requests/GetMediaMetaDataMarker.md)> | :heavy_minus_sign: | N/A | | -| `Extras` | [GetMediaMetaDataExtras](../../Models/Requests/GetMediaMetaDataExtras.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming.md b/docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming.md deleted file mode 100644 index bcb8997..0000000 --- a/docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming.md +++ /dev/null @@ -1,18 +0,0 @@ -# GetMediaMetaDataOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### GetMediaMetaDataOptimizedForStreaming1 - -```csharp -GetMediaMetaDataOptimizedForStreaming.CreateGetMediaMetaDataOptimizedForStreaming1(/* values here */); -``` - -### Boolean - -```csharp -GetMediaMetaDataOptimizedForStreaming.CreateBoolean(/* values here */); -``` diff --git a/docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming1.md b/docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming1.md deleted file mode 100644 index 009f128..0000000 --- a/docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetMediaMetaDataOptimizedForStreaming1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.md b/docs/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.md deleted file mode 100644 index 12f0d93..0000000 --- a/docs/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetMediaMetaDataOptimizedForStreamingLibrary1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataPart.md b/docs/Models/Requests/GetMediaMetaDataPart.md deleted file mode 100644 index b6a7a7a..0000000 --- a/docs/Models/Requests/GetMediaMetaDataPart.md +++ /dev/null @@ -1,23 +0,0 @@ -# GetMediaMetaDataPart - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -| `Accessible` | *bool* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `Exists` | *bool* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `Id` | *long* | :heavy_check_mark: | Unique part identifier. | 418385 | -| `Key` | *string* | :heavy_minus_sign: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | -| `Indexes` | *string* | :heavy_minus_sign: | N/A | sd | -| `Duration` | *int* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | -| `File` | *string* | :heavy_minus_sign: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | -| `Size` | *long* | :heavy_minus_sign: | File size in bytes. | 30649952104 | -| `PacketLength` | *int* | :heavy_minus_sign: | N/A | 188 | -| `Container` | *string* | :heavy_minus_sign: | Container format of the part. | mkv | -| `VideoProfile` | *string* | :heavy_minus_sign: | Video profile for the part. | main 10 | -| `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `OptimizedForStreaming` | [GetMediaMetaDataLibraryOptimizedForStreaming](../../Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
| | -| `HasThumbnail` | [GetMediaMetaDataHasThumbnail](../../Models/Requests/GetMediaMetaDataHasThumbnail.md) | :heavy_minus_sign: | N/A | 1 | -| `Stream` | List<[GetMediaMetaDataStream](../../Models/Requests/GetMediaMetaDataStream.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataProducer.md b/docs/Models/Requests/GetMediaMetaDataProducer.md deleted file mode 100644 index 5ede098..0000000 --- a/docs/Models/Requests/GetMediaMetaDataProducer.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetMediaMetaDataProducer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | The unique role identifier. | 109501 | -| `Filter` | *string* | :heavy_check_mark: | The filter string for the role. | actor=109501 | -| `Tag` | *string* | :heavy_check_mark: | The actor's name. | Bob Odenkirk | -| `TagKey` | *string* | :heavy_check_mark: | A key associated with the actor tag. | 5d77683254f42c001f8c3f69 | -| `Role` | *string* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | -| `Thumb` | *string* | :heavy_minus_sign: | URL for the role thumbnail image. | https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataRatings.md b/docs/Models/Requests/GetMediaMetaDataRatings.md deleted file mode 100644 index 17083fa..0000000 --- a/docs/Models/Requests/GetMediaMetaDataRatings.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaMetaDataRatings - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `Image` | *string* | :heavy_check_mark: | The image or reference for the rating. | imdb://image.rating | -| `Value` | *float* | :heavy_check_mark: | The rating value. | 9 | -| `Type` | *string* | :heavy_check_mark: | The type of rating (e.g., audience, critic). | audience | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataRequest.md b/docs/Models/Requests/GetMediaMetaDataRequest.md deleted file mode 100644 index a6f5cae..0000000 --- a/docs/Models/Requests/GetMediaMetaDataRequest.md +++ /dev/null @@ -1,21 +0,0 @@ -# GetMediaMetaDataRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_check_mark: | The id(s) of the library item(s) to return metadata for. Can be a single ID or comma-separated list of IDs. | 21119,21617 | -| `IncludeConcerts` | *bool* | :heavy_minus_sign: | Include concerts data if set to true. | true | -| `IncludeExtras` | *bool* | :heavy_minus_sign: | Include extra content (e.g. bonus features). | true | -| `IncludeOnDeck` | *bool* | :heavy_minus_sign: | Include on-deck items. | true | -| `IncludePopularLeaves` | *bool* | :heavy_minus_sign: | Include popular leaves (episodes/chapters). | true | -| `IncludePreferences` | *bool* | :heavy_minus_sign: | Include preferences information. | true | -| `IncludeReviews` | *bool* | :heavy_minus_sign: | Include reviews for the content. | true | -| `IncludeChapters` | *bool* | :heavy_minus_sign: | Include chapter details. | true | -| `IncludeStations` | *bool* | :heavy_minus_sign: | Include station data. | true | -| `IncludeExternalMedia` | *bool* | :heavy_minus_sign: | Include external media data. | true | -| `AsyncAugmentMetadata` | *bool* | :heavy_minus_sign: | Trigger asynchronous metadata augmentation. | true | -| `AsyncCheckFiles` | *bool* | :heavy_minus_sign: | Trigger asynchronous file checking. | true | -| `AsyncRefreshAnalysis` | *bool* | :heavy_minus_sign: | Trigger asynchronous refresh of analysis. | true | -| `AsyncRefreshLocalMediaAgent` | *bool* | :heavy_minus_sign: | Trigger asynchronous refresh of the local media agent. | true | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataResponse.md b/docs/Models/Requests/GetMediaMetaDataResponse.md deleted file mode 100644 index d82cb91..0000000 --- a/docs/Models/Requests/GetMediaMetaDataResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaMetaDataResponse - - -## 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` | [GetMediaMetaDataResponseBody](../../Models/Requests/GetMediaMetaDataResponseBody.md) | :heavy_minus_sign: | The metadata of the library item. | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataResponseBody.md b/docs/Models/Requests/GetMediaMetaDataResponseBody.md deleted file mode 100644 index 592a06b..0000000 --- a/docs/Models/Requests/GetMediaMetaDataResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaMetaDataResponseBody - -The metadata of the library item. - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetMediaMetaDataMediaContainer](../../Models/Requests/GetMediaMetaDataMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataRole.md b/docs/Models/Requests/GetMediaMetaDataRole.md deleted file mode 100644 index 88d369c..0000000 --- a/docs/Models/Requests/GetMediaMetaDataRole.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetMediaMetaDataRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | The unique identifier for the role.
NOTE: This is different for each Plex server and is not globally unique.
| 126522 | -| `Tag` | *string* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | -| `Role` | *string* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | -| `Filter` | *string* | :heavy_check_mark: | The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. | actor=126522 | -| `TagKey` | *string* | :heavy_check_mark: | A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification.
NOTE: This is globally unique across all Plex Servers.
| 5d77683d85719b001f3a535e | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataSimilar.md b/docs/Models/Requests/GetMediaMetaDataSimilar.md deleted file mode 100644 index debad8b..0000000 --- a/docs/Models/Requests/GetMediaMetaDataSimilar.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaMetaDataSimilar - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | The unique similar item identifier. | 26 | -| `Filter` | *string* | :heavy_check_mark: | The filter string for similar items. | similar=26 | -| `Tag` | *string* | :heavy_check_mark: | The tag or title of the similar content. | Breaking Bad | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataStream.md b/docs/Models/Requests/GetMediaMetaDataStream.md deleted file mode 100644 index d85bd71..0000000 --- a/docs/Models/Requests/GetMediaMetaDataStream.md +++ /dev/null @@ -1,58 +0,0 @@ -# GetMediaMetaDataStream - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | Unique stream identifier. | 1002625 | -| `StreamType` | *long* | :heavy_check_mark: | Stream type:
- VIDEO = 1
- AUDIO = 2
- SUBTITLE = 3
| | -| `Format` | *string* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | -| `Default` | *bool* | :heavy_minus_sign: | Indicates if this stream is default. | true | -| `Codec` | *string* | :heavy_minus_sign: | Codec used by the stream. | hevc | -| `Index` | *int* | :heavy_minus_sign: | Index of the stream. | 0 | -| `Bitrate` | *int* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | -| `Language` | *string* | :heavy_minus_sign: | Language of the stream. | English | -| `LanguageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | -| `LanguageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | -| `HeaderCompression` | *bool* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | -| `DOVIBLCompatID` | *int* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | -| `DOVIBLPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | -| `DOVIELPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | -| `DOVILevel` | *int* | :heavy_minus_sign: | Dolby Vision level. | 6 | -| `DOVIPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | -| `DOVIProfile` | *int* | :heavy_minus_sign: | Dolby Vision profile. | 8 | -| `DOVIRPUPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | -| `DOVIVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | -| `BitDepth` | *int* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | -| `ChromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | -| `ChromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | -| `CodedHeight` | *int* | :heavy_minus_sign: | Coded video height. | 1608 | -| `CodedWidth` | *int* | :heavy_minus_sign: | Coded video width. | 3840 | -| `ClosedCaptions` | *bool* | :heavy_minus_sign: | N/A | true | -| `ColorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | -| `ColorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | -| `ColorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | -| `ColorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | -| `FrameRate` | *float* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | -| `Key` | *string* | :heavy_minus_sign: | Key to access this stream part. | /library/streams/216389 | -| `Height` | *int* | :heavy_minus_sign: | Height of the video stream. | 1602 | -| `Level` | *int* | :heavy_minus_sign: | Video level. | 150 | -| `Original` | *bool* | :heavy_minus_sign: | Indicates if this is the original stream. | true | -| `HasScalingMatrix` | *bool* | :heavy_minus_sign: | N/A | false | -| `Profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | -| `ScanType` | *string* | :heavy_minus_sign: | N/A | progressive | -| `EmbeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | -| `RefFrames` | *int* | :heavy_minus_sign: | Number of reference frames. | 1 | -| `Width` | *int* | :heavy_minus_sign: | Width of the video stream. | 3840 | -| `DisplayTitle` | *string* | :heavy_minus_sign: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `ExtendedDisplayTitle` | *string* | :heavy_minus_sign: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `Selected` | *bool* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | -| `Forced` | *bool* | :heavy_minus_sign: | N/A | true | -| `Channels` | *int* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | -| `AudioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | -| `SamplingRate` | *int* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | -| `CanAutoSync` | *bool* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | -| `HearingImpaired` | *bool* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | -| `Dub` | *bool* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | -| `Title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataType.md b/docs/Models/Requests/GetMediaMetaDataType.md deleted file mode 100644 index 415e437..0000000 --- a/docs/Models/Requests/GetMediaMetaDataType.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetMediaMetaDataType - -The type of media content in the Plex library. This can represent videos, music, or photos. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | movie | -| `TvShow` | show | -| `Season` | season | -| `Episode` | episode | -| `Artist` | artist | -| `Album` | album | -| `Track` | track | -| `PhotoAlbum` | photoalbum | -| `Photo` | photo | -| `Collection` | collection | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataUltraBlurColors.md b/docs/Models/Requests/GetMediaMetaDataUltraBlurColors.md deleted file mode 100644 index f7cb003..0000000 --- a/docs/Models/Requests/GetMediaMetaDataUltraBlurColors.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaMetaDataUltraBlurColors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `TopLeft` | *string* | :heavy_check_mark: | N/A | 11333b | -| `TopRight` | *string* | :heavy_check_mark: | N/A | 0a232d | -| `BottomRight` | *string* | :heavy_check_mark: | N/A | 73958 | -| `BottomLeft` | *string* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataWriter.md b/docs/Models/Requests/GetMediaMetaDataWriter.md deleted file mode 100644 index f125f1f..0000000 --- a/docs/Models/Requests/GetMediaMetaDataWriter.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaMetaDataWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | -| `Tag` | *string* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | -| `Filter` | *string* | :heavy_check_mark: | The filter string used to query this writer. | writer=126522 | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the writer. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | -| `TagKey` | *string* | :heavy_minus_sign: | A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification. | 5d77683d85719b001f3a535e | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaPartRequest.md b/docs/Models/Requests/GetMediaPartRequest.md new file mode 100644 index 0000000..9573632 --- /dev/null +++ b/docs/Models/Requests/GetMediaPartRequest.md @@ -0,0 +1,22 @@ +# GetMediaPartRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PartId` | *long* | :heavy_check_mark: | The part id who's index is to be fetched | | +| `Changestamp` | *long* | :heavy_check_mark: | The changestamp of the part; used for busting potential caches. Provided in the `key` for the part | | +| `Filename` | *string* | :heavy_check_mark: | A generic filename used for a client media stack which relies on the extension in the request. Provided in the `key` for the part | | +| `Download` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether this is a file download | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaPartResponse.md b/docs/Models/Requests/GetMediaPartResponse.md new file mode 100644 index 0000000..66e4273 --- /dev/null +++ b/docs/Models/Requests/GetMediaPartResponse.md @@ -0,0 +1,11 @@ +# GetMediaPartResponse + + +## 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 | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaPostersMediaContainer.md b/docs/Models/Requests/GetMediaPostersMediaContainer.md deleted file mode 100644 index cacc3ac..0000000 --- a/docs/Models/Requests/GetMediaPostersMediaContainer.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaPostersMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `MediaTagVersion` | *long* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `MediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `Metadata` | List<[GetMediaPostersMetadata](../../Models/Requests/GetMediaPostersMetadata.md)> | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaPostersMetadata.md b/docs/Models/Requests/GetMediaPostersMetadata.md deleted file mode 100644 index 1e97579..0000000 --- a/docs/Models/Requests/GetMediaPostersMetadata.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaPostersMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Key` | *string* | :heavy_check_mark: | The URL of the poster. | https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg | -| `Provider` | *string* | :heavy_minus_sign: | The provider of the poster. | tmdb | -| `RatingKey` | *string* | :heavy_check_mark: | The URL of the poster. | https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg | -| `Selected` | *bool* | :heavy_check_mark: | Whether this is the selected poster. | true | -| `Thumb` | *string* | :heavy_check_mark: | The URL of the poster thumbnail. | https://images.plex.tv/photo?height=336&width=225&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FhntBJjqbv4m0Iyniqaztv9xaudI%2Ejpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaPostersRequest.md b/docs/Models/Requests/GetMediaPostersRequest.md deleted file mode 100644 index 29f38cd..0000000 --- a/docs/Models/Requests/GetMediaPostersRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetMediaPostersRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `RatingKey` | *long* | :heavy_check_mark: | the id of the library item to return the posters of. | 16099 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaPostersResponse.md b/docs/Models/Requests/GetMediaPostersResponse.md deleted file mode 100644 index 60ac461..0000000 --- a/docs/Models/Requests/GetMediaPostersResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaPostersResponse - - -## 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` | [GetMediaPostersResponseBody](../../Models/Requests/GetMediaPostersResponseBody.md) | :heavy_minus_sign: | The available posters for the library item. | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaPostersResponseBody.md b/docs/Models/Requests/GetMediaPostersResponseBody.md deleted file mode 100644 index ea3bc3f..0000000 --- a/docs/Models/Requests/GetMediaPostersResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaPostersResponseBody - -The available posters for the library item. - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetMediaPostersMediaContainer](../../Models/Requests/GetMediaPostersMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaProvidersDirectory.md b/docs/Models/Requests/GetMediaProvidersDirectory.md deleted file mode 100644 index 0c4d524..0000000 --- a/docs/Models/Requests/GetMediaProvidersDirectory.md +++ /dev/null @@ -1,21 +0,0 @@ -# GetMediaProvidersDirectory - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | -| `HubKey` | *string* | :heavy_minus_sign: | N/A | -| `Title` | *string* | :heavy_minus_sign: | N/A | -| `Agent` | *string* | :heavy_minus_sign: | N/A | -| `Language` | *string* | :heavy_minus_sign: | N/A | -| `Refreshing` | *bool* | :heavy_minus_sign: | N/A | -| `Scanner` | *string* | :heavy_minus_sign: | N/A | -| `Uuid` | *string* | :heavy_minus_sign: | N/A | -| `Id` | *string* | :heavy_minus_sign: | N/A | -| `Key` | *string* | :heavy_minus_sign: | N/A | -| `Type` | *string* | :heavy_minus_sign: | N/A | -| `Subtype` | *string* | :heavy_minus_sign: | N/A | -| `UpdatedAt` | *long* | :heavy_minus_sign: | N/A | -| `ScannedAt` | *long* | :heavy_minus_sign: | N/A | -| `Pivot` | List<[Pivot](../../Models/Requests/Pivot.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaProvidersMediaContainer.md b/docs/Models/Requests/GetMediaProvidersMediaContainer.md deleted file mode 100644 index c7e175b..0000000 --- a/docs/Models/Requests/GetMediaProvidersMediaContainer.md +++ /dev/null @@ -1,51 +0,0 @@ -# GetMediaProvidersMediaContainer - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| `Size` | *long* | :heavy_minus_sign: | N/A | -| `AllowCameraUpload` | *bool* | :heavy_minus_sign: | N/A | -| `AllowChannelAccess` | *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 | -| `Livetv` | *long* | :heavy_minus_sign: | N/A | -| `MachineIdentifier` | *string* | :heavy_minus_sign: | N/A | -| `MusicAnalysis` | *long* | :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` | *long* | :heavy_minus_sign: | N/A | -| `OwnerFeatures` | *string* | :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` | *long* | :heavy_minus_sign: | N/A | -| `StreamingBrainVersion` | *long* | :heavy_minus_sign: | N/A | -| `Sync` | *bool* | :heavy_minus_sign: | N/A | -| `TranscoderActiveVideoSessions` | *long* | :heavy_minus_sign: | N/A | -| `TranscoderAudio` | *bool* | :heavy_minus_sign: | N/A | -| `TranscoderLyrics` | *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` | *long* | :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 | -| `MediaProvider` | List<[MediaProvider](../../Models/Requests/MediaProvider.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaProvidersRequest.md b/docs/Models/Requests/GetMediaProvidersRequest.md deleted file mode 100644 index 9dea2da..0000000 --- a/docs/Models/Requests/GetMediaProvidersRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetMediaProvidersRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -| `XPlexToken` | *string* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaProvidersResponse.md b/docs/Models/Requests/GetMediaProvidersResponse.md deleted file mode 100644 index 10fd234..0000000 --- a/docs/Models/Requests/GetMediaProvidersResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaProvidersResponse - - -## 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` | [GetMediaProvidersResponseBody](../../Models/Requests/GetMediaProvidersResponseBody.md) | :heavy_minus_sign: | Media providers and their features | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaProvidersResponseBody.md b/docs/Models/Requests/GetMediaProvidersResponseBody.md deleted file mode 100644 index c1de49d..0000000 --- a/docs/Models/Requests/GetMediaProvidersResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaProvidersResponseBody - -Media providers and their features - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetMediaProvidersMediaContainer](../../Models/Requests/GetMediaProvidersMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataChildrenDirectory.md b/docs/Models/Requests/GetMetadataChildrenDirectory.md deleted file mode 100644 index 83a95f2..0000000 --- a/docs/Models/Requests/GetMetadataChildrenDirectory.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMetadataChildrenDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `LeafCount` | *int* | :heavy_minus_sign: | N/A | 16 | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/30072/thumb/1705739923 | -| `ViewedLeafCount` | *int* | :heavy_minus_sign: | N/A | 16 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/30072/allLeaves | -| `Title` | *string* | :heavy_minus_sign: | N/A | All episodes | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataChildrenMediaContainer.md b/docs/Models/Requests/GetMetadataChildrenMediaContainer.md deleted file mode 100644 index c885de0..0000000 --- a/docs/Models/Requests/GetMetadataChildrenMediaContainer.md +++ /dev/null @@ -1,30 +0,0 @@ -# GetMetadataChildrenMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 3 | -| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | true | -| `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/30072/art/1705739923 | -| `Identifier` | *string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `Key` | *string* | :heavy_minus_sign: | N/A | 30072 | -| `LibrarySectionID` | *int* | :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 | -| `MediaTagPrefix` | *string* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `MediaTagVersion` | *int* | :heavy_minus_sign: | N/A | 1701731894 | -| `Nocache` | *bool* | :heavy_minus_sign: | N/A | true | -| `ParentIndex` | *int* | :heavy_minus_sign: | N/A | 1 | -| `ParentTitle` | *string* | :heavy_minus_sign: | N/A | Reacher | -| `ParentYear` | *int* | :heavy_minus_sign: | N/A | 2022 | -| `Summary` | *string* | :heavy_minus_sign: | N/A | When retired Military Police Officer Jack Reacher is arrested for a murder he did not commit, he finds himself in the middle of a deadly conspiracy full of dirty cops, shady businessmen, and scheming politicians. With nothing but his wits, he must figure out what is happening in Margrave, Georgia. | -| `Theme` | *string* | :heavy_minus_sign: | N/A | /library/metadata/30072/theme/1705739923 | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/30072/thumb/1705739923 | -| `Title1` | *string* | :heavy_minus_sign: | N/A | TV Shows | -| `Title2` | *string* | :heavy_minus_sign: | N/A | Reacher | -| `ViewGroup` | *string* | :heavy_minus_sign: | N/A | season | -| `ViewMode` | *int* | :heavy_minus_sign: | N/A | 65593 | -| `Directory` | List<[GetMetadataChildrenDirectory](../../Models/Requests/GetMetadataChildrenDirectory.md)> | :heavy_minus_sign: | N/A | [
{
"leafCount": 16,
"thumb": "/library/metadata/30072/thumb/1705739923",
"viewedLeafCount": 16,
"key": "/library/metadata/30072/allLeaves",
"title": "All episodes"
}
] | -| `Metadata` | List<[GetMetadataChildrenMetadata](../../Models/Requests/GetMetadataChildrenMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataChildrenMetadata.md b/docs/Models/Requests/GetMetadataChildrenMetadata.md deleted file mode 100644 index 2cd0ef3..0000000 --- a/docs/Models/Requests/GetMetadataChildrenMetadata.md +++ /dev/null @@ -1,34 +0,0 @@ -# GetMetadataChildrenMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 66488 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66488/children | -| `ParentRatingKey` | *string* | :heavy_minus_sign: | N/A | 30072 | -| `Guid` | *string* | :heavy_minus_sign: | N/A | plex://season/652aea6549508477c34c6000 | -| `ParentGuid` | *string* | :heavy_minus_sign: | N/A | plex://show/5d9c09190aaccd001f8f42f0 | -| `ParentStudio` | *string* | :heavy_minus_sign: | N/A | Amazon Studios | -| `Type` | *string* | :heavy_minus_sign: | N/A | season | -| `Title` | *string* | :heavy_minus_sign: | N/A | Season 2 | -| `ParentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/30072 | -| `ParentTitle` | *string* | :heavy_minus_sign: | N/A | Reacher | -| `Summary` | *string* | :heavy_minus_sign: | N/A | Based on"Bad Luck and Trouble," when members of Reacher's old military unit start turning up dead, Reacher has just one thing on his mind-revenge. | -| `Index` | *int* | :heavy_minus_sign: | N/A | 2 | -| `ParentIndex` | *int* | :heavy_minus_sign: | N/A | 1 | -| `ViewCount` | *int* | :heavy_minus_sign: | N/A | 11 | -| `LastViewedAt` | *int* | :heavy_minus_sign: | N/A | 1705646565 | -| `ParentYear` | *int* | :heavy_minus_sign: | N/A | 2022 | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66488/thumb/1703065033 | -| `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/30072/art/1705739923 | -| `ParentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/30072/thumb/1705739923 | -| `ParentTheme` | *string* | :heavy_minus_sign: | N/A | /library/metadata/30072/theme/1705739923 | -| `LeafCount` | *int* | :heavy_minus_sign: | N/A | 8 | -| `ViewedLeafCount` | *int* | :heavy_minus_sign: | N/A | 8 | -| `AddedAt` | *int* | :heavy_minus_sign: | N/A | 1702602021 | -| `UpdatedAt` | *int* | :heavy_minus_sign: | N/A | 1703065033 | -| `UserRating` | *int* | :heavy_minus_sign: | N/A | 9 | -| `SkipCount` | *int* | :heavy_minus_sign: | N/A | 1 | -| `LastRatedAt` | *int* | :heavy_minus_sign: | N/A | 1703881224 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataChildrenRequest.md b/docs/Models/Requests/GetMetadataChildrenRequest.md deleted file mode 100644 index 3b95d25..0000000 --- a/docs/Models/Requests/GetMetadataChildrenRequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetMetadataChildrenRequest - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `RatingKey` | *double* | :heavy_check_mark: | the id of the library item to return the children of. | -| `IncludeElements` | *string* | :heavy_minus_sign: | Adds additional elements to the response. Supported types are (Stream)
| \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataChildrenResponse.md b/docs/Models/Requests/GetMetadataChildrenResponse.md deleted file mode 100644 index 8a22479..0000000 --- a/docs/Models/Requests/GetMetadataChildrenResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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: | The children of the library item. | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataChildrenResponseBody.md b/docs/Models/Requests/GetMetadataChildrenResponseBody.md deleted file mode 100644 index e46a5ac..0000000 --- a/docs/Models/Requests/GetMetadataChildrenResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMetadataChildrenResponseBody - -The children of the library item. - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetMetadataChildrenMediaContainer](../../Models/Requests/GetMetadataChildrenMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataHubsRequest.md b/docs/Models/Requests/GetMetadataHubsRequest.md new file mode 100644 index 0000000..166da22 --- /dev/null +++ b/docs/Models/Requests/GetMetadataHubsRequest.md @@ -0,0 +1,21 @@ +# GetMetadataHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `MetadataId` | *long* | :heavy_check_mark: | The metadata ID for the hubs to fetch | | +| `Count` | *long* | :heavy_minus_sign: | Limit results to count items | | +| `OnlyTransient` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataHubsResponse.md b/docs/Models/Requests/GetMetadataHubsResponse.md new file mode 100644 index 0000000..276a33a --- /dev/null +++ b/docs/Models/Requests/GetMetadataHubsResponse.md @@ -0,0 +1,12 @@ +# GetMetadataHubsResponse + + +## 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 | +| `MediaContainerWithHubs` | [MediaContainerWithHubs](../../Models/Components/MediaContainerWithHubs.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataItemRequest.md b/docs/Models/Requests/GetMetadataItemRequest.md new file mode 100644 index 0000000..bd79c0a --- /dev/null +++ b/docs/Models/Requests/GetMetadataItemRequest.md @@ -0,0 +1,27 @@ +# GetMetadataItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | List<*string*> | :heavy_check_mark: | N/A | | +| `AsyncCheckFiles` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Determines if file check should be performed asynchronously. An activity is created to indicate progress. Default is false. | 1 | +| `AsyncRefreshLocalMediaAgent` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Determines if local media agent refresh should be performed asynchronously. An activity is created to indicate progress. Default is false. | 1 | +| `AsyncRefreshAnalysis` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Determines if analysis refresh should be performed asynchronously. An activity is created to indicate progress. Default is false. | 1 | +| `CheckFiles` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Determines if file check should be performed synchronously. Specifying `asyncCheckFiles` will cause this option to be ignored. Default is false. | 1 | +| `SkipRefresh` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Determines if synchronous local media agent and analysis refresh should be skipped. Specifying async versions will cause synchronous versions to be skipped. Default is false. | 1 | +| `CheckFileAvailability` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Determines if file existence check should be performed synchronously. Specifying `checkFiles` will imply this option. Default is false. | 1 | +| `AsyncAugmentMetadata` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Add metadata augmentations. An activity is created to indicate progress. Option will be ignored if specified by non-admin or if multiple metadata items are requested. Default is false. | 1 | +| `AugmentCount` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Number of augmentations to add. Requires `asyncAugmentMetadata` to be specified. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMetadataItemResponse.md b/docs/Models/Requests/GetMetadataItemResponse.md new file mode 100644 index 0000000..4721e97 --- /dev/null +++ b/docs/Models/Requests/GetMetadataItemResponse.md @@ -0,0 +1,12 @@ +# GetMetadataItemResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetMyPlexAccountResponse.md b/docs/Models/Requests/GetMyPlexAccountResponse.md deleted file mode 100644 index 100565f..0000000 --- a/docs/Models/Requests/GetMyPlexAccountResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 | -| `Object` | [GetMyPlexAccountResponseBody](../../Models/Requests/GetMyPlexAccountResponseBody.md) | :heavy_minus_sign: | MyPlex Account | \ No newline at end of file diff --git a/docs/Models/Requests/GetMyPlexAccountResponseBody.md b/docs/Models/Requests/GetMyPlexAccountResponseBody.md deleted file mode 100644 index f10d128..0000000 --- a/docs/Models/Requests/GetMyPlexAccountResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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/GetNotificationsRequest.md b/docs/Models/Requests/GetNotificationsRequest.md new file mode 100644 index 0000000..994a8dc --- /dev/null +++ b/docs/Models/Requests/GetNotificationsRequest.md @@ -0,0 +1,19 @@ +# GetNotificationsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Filter` | List<*string*> | :heavy_minus_sign: | By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example:

- `filters=-log`: All event types except logs (the default).
- `filters=foo,bar`: Only the foo and bar event types.
- `filters=`: All events types.
- `filters=-foo,bar`: All event types except foo and bar.
| | \ No newline at end of file diff --git a/docs/Models/Requests/GetNotificationsResponse.md b/docs/Models/Requests/GetNotificationsResponse.md new file mode 100644 index 0000000..15b1854 --- /dev/null +++ b/docs/Models/Requests/GetNotificationsResponse.md @@ -0,0 +1,11 @@ +# GetNotificationsResponse + + +## 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 | +| `Bytes` | *byte[]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetPartIndexRequest.md b/docs/Models/Requests/GetPartIndexRequest.md new file mode 100644 index 0000000..a05317a --- /dev/null +++ b/docs/Models/Requests/GetPartIndexRequest.md @@ -0,0 +1,21 @@ +# GetPartIndexRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PartId` | *long* | :heavy_check_mark: | The part id who's index is to be fetched | | +| `Index` | [Index](../../Models/Requests/Index.md) | :heavy_check_mark: | The type of index to grab. | | +| `Interval` | *long* | :heavy_minus_sign: | The interval between images to return in ms. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPartIndexResponse.md b/docs/Models/Requests/GetPartIndexResponse.md new file mode 100644 index 0000000..2ff9f09 --- /dev/null +++ b/docs/Models/Requests/GetPartIndexResponse.md @@ -0,0 +1,11 @@ +# GetPartIndexResponse + + +## 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 | +| `Bytes` | *byte[]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetPersonMediaContainer.md b/docs/Models/Requests/GetPersonMediaContainer.md new file mode 100644 index 0000000..ea18f19 --- /dev/null +++ b/docs/Models/Requests/GetPersonMediaContainer.md @@ -0,0 +1,17 @@ +# GetPersonMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Directory` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPersonRequest.md b/docs/Models/Requests/GetPersonRequest.md new file mode 100644 index 0000000..d4793e7 --- /dev/null +++ b/docs/Models/Requests/GetPersonRequest.md @@ -0,0 +1,19 @@ +# GetPersonRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PersonId` | *string* | :heavy_check_mark: | Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPersonResponse.md b/docs/Models/Requests/GetPersonResponse.md new file mode 100644 index 0000000..183f498 --- /dev/null +++ b/docs/Models/Requests/GetPersonResponse.md @@ -0,0 +1,11 @@ +# GetPersonResponse + + +## 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` | [GetPersonResponseBody](../../Models/Requests/GetPersonResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetPersonResponseBody.md b/docs/Models/Requests/GetPersonResponseBody.md new file mode 100644 index 0000000..a1fc564 --- /dev/null +++ b/docs/Models/Requests/GetPersonResponseBody.md @@ -0,0 +1,10 @@ +# GetPersonResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `MediaContainer` | [GetPersonMediaContainer](../../Models/Requests/GetPersonMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPinAuthPinContainer.md b/docs/Models/Requests/GetPinAuthPinContainer.md deleted file mode 100644 index cd699b5..0000000 --- a/docs/Models/Requests/GetPinAuthPinContainer.md +++ /dev/null @@ -1,21 +0,0 @@ -# GetPinAuthPinContainer - -Requests a new pin id used in the authentication flow - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | N/A | 308667304 | -| `Code` | *string* | :heavy_check_mark: | N/A | 7RQZ | -| `Product` | *string* | :heavy_check_mark: | N/A | Tautulli | -| `Trusted` | *bool* | :heavy_minus_sign: | N/A | | -| `Qr` | *string* | :heavy_check_mark: | N/A | https://plex.tv/api/v2/pins/qr/7RQZ | -| `ClientIdentifier` | *string* | :heavy_check_mark: | The X-Client-Identifier used in the request | Tautulli | -| `Location` | [GeoData](../../Models/Requests/GeoData.md) | :heavy_check_mark: | Geo location data | {
"code": "VI",
"continent_code": "NA",
"country": "United States Virgin Islands",
"city": "Amsterdam",
"european_union_member": true,
"time_zone": "America/St_Thomas",
"postal_code": 802,
"in_privacy_restricted_country": true,
"in_privacy_restricted_region": true,
"subdivisions": "Saint Thomas",
"coordinates": "18.3381, -64.8941"
} | -| `ExpiresIn` | *long* | :heavy_minus_sign: | The number of seconds this pin expires, by default 900 seconds | 876 | -| `CreatedAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_check_mark: | N/A | 2024-07-16T17:03:05Z | -| `ExpiresAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_check_mark: | N/A | 2024-07-16T17:18:05Z | -| `AuthToken` | *string* | :heavy_minus_sign: | N/A | gcgzw5rz2xovp84b4vha3a40 | -| `NewRegistration` | *object* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPinRequest.md b/docs/Models/Requests/GetPinRequest.md deleted file mode 100644 index 32fb94d..0000000 --- a/docs/Models/Requests/GetPinRequest.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetPinRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Strong` | *bool* | :heavy_minus_sign: | Determines the kind of code returned by the API call
Strong codes are used for Pin authentication flows
Non-Strong codes are used for `Plex.tv/link`
| | -| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `ClientName` | *string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku | -| `DeviceNickname` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `ClientVersion` | *string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 | -| `Platform` | *string* | :heavy_minus_sign: | The platform of the client application. | Roku | \ No newline at end of file diff --git a/docs/Models/Requests/GetPinResponse.md b/docs/Models/Requests/GetPinResponse.md deleted file mode 100644 index a40e0e7..0000000 --- a/docs/Models/Requests/GetPinResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPinResponse - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `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 | | -| `AuthPinContainer` | [GetPinAuthPinContainer](../../Models/Requests/GetPinAuthPinContainer.md) | :heavy_minus_sign: | Requests a new pin id used in the authentication flow | {
"id": 308667304,
"code": "7RQZ",
"product": "0",
"trusted": false,
"qr": "https://plex.tv/api/v2/pins/qr/7RQZ",
"clientIdentifier": "string",
"location": {
"code": "VI",
"continent_code": "NA",
"country": "United States Virgin Islands",
"city": "Amsterdam",
"european_union_member": true,
"time_zone": "America/St_Thomas",
"postal_code": 802,
"in_privacy_restricted_country": true,
"in_privacy_restricted_region": true,
"subdivisions": "Saint Thomas",
"coordinates": "18.3381, -64.8941"
},
"expiresIn": 876,
"createdAt": "2024-07-16T17:03:05Z",
"expiresAt": "2024-07-16T17:18:05Z",
"authToken": null,
"newRegistration": null
} | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlayQueueRequest.md b/docs/Models/Requests/GetPlayQueueRequest.md new file mode 100644 index 0000000..e89bf12 --- /dev/null +++ b/docs/Models/Requests/GetPlayQueueRequest.md @@ -0,0 +1,24 @@ +# GetPlayQueueRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlayQueueId` | *long* | :heavy_check_mark: | The ID of the play queue. | | +| `Own` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | If the server should transfer ownership to the requesting client (used in remote control scenarios). | 1 | +| `Center` | *string* | :heavy_minus_sign: | The play queue item ID for the center of the window - this doesn't change the current selected item. | | +| `Window` | *long* | :heavy_minus_sign: | How many items on each side of the center of the window | | +| `IncludeBefore` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether to include the items before the center (if 0, center is not included either), defaults to 1. | 1 | +| `IncludeAfter` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether to include the items after the center (if 0, center is not included either), defaults to 1. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlayQueueResponse.md b/docs/Models/Requests/GetPlayQueueResponse.md new file mode 100644 index 0000000..24f0863 --- /dev/null +++ b/docs/Models/Requests/GetPlayQueueResponse.md @@ -0,0 +1,11 @@ +# GetPlayQueueResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsCountry.md b/docs/Models/Requests/GetPlaylistContentsCountry.md deleted file mode 100644 index 13748e4..0000000 --- a/docs/Models/Requests/GetPlaylistContentsCountry.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetPlaylistContentsCountry - - -## 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/GetPlaylistContentsDirector.md b/docs/Models/Requests/GetPlaylistContentsDirector.md deleted file mode 100644 index 47019a5..0000000 --- a/docs/Models/Requests/GetPlaylistContentsDirector.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetPlaylistContentsDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_minus_sign: | N/A | Joss Whedon | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsGenre.md b/docs/Models/Requests/GetPlaylistContentsGenre.md deleted file mode 100644 index 03d45cf..0000000 --- a/docs/Models/Requests/GetPlaylistContentsGenre.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetPlaylistContentsGenre - - -## 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/GetPlaylistContentsMedia.md b/docs/Models/Requests/GetPlaylistContentsMedia.md deleted file mode 100644 index 5ddcad3..0000000 --- a/docs/Models/Requests/GetPlaylistContentsMedia.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetPlaylistContentsMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_minus_sign: | N/A | 15 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 141416 | -| `Bitrate` | *int* | :heavy_minus_sign: | N/A | 2273 | -| `Width` | *int* | :heavy_minus_sign: | N/A | 1920 | -| `Height` | *int* | :heavy_minus_sign: | N/A | 814 | -| `AspectRatio` | *double* | :heavy_minus_sign: | N/A | 2.35 | -| `AudioChannels` | *int* | :heavy_minus_sign: | N/A | 2 | -| `AudioCodec` | *string* | :heavy_minus_sign: | N/A | aac | -| `VideoCodec` | *string* | :heavy_minus_sign: | N/A | h264 | -| `VideoResolution` | *string* | :heavy_minus_sign: | N/A | 1080 | -| `Container` | *string* | :heavy_minus_sign: | N/A | mp4 | -| `VideoFrameRate` | *string* | :heavy_minus_sign: | N/A | 24p | -| `OptimizedForStreaming` | *int* | :heavy_minus_sign: | N/A | 0 | -| `AudioProfile` | *string* | :heavy_minus_sign: | N/A | lc | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | high | -| `Part` | List<[GetPlaylistContentsPart](../../Models/Requests/GetPlaylistContentsPart.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsMediaContainer.md b/docs/Models/Requests/GetPlaylistContentsMediaContainer.md deleted file mode 100644 index d0a3adf..0000000 --- a/docs/Models/Requests/GetPlaylistContentsMediaContainer.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetPlaylistContentsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 2 | -| `Composite` | *string* | :heavy_minus_sign: | N/A | /playlists/95/composite/1705717521 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 282 | -| `LeafCount` | *int* | :heavy_minus_sign: | N/A | 2 | -| `PlaylistType` | *string* | :heavy_minus_sign: | N/A | video | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 95 | -| `Smart` | *bool* | :heavy_minus_sign: | N/A | true | -| `Title` | *string* | :heavy_minus_sign: | N/A | Smart Movie Playlist | -| `Metadata` | List<[GetPlaylistContentsMetadata](../../Models/Requests/GetPlaylistContentsMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsMetadata.md b/docs/Models/Requests/GetPlaylistContentsMetadata.md deleted file mode 100644 index dfa5dc4..0000000 --- a/docs/Models/Requests/GetPlaylistContentsMetadata.md +++ /dev/null @@ -1,39 +0,0 @@ -# GetPlaylistContentsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 17 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/17 | -| `Guid` | *string* | :heavy_minus_sign: | N/A | plex://movie/5d77683f6f4521001ea9dc53 | -| `Studio` | *string* | :heavy_minus_sign: | N/A | Universal Pictures | -| `Type` | *string* | :heavy_minus_sign: | N/A | movie | -| `Title` | *string* | :heavy_minus_sign: | N/A | Serenity | -| `TitleSort` | *string* | :heavy_minus_sign: | N/A | Amazing Spider-Man 2 | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | N/A | Movies | -| `LibrarySectionID` | *int* | :heavy_minus_sign: | N/A | 1 | -| `LibrarySectionKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/1 | -| `ContentRating` | *string* | :heavy_minus_sign: | N/A | PG-13 | -| `Summary` | *string* | :heavy_minus_sign: | N/A | Serenity continues the story of the TV series it was based upon ("Firefly"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job. | -| `Rating` | *double* | :heavy_minus_sign: | N/A | 8.2 | -| `AudienceRating` | *double* | :heavy_minus_sign: | N/A | 9.1 | -| `Year` | *int* | :heavy_minus_sign: | N/A | 2005 | -| `Tagline` | *string* | :heavy_minus_sign: | N/A | They aim to misbehave. | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/17/thumb/1705637165 | -| `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/17/art/1705637165 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 141416 | -| `OriginallyAvailableAt` | [LocalDate](https://nodatime.org/3.1.x/api/NodaTime.LocalDate.html) | :heavy_minus_sign: | N/A | 2005-09-29 00:00:00 +0000 UTC | -| `AddedAt` | *int* | :heavy_minus_sign: | N/A | 1705637164 | -| `UpdatedAt` | *int* | :heavy_minus_sign: | N/A | 1705637165 | -| `AudienceRatingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | -| `HasPremiumExtras` | *string* | :heavy_minus_sign: | N/A | 1 | -| `HasPremiumPrimaryExtra` | *string* | :heavy_minus_sign: | N/A | 1 | -| `RatingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.ripe | -| `Media` | List<[GetPlaylistContentsMedia](../../Models/Requests/GetPlaylistContentsMedia.md)> | :heavy_minus_sign: | N/A | | -| `Genre` | List<[GetPlaylistContentsGenre](../../Models/Requests/GetPlaylistContentsGenre.md)> | :heavy_minus_sign: | N/A | | -| `Country` | List<[GetPlaylistContentsCountry](../../Models/Requests/GetPlaylistContentsCountry.md)> | :heavy_minus_sign: | N/A | | -| `Director` | List<[GetPlaylistContentsDirector](../../Models/Requests/GetPlaylistContentsDirector.md)> | :heavy_minus_sign: | N/A | | -| `Writer` | List<[GetPlaylistContentsWriter](../../Models/Requests/GetPlaylistContentsWriter.md)> | :heavy_minus_sign: | N/A | | -| `Role` | List<[GetPlaylistContentsRole](../../Models/Requests/GetPlaylistContentsRole.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsPart.md b/docs/Models/Requests/GetPlaylistContentsPart.md deleted file mode 100644 index 3f5cef4..0000000 --- a/docs/Models/Requests/GetPlaylistContentsPart.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetPlaylistContentsPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | -| `Id` | *int* | :heavy_minus_sign: | N/A | 15 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/parts/15/1705637151/file.mp4 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 141416 | -| `File` | *string* | :heavy_minus_sign: | N/A | /movies/Serenity (2005)/Serenity (2005).mp4 | -| `Size` | *int* | :heavy_minus_sign: | N/A | 40271948 | -| `AudioProfile` | *string* | :heavy_minus_sign: | N/A | lc | -| `Container` | *string* | :heavy_minus_sign: | N/A | mp4 | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `OptimizedForStreaming` | *bool* | :heavy_minus_sign: | N/A | false | -| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | high | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsQueryParamType.md b/docs/Models/Requests/GetPlaylistContentsQueryParamType.md deleted file mode 100644 index fc52d53..0000000 --- a/docs/Models/Requests/GetPlaylistContentsQueryParamType.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetPlaylistContentsQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | 1 | -| `TvShow` | 2 | -| `Season` | 3 | -| `Episode` | 4 | -| `Artist` | 5 | -| `Album` | 6 | -| `Track` | 7 | -| `PhotoAlbum` | 8 | -| `Photo` | 9 | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsRequest.md b/docs/Models/Requests/GetPlaylistContentsRequest.md deleted file mode 100644 index 8d3bc19..0000000 --- a/docs/Models/Requests/GetPlaylistContentsRequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetPlaylistContentsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | | -| `Type` | [GetPlaylistContentsQueryParamType](../../Models/Requests/GetPlaylistContentsQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsResponse.md b/docs/Models/Requests/GetPlaylistContentsResponse.md deleted file mode 100644 index 9719773..0000000 --- a/docs/Models/Requests/GetPlaylistContentsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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: | The playlist contents | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsResponseBody.md b/docs/Models/Requests/GetPlaylistContentsResponseBody.md deleted file mode 100644 index 731ca64..0000000 --- a/docs/Models/Requests/GetPlaylistContentsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistContentsResponseBody - -The playlist contents - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetPlaylistContentsMediaContainer](../../Models/Requests/GetPlaylistContentsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsRole.md b/docs/Models/Requests/GetPlaylistContentsRole.md deleted file mode 100644 index b900778..0000000 --- a/docs/Models/Requests/GetPlaylistContentsRole.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetPlaylistContentsRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_minus_sign: | N/A | Gina Torres | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistContentsWriter.md b/docs/Models/Requests/GetPlaylistContentsWriter.md deleted file mode 100644 index 6907a5c..0000000 --- a/docs/Models/Requests/GetPlaylistContentsWriter.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetPlaylistContentsWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_minus_sign: | N/A | Joss Whedon | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorDevice.md b/docs/Models/Requests/GetPlaylistGeneratorDevice.md new file mode 100644 index 0000000..0ce8682 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorDevice.md @@ -0,0 +1,8 @@ +# GetPlaylistGeneratorDevice + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `Profile` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorItemsMediaContainer.md b/docs/Models/Requests/GetPlaylistGeneratorItemsMediaContainer.md new file mode 100644 index 0000000..4f6b57d --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorItemsMediaContainer.md @@ -0,0 +1,17 @@ +# GetPlaylistGeneratorItemsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Metadata` | [GetPlaylistGeneratorItemsMetadata](../../Models/Requests/GetPlaylistGeneratorItemsMetadata.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorItemsMetadata.md b/docs/Models/Requests/GetPlaylistGeneratorItemsMetadata.md new file mode 100644 index 0000000..2a8ba22 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorItemsMetadata.md @@ -0,0 +1,84 @@ +# GetPlaylistGeneratorItemsMetadata + +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Title` | *object* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `Type` | *object* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `AbsoluteIndex` | *long* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `AddedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `Art` | *object* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `AudienceRating` | *double* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `AudienceRatingImage` | *object* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `Autotag` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Banner` | *object* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `ChapterSource` | *object* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `Composite` | *object* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `ContentRating` | *object* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `Country` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Director` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Duration` | *long* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `Filter` | List<[Filter](../../Models/Components/Filter.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Genre` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `GrandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | +| `GrandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | +| `GrandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | +| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `GrandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | +| `GrandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `GrandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | +| `Guid` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Hero` | *object* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `Image` | List<[Image](../../Models/Components/Image.md)> | :heavy_minus_sign: | N/A | +| `Index` | *long* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `Key` | *object* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `LastViewedAt` | *long* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `LeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `Media` | List<[Media](../../Models/Components/Media.md)> | :heavy_minus_sign: | N/A | +| `OriginallyAvailableAt` | *object* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `OriginalTitle` | *object* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `ParentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | +| `ParentIndex` | *long* | :heavy_minus_sign: | The `index` of the parent | +| `ParentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | +| `ParentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `ParentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | +| `ParentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | +| `PrimaryExtraKey` | *object* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `Prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `Rating` | *double* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `RatingArray` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `RatingCount` | *long* | :heavy_minus_sign: | Number of ratings under this metadata | +| `RatingImage` | *object* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `RatingKey` | *object* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `Role` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Search` | *bool* | :heavy_minus_sign: | Indicates this is a search directory | +| `Secondary` | *bool* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `SkipChildren` | *bool* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `SkipParent` | *bool* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `Sort` | List<[Sort](../../Models/Components/Sort.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Studio` | *object* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `Subtype` | *object* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `Summary` | *object* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `Tagline` | *object* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `Theme` | *object* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `Thumb` | *object* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `TitleSort` | *object* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `UpdatedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `UserRating` | *double* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `ViewCount` | *long* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `ViewedLeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `ViewOffset` | *long* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `Writer` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Year` | *long* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `ProcessingState` | [ProcessingState](../../Models/Requests/ProcessingState.md) | :heavy_minus_sign: | The state of processing if this generator is part of an optimizer playlist | +| `ProcessingStateContext` | [ProcessingStateContext](../../Models/Requests/ProcessingStateContext.md) | :heavy_minus_sign: | The error which could have occurred (or `good`) | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorItemsRequest.md b/docs/Models/Requests/GetPlaylistGeneratorItemsRequest.md new file mode 100644 index 0000000..e951db7 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorItemsRequest.md @@ -0,0 +1,20 @@ +# GetPlaylistGeneratorItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistId` | *long* | :heavy_check_mark: | The ID of the playlist | | +| `GeneratorId` | *long* | :heavy_check_mark: | The generator item ID to delete. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorItemsResponse.md b/docs/Models/Requests/GetPlaylistGeneratorItemsResponse.md new file mode 100644 index 0000000..ffb0ee8 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorItemsResponse.md @@ -0,0 +1,11 @@ +# GetPlaylistGeneratorItemsResponse + + +## 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` | [GetPlaylistGeneratorItemsResponseBody](../../Models/Requests/GetPlaylistGeneratorItemsResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorItemsResponseBody.md b/docs/Models/Requests/GetPlaylistGeneratorItemsResponseBody.md new file mode 100644 index 0000000..de47076 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorItemsResponseBody.md @@ -0,0 +1,10 @@ +# GetPlaylistGeneratorItemsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetPlaylistGeneratorItemsMediaContainer](../../Models/Requests/GetPlaylistGeneratorItemsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorLocation.md b/docs/Models/Requests/GetPlaylistGeneratorLocation.md new file mode 100644 index 0000000..89308b5 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorLocation.md @@ -0,0 +1,9 @@ +# GetPlaylistGeneratorLocation + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `LibrarySectionID` | *long* | :heavy_minus_sign: | N/A | +| `Uri` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorMediaContainer.md b/docs/Models/Requests/GetPlaylistGeneratorMediaContainer.md new file mode 100644 index 0000000..7277539 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorMediaContainer.md @@ -0,0 +1,17 @@ +# GetPlaylistGeneratorMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Item` | List<[Item](../../Models/Requests/Item.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorRequest.md b/docs/Models/Requests/GetPlaylistGeneratorRequest.md new file mode 100644 index 0000000..0d1c63e --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorRequest.md @@ -0,0 +1,20 @@ +# GetPlaylistGeneratorRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistId` | *long* | :heavy_check_mark: | The ID of the playlist | | +| `GeneratorId` | *long* | :heavy_check_mark: | The generator item ID to delete. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorResponse.md b/docs/Models/Requests/GetPlaylistGeneratorResponse.md new file mode 100644 index 0000000..737a8b4 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorResponse.md @@ -0,0 +1,11 @@ +# GetPlaylistGeneratorResponse + + +## 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` | [GetPlaylistGeneratorResponseBody](../../Models/Requests/GetPlaylistGeneratorResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorResponseBody.md b/docs/Models/Requests/GetPlaylistGeneratorResponseBody.md new file mode 100644 index 0000000..075ebbe --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorResponseBody.md @@ -0,0 +1,10 @@ +# GetPlaylistGeneratorResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetPlaylistGeneratorMediaContainer](../../Models/Requests/GetPlaylistGeneratorMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorScope.md b/docs/Models/Requests/GetPlaylistGeneratorScope.md new file mode 100644 index 0000000..8709eaa --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorScope.md @@ -0,0 +1,9 @@ +# GetPlaylistGeneratorScope + + +## Values + +| Name | Value | +| ------- | ------- | +| `All` | all | +| `Count` | count | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorState.md b/docs/Models/Requests/GetPlaylistGeneratorState.md new file mode 100644 index 0000000..ea52020 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorState.md @@ -0,0 +1,10 @@ +# GetPlaylistGeneratorState + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `Pending` | pending | +| `Complete` | complete | +| `Failed` | failed | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorStatus.md b/docs/Models/Requests/GetPlaylistGeneratorStatus.md new file mode 100644 index 0000000..8bee7c9 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorStatus.md @@ -0,0 +1,12 @@ +# GetPlaylistGeneratorStatus + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `ItemsCompleteCount` | *long* | :heavy_minus_sign: | N/A | +| `ItemsCount` | *long* | :heavy_minus_sign: | N/A | +| `ItemsSuccessfulCount` | *long* | :heavy_minus_sign: | N/A | +| `State` | [GetPlaylistGeneratorState](../../Models/Requests/GetPlaylistGeneratorState.md) | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorSubtitles.md b/docs/Models/Requests/GetPlaylistGeneratorSubtitles.md new file mode 100644 index 0000000..bd1777f --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorSubtitles.md @@ -0,0 +1,13 @@ +# GetPlaylistGeneratorSubtitles + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Auto` | auto | +| `Burn` | burn | +| `None` | none | +| `Sidecar` | sidecar | +| `Embedded` | embedded | +| `Segmented` | segmented | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorType.md b/docs/Models/Requests/GetPlaylistGeneratorType.md new file mode 100644 index 0000000..6cb5150 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorType.md @@ -0,0 +1,11 @@ +# GetPlaylistGeneratorType + +The type of this generator + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `Minus1` | -1 | +| `FortyTwo` | 42 | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorsMediaContainer.md b/docs/Models/Requests/GetPlaylistGeneratorsMediaContainer.md new file mode 100644 index 0000000..ee9da6a --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorsMediaContainer.md @@ -0,0 +1,17 @@ +# GetPlaylistGeneratorsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `PlayQueueGenerator` | List<[PlayQueueGenerator](../../Models/Requests/PlayQueueGenerator.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorsRequest.md b/docs/Models/Requests/GetPlaylistGeneratorsRequest.md new file mode 100644 index 0000000..e54ad20 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorsRequest.md @@ -0,0 +1,19 @@ +# GetPlaylistGeneratorsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistId` | *long* | :heavy_check_mark: | The ID of the playlist | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorsResponse.md b/docs/Models/Requests/GetPlaylistGeneratorsResponse.md new file mode 100644 index 0000000..c346c62 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorsResponse.md @@ -0,0 +1,11 @@ +# GetPlaylistGeneratorsResponse + + +## 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` | [GetPlaylistGeneratorsResponseBody](../../Models/Requests/GetPlaylistGeneratorsResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorsResponseBody.md b/docs/Models/Requests/GetPlaylistGeneratorsResponseBody.md new file mode 100644 index 0000000..63b2644 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorsResponseBody.md @@ -0,0 +1,10 @@ +# GetPlaylistGeneratorsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetPlaylistGeneratorsMediaContainer](../../Models/Requests/GetPlaylistGeneratorsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistGeneratorsType.md b/docs/Models/Requests/GetPlaylistGeneratorsType.md new file mode 100644 index 0000000..cdf34dd --- /dev/null +++ b/docs/Models/Requests/GetPlaylistGeneratorsType.md @@ -0,0 +1,15 @@ +# GetPlaylistGeneratorsType + +The type of playlist generator. + + - -1: A smart playlist generator + - 42: A optimized version generator + + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `Minus1` | -1 | +| `FortyTwo` | 42 | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistItemsRequest.md b/docs/Models/Requests/GetPlaylistItemsRequest.md new file mode 100644 index 0000000..ee20eb0 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistItemsRequest.md @@ -0,0 +1,20 @@ +# GetPlaylistItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistId` | *long* | :heavy_check_mark: | The ID of the playlist | | +| `Type` | List<*long*> | :heavy_minus_sign: | The metadata types of the item to return. Values past the first are only used in fetching items from the background processing playlist. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistItemsResponse.md b/docs/Models/Requests/GetPlaylistItemsResponse.md new file mode 100644 index 0000000..a1ff502 --- /dev/null +++ b/docs/Models/Requests/GetPlaylistItemsResponse.md @@ -0,0 +1,12 @@ +# GetPlaylistItemsResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistMediaContainer.md b/docs/Models/Requests/GetPlaylistMediaContainer.md deleted file mode 100644 index 3248da8..0000000 --- a/docs/Models/Requests/GetPlaylistMediaContainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetPlaylistMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 1 | -| `Metadata` | List<[GetPlaylistMetadata](../../Models/Requests/GetPlaylistMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistMetadata.md b/docs/Models/Requests/GetPlaylistMetadata.md deleted file mode 100644 index a27e24c..0000000 --- a/docs/Models/Requests/GetPlaylistMetadata.md +++ /dev/null @@ -1,22 +0,0 @@ -# GetPlaylistMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| `Content` | *string* | :heavy_minus_sign: | N/A | library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1 | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 95 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /playlists/95/items | -| `Guid` | *string* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91 | -| `Type` | *string* | :heavy_minus_sign: | N/A | playlist | -| `Title` | *string* | :heavy_minus_sign: | N/A | Smart Movie Playlist | -| `Summary` | *string* | :heavy_minus_sign: | N/A | | -| `Smart` | *bool* | :heavy_minus_sign: | N/A | true | -| `PlaylistType` | *string* | :heavy_minus_sign: | N/A | video | -| `Composite` | *string* | :heavy_minus_sign: | N/A | /playlists/95/composite/1705717387 | -| `Icon` | *string* | :heavy_minus_sign: | N/A | playlist://image.smart | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 282000 | -| `LeafCount` | *int* | :heavy_minus_sign: | N/A | 2 | -| `AddedAt` | *int* | :heavy_minus_sign: | N/A | 1705716493 | -| `UpdatedAt` | *int* | :heavy_minus_sign: | N/A | 1705717387 | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistRequest.md b/docs/Models/Requests/GetPlaylistRequest.md index 9fd2ac4..1efd868 100644 --- a/docs/Models/Requests/GetPlaylistRequest.md +++ b/docs/Models/Requests/GetPlaylistRequest.md @@ -3,6 +3,17 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------- | ---------------------- | ---------------------- | ---------------------- | -| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistId` | *long* | :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 index 68a730a..af32d2d 100644 --- a/docs/Models/Requests/GetPlaylistResponse.md +++ b/docs/Models/Requests/GetPlaylistResponse.md @@ -8,4 +8,4 @@ | `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: | The playlist | \ No newline at end of file +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistResponseBody.md b/docs/Models/Requests/GetPlaylistResponseBody.md deleted file mode 100644 index bf970b4..0000000 --- a/docs/Models/Requests/GetPlaylistResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistResponseBody - -The playlist - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| `MediaContainer` | [GetPlaylistMediaContainer](../../Models/Requests/GetPlaylistMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistsMediaContainer.md b/docs/Models/Requests/GetPlaylistsMediaContainer.md deleted file mode 100644 index c1bd4ae..0000000 --- a/docs/Models/Requests/GetPlaylistsMediaContainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetPlaylistsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 4 | -| `Metadata` | List<[GetPlaylistsMetadata](../../Models/Requests/GetPlaylistsMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistsMetadata.md b/docs/Models/Requests/GetPlaylistsMetadata.md deleted file mode 100644 index 4bb4dc5..0000000 --- a/docs/Models/Requests/GetPlaylistsMetadata.md +++ /dev/null @@ -1,23 +0,0 @@ -# GetPlaylistsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 92 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /playlists/92/items | -| `Guid` | *string* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://7ca5aaef-58e8-4828-9e21-c009c97f2903 | -| `Type` | *string* | :heavy_minus_sign: | N/A | playlist | -| `Title` | *string* | :heavy_minus_sign: | N/A | Static Playlist | -| `Summary` | *string* | :heavy_minus_sign: | N/A | A Great Playlist | -| `Smart` | *bool* | :heavy_minus_sign: | N/A | false | -| `PlaylistType` | *string* | :heavy_minus_sign: | N/A | video | -| `Composite` | *string* | :heavy_minus_sign: | N/A | /playlists/92/composite/1705716440 | -| `Icon` | *string* | :heavy_minus_sign: | N/A | playlist://image.smart | -| `ViewCount` | *int* | :heavy_minus_sign: | N/A | 1 | -| `LastViewedAt` | *int* | :heavy_minus_sign: | N/A | 1705716298 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 7328000 | -| `LeafCount` | *int* | :heavy_minus_sign: | N/A | 32 | -| `AddedAt` | *int* | :heavy_minus_sign: | N/A | 1705716298 | -| `UpdatedAt` | *int* | :heavy_minus_sign: | N/A | 1705716440 | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistsRequest.md b/docs/Models/Requests/GetPlaylistsRequest.md deleted file mode 100644 index 0053cfb..0000000 --- a/docs/Models/Requests/GetPlaylistsRequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# 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 deleted file mode 100644 index 9899b6b..0000000 --- a/docs/Models/Requests/GetPlaylistsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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: | returns all playlists | \ No newline at end of file diff --git a/docs/Models/Requests/GetPlaylistsResponseBody.md b/docs/Models/Requests/GetPlaylistsResponseBody.md deleted file mode 100644 index 8bf4ecf..0000000 --- a/docs/Models/Requests/GetPlaylistsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistsResponseBody - -returns all playlists - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `MediaContainer` | [GetPlaylistsMediaContainer](../../Models/Requests/GetPlaylistsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPostplayHubsRequest.md b/docs/Models/Requests/GetPostplayHubsRequest.md new file mode 100644 index 0000000..a599b4d --- /dev/null +++ b/docs/Models/Requests/GetPostplayHubsRequest.md @@ -0,0 +1,21 @@ +# GetPostplayHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `MetadataId` | *long* | :heavy_check_mark: | The metadata ID for the hubs to fetch | | +| `Count` | *long* | :heavy_minus_sign: | Limit results to count items | | +| `OnlyTransient` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetPostplayHubsResponse.md b/docs/Models/Requests/GetPostplayHubsResponse.md new file mode 100644 index 0000000..48dedda --- /dev/null +++ b/docs/Models/Requests/GetPostplayHubsResponse.md @@ -0,0 +1,12 @@ +# GetPostplayHubsResponse + + +## 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 | +| `MediaContainerWithHubs` | [MediaContainerWithHubs](../../Models/Components/MediaContainerWithHubs.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPreferenceRequest.md b/docs/Models/Requests/GetPreferenceRequest.md new file mode 100644 index 0000000..89ed99b --- /dev/null +++ b/docs/Models/Requests/GetPreferenceRequest.md @@ -0,0 +1,19 @@ +# GetPreferenceRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Id` | *string* | :heavy_minus_sign: | The preference to fetch | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPreferenceResponse.md b/docs/Models/Requests/GetPreferenceResponse.md new file mode 100644 index 0000000..3f38c55 --- /dev/null +++ b/docs/Models/Requests/GetPreferenceResponse.md @@ -0,0 +1,11 @@ +# GetPreferenceResponse + + +## 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 | +| `MediaContainerWithSettings` | [MediaContainerWithSettings](../../Models/Components/MediaContainerWithSettings.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetPromotedHubsMediaContainer.md b/docs/Models/Requests/GetPromotedHubsMediaContainer.md new file mode 100644 index 0000000..25357e2 --- /dev/null +++ b/docs/Models/Requests/GetPromotedHubsMediaContainer.md @@ -0,0 +1,17 @@ +# GetPromotedHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Hub` | List<[Models.Components.Hub](../../Models/Components/Hub.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPromotedHubsRequest.md b/docs/Models/Requests/GetPromotedHubsRequest.md new file mode 100644 index 0000000..23faaf6 --- /dev/null +++ b/docs/Models/Requests/GetPromotedHubsRequest.md @@ -0,0 +1,19 @@ +# GetPromotedHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Count` | *long* | :heavy_minus_sign: | Limit results to count items | | \ No newline at end of file diff --git a/docs/Models/Requests/GetPromotedHubsResponse.md b/docs/Models/Requests/GetPromotedHubsResponse.md new file mode 100644 index 0000000..b6a2778 --- /dev/null +++ b/docs/Models/Requests/GetPromotedHubsResponse.md @@ -0,0 +1,12 @@ +# GetPromotedHubsResponse + + +## 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` | [GetPromotedHubsResponseBody](../../Models/Requests/GetPromotedHubsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetPromotedHubsResponseBody.md b/docs/Models/Requests/GetPromotedHubsResponseBody.md new file mode 100644 index 0000000..6fea679 --- /dev/null +++ b/docs/Models/Requests/GetPromotedHubsResponseBody.md @@ -0,0 +1,10 @@ +# GetPromotedHubsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetPromotedHubsMediaContainer](../../Models/Requests/GetPromotedHubsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetRandomArtworkRequest.md b/docs/Models/Requests/GetRandomArtworkRequest.md new file mode 100644 index 0000000..7f69c9c --- /dev/null +++ b/docs/Models/Requests/GetRandomArtworkRequest.md @@ -0,0 +1,19 @@ +# GetRandomArtworkRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Sections` | List<*long*> | :heavy_minus_sign: | The sections for which to fetch artwork. | [
5,
6
] | \ No newline at end of file diff --git a/docs/Models/Requests/GetRandomArtworkResponse.md b/docs/Models/Requests/GetRandomArtworkResponse.md new file mode 100644 index 0000000..09718b1 --- /dev/null +++ b/docs/Models/Requests/GetRandomArtworkResponse.md @@ -0,0 +1,11 @@ +# GetRandomArtworkResponse + + +## 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 | +| `MediaContainerWithArtwork` | [MediaContainerWithArtwork](../../Models/Components/MediaContainerWithArtwork.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedActiveDirection.md b/docs/Models/Requests/GetRecentlyAddedActiveDirection.md deleted file mode 100644 index a0fa724..0000000 --- a/docs/Models/Requests/GetRecentlyAddedActiveDirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetRecentlyAddedActiveDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Ascending` | asc | -| `Descending` | desc | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedDefaultDirection.md b/docs/Models/Requests/GetRecentlyAddedDefaultDirection.md deleted file mode 100644 index b7422fa..0000000 --- a/docs/Models/Requests/GetRecentlyAddedDefaultDirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetRecentlyAddedDefaultDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Ascending` | asc | -| `Descending` | desc | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedField.md b/docs/Models/Requests/GetRecentlyAddedField.md deleted file mode 100644 index 125c903..0000000 --- a/docs/Models/Requests/GetRecentlyAddedField.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRecentlyAddedField - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Key` | *string* | :heavy_check_mark: | N/A | show.title | -| `Title` | *string* | :heavy_check_mark: | N/A | Show Title | -| `Type` | *string* | :heavy_check_mark: | N/A | string | -| `SubType` | *string* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedFieldType.md b/docs/Models/Requests/GetRecentlyAddedFieldType.md deleted file mode 100644 index 5609651..0000000 --- a/docs/Models/Requests/GetRecentlyAddedFieldType.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetRecentlyAddedFieldType - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| `Type` | *string* | :heavy_check_mark: | N/A | tag | -| `Operator` | List<[GetRecentlyAddedOperator](../../Models/Requests/GetRecentlyAddedOperator.md)> | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedFilter.md b/docs/Models/Requests/GetRecentlyAddedFilter.md deleted file mode 100644 index 7d1f91f..0000000 --- a/docs/Models/Requests/GetRecentlyAddedFilter.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetRecentlyAddedFilter - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `Filter` | *string* | :heavy_check_mark: | N/A | genre | -| `FilterType` | *string* | :heavy_check_mark: | N/A | string | -| `Key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | -| `Title` | *string* | :heavy_check_mark: | N/A | Genre | -| `Type` | *string* | :heavy_check_mark: | N/A | filter | -| `Advanced` | *bool* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedHubsResponseType.md b/docs/Models/Requests/GetRecentlyAddedHubsResponseType.md deleted file mode 100644 index e1d6679..0000000 --- a/docs/Models/Requests/GetRecentlyAddedHubsResponseType.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRecentlyAddedHubsResponseType - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `CoverPoster` | coverPoster | -| `Background` | background | -| `Snapshot` | snapshot | -| `ClearLogo` | clearLogo | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedHubsType.md b/docs/Models/Requests/GetRecentlyAddedHubsType.md deleted file mode 100644 index 4d903e9..0000000 --- a/docs/Models/Requests/GetRecentlyAddedHubsType.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetRecentlyAddedHubsType - -The type of media content in the Plex library. This can represent videos, music, or photos. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | movie | -| `TvShow` | show | -| `Season` | season | -| `Episode` | episode | -| `Artist` | artist | -| `Album` | album | -| `Track` | track | -| `PhotoAlbum` | photoalbum | -| `Photo` | photo | -| `Collection` | collection | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedImage.md b/docs/Models/Requests/GetRecentlyAddedImage.md deleted file mode 100644 index 7528c7a..0000000 --- a/docs/Models/Requests/GetRecentlyAddedImage.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRecentlyAddedImage - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `Alt` | *string* | :heavy_check_mark: | N/A | Episode 1 | -| `Type` | [GetRecentlyAddedHubsResponseType](../../Models/Requests/GetRecentlyAddedHubsResponseType.md) | :heavy_check_mark: | N/A | background | -| `Url` | *string* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedLibraryCountry.md b/docs/Models/Requests/GetRecentlyAddedLibraryCountry.md deleted file mode 100644 index 4113d6a..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryCountry.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetRecentlyAddedLibraryCountry - - -## 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/GetRecentlyAddedLibraryDirector.md b/docs/Models/Requests/GetRecentlyAddedLibraryDirector.md deleted file mode 100644 index 05fe637..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryDirector.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetRecentlyAddedLibraryDirector - - -## 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/GetRecentlyAddedLibraryFilter.md b/docs/Models/Requests/GetRecentlyAddedLibraryFilter.md deleted file mode 100644 index eadd4c5..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryFilter.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetRecentlyAddedLibraryFilter - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `Filter` | *string* | :heavy_check_mark: | N/A | genre | -| `FilterType` | *string* | :heavy_check_mark: | N/A | string | -| `Key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | -| `Title` | *string* | :heavy_check_mark: | N/A | Genre | -| `Type` | *string* | :heavy_check_mark: | N/A | filter | -| `Advanced` | *bool* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedLibraryGenre.md b/docs/Models/Requests/GetRecentlyAddedLibraryGenre.md deleted file mode 100644 index f04e550..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryGenre.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetRecentlyAddedLibraryGenre - - -## 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/GetRecentlyAddedLibraryMedia.md b/docs/Models/Requests/GetRecentlyAddedLibraryMedia.md deleted file mode 100644 index d0c9dda..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryMedia.md +++ /dev/null @@ -1,23 +0,0 @@ -# GetRecentlyAddedLibraryMedia - - -## 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<[GetRecentlyAddedLibraryPart](../../Models/Requests/GetRecentlyAddedLibraryPart.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedLibraryMediaContainer.md b/docs/Models/Requests/GetRecentlyAddedLibraryMediaContainer.md deleted file mode 100644 index 72dee82..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryMediaContainer.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetRecentlyAddedLibraryMediaContainer - -The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -| `Type` | List<[GetRecentlyAddedLibraryType](../../Models/Requests/GetRecentlyAddedLibraryType.md)> | :heavy_minus_sign: | N/A | | -| `FieldType` | List<[FieldType](../../Models/Requests/FieldType.md)> | :heavy_minus_sign: | N/A | | -| `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<[GetRecentlyAddedLibraryMetadata](../../Models/Requests/GetRecentlyAddedLibraryMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedLibraryMetadata.md b/docs/Models/Requests/GetRecentlyAddedLibraryMetadata.md deleted file mode 100644 index 838acad..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryMetadata.md +++ /dev/null @@ -1,39 +0,0 @@ -# GetRecentlyAddedLibraryMetadata - - -## 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<[GetRecentlyAddedLibraryMedia](../../Models/Requests/GetRecentlyAddedLibraryMedia.md)> | :heavy_minus_sign: | N/A | | -| `Genre` | List<[GetRecentlyAddedLibraryGenre](../../Models/Requests/GetRecentlyAddedLibraryGenre.md)> | :heavy_minus_sign: | N/A | | -| `Director` | List<[GetRecentlyAddedLibraryDirector](../../Models/Requests/GetRecentlyAddedLibraryDirector.md)> | :heavy_minus_sign: | N/A | | -| `Writer` | List<[GetRecentlyAddedLibraryWriter](../../Models/Requests/GetRecentlyAddedLibraryWriter.md)> | :heavy_minus_sign: | N/A | | -| `Country` | List<[GetRecentlyAddedLibraryCountry](../../Models/Requests/GetRecentlyAddedLibraryCountry.md)> | :heavy_minus_sign: | N/A | | -| `Role` | List<[GetRecentlyAddedLibraryRole](../../Models/Requests/GetRecentlyAddedLibraryRole.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedLibraryPart.md b/docs/Models/Requests/GetRecentlyAddedLibraryPart.md deleted file mode 100644 index fc64f6e..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryPart.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetRecentlyAddedLibraryPart - - -## 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/GetRecentlyAddedLibraryRequest.md b/docs/Models/Requests/GetRecentlyAddedLibraryRequest.md deleted file mode 100644 index eeeb880..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryRequest.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetRecentlyAddedLibraryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `ContentDirectoryID` | *long* | :heavy_minus_sign: | N/A | 2 | -| `PinnedContentDirectoryID` | List<*long*> | :heavy_minus_sign: | N/A | [
3,
5,
7,
13,
12,
1,
6,
14,
2,
10,
16,
17
] | -| `SectionID` | *long* | :heavy_minus_sign: | The library section ID for filtering content. | 2 | -| `Type` | [QueryParamType](../../Models/Requests/QueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `IncludeMeta` | [QueryParamIncludeMeta](../../Models/Requests/QueryParamIncludeMeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | -| `XPlexContainerStart` | *int* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | -| `XPlexContainerSize` | *int* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedLibraryResponse.md b/docs/Models/Requests/GetRecentlyAddedLibraryResponse.md deleted file mode 100644 index 32e3354..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRecentlyAddedLibraryResponse - - -## 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` | [GetRecentlyAddedLibraryResponseBody](../../Models/Requests/GetRecentlyAddedLibraryResponseBody.md) | :heavy_minus_sign: | The recently added content | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedLibraryResponseBody.md b/docs/Models/Requests/GetRecentlyAddedLibraryResponseBody.md deleted file mode 100644 index de7d8ce..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRecentlyAddedLibraryResponseBody - -The recently added content - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetRecentlyAddedLibraryMediaContainer](../../Models/Requests/GetRecentlyAddedLibraryMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedLibraryRole.md b/docs/Models/Requests/GetRecentlyAddedLibraryRole.md deleted file mode 100644 index 1f0ae9d..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryRole.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetRecentlyAddedLibraryRole - - -## 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/GetRecentlyAddedLibraryType.md b/docs/Models/Requests/GetRecentlyAddedLibraryType.md deleted file mode 100644 index 9c207b8..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryType.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetRecentlyAddedLibraryType - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `Key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `Type` | *string* | :heavy_check_mark: | N/A | filter | -| `Subtype` | *string* | :heavy_minus_sign: | N/A | clip | -| `Title` | *string* | :heavy_check_mark: | N/A | TV Shows | -| `Active` | *bool* | :heavy_check_mark: | N/A | false | -| `Filter` | List<[GetRecentlyAddedLibraryFilter](../../Models/Requests/GetRecentlyAddedLibraryFilter.md)> | :heavy_minus_sign: | N/A | | -| `Sort` | List<[Sort](../../Models/Requests/Sort.md)> | :heavy_minus_sign: | N/A | | -| `Field` | List<[Field](../../Models/Requests/Field.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedLibraryWriter.md b/docs/Models/Requests/GetRecentlyAddedLibraryWriter.md deleted file mode 100644 index d517f9a..0000000 --- a/docs/Models/Requests/GetRecentlyAddedLibraryWriter.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetRecentlyAddedLibraryWriter - - -## 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/Models/Requests/GetRecentlyAddedMediaContainer.md b/docs/Models/Requests/GetRecentlyAddedMediaContainer.md deleted file mode 100644 index a32183b..0000000 --- a/docs/Models/Requests/GetRecentlyAddedMediaContainer.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetRecentlyAddedMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `TotalSize` | *int* | :heavy_check_mark: | Total number of media items in the library. | 50 | -| `Offset` | *long* | :heavy_check_mark: | Offset value for pagination. | 0 | -| `AllowSync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `Meta` | [Meta](../../Models/Requests/Meta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | -| `Metadata` | List<[GetRecentlyAddedMetadata](../../Models/Requests/GetRecentlyAddedMetadata.md)> | :heavy_minus_sign: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedMetadata.md b/docs/Models/Requests/GetRecentlyAddedMetadata.md deleted file mode 100644 index 58df3eb..0000000 --- a/docs/Models/Requests/GetRecentlyAddedMetadata.md +++ /dev/null @@ -1,85 +0,0 @@ -# GetRecentlyAddedMetadata - -Unknown - - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `AddedAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | -| `Art` | *string* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | -| `AudienceRatingImage` | *string* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | -| `AudienceRating` | *double* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | -| `ChapterSource` | *string* | :heavy_minus_sign: | The source from which chapter data is derived. | media | -| `ChildCount` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | -| `ContentRating` | *string* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | -| `CreatedAtAccuracy` | *string* | :heavy_minus_sign: | The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). | epoch,local | -| `CreatedAtTZOffset` | *string* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | -| `Duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | -| `GrandparentArt` | *string* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | -| `GrandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `GrandparentKey` | *string* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | -| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | -| `GrandparentSlug` | *string* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | -| `GrandparentTheme` | *string* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | -| `GrandparentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | -| `GrandparentTitle` | *string* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | -| `Guid` | *string* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | -| `Index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | -| `Key` | *string* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | -| `LastRatedAt` | *long* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | -| `LastViewedAt` | *int* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | -| `LeafCount` | *int* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | -| `LibrarySectionID` | *long* | :heavy_minus_sign: | The identifier for the library section. | 1 | -| `LibrarySectionKey` | *string* | :heavy_minus_sign: | The key corresponding to the library section. | /library/sections/1 | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | The title of the library section. | Movies | -| `OriginalTitle` | *string* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | -| `OriginallyAvailableAt` | [LocalDate](https://nodatime.org/3.1.x/api/NodaTime.LocalDate.html) | :heavy_minus_sign: | The original release date of the media item. | 2022-12-14 | -| `ParentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `ParentIndex` | *int* | :heavy_minus_sign: | The index position of the parent media item. | 1 | -| `ParentKey` | *string* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | -| `ParentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | -| `ParentSlug` | *string* | :heavy_minus_sign: | The slug for the parent media item. | alice-in-borderland-2020 | -| `ParentStudio` | *string* | :heavy_check_mark: | The studio of the parent media item. | UCP | -| `ParentTheme` | *string* | :heavy_check_mark: | The theme URL for the parent media item. | /library/metadata/66/theme/1705716261 | -| `ParentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | -| `ParentTitle` | *string* | :heavy_minus_sign: | The title of the parent media item. | Caprica | -| `ParentYear` | *int* | :heavy_minus_sign: | The release year of the parent media item. | 2010 | -| `PrimaryExtraKey` | *string* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | -| `RatingImage` | *string* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | -| `RatingKey` | *string* | :heavy_check_mark: | The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. | 58683 | -| `Rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | -| `SeasonCount` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | -| `SkipCount` | *int* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | -| `Slug` | *string* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | -| `Studio` | *string* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | -| `Subtype` | *string* | :heavy_minus_sign: | A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. | clip | -| `Summary` | *string* | :heavy_check_mark: | A synopsis of the media item. | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.
| -| `Tagline` | *string* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | -| `Theme` | *string* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | -| `Thumb` | *string* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | -| `TitleSort` | *string* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | -| `Title` | *string* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | -| `Type` | [GetRecentlyAddedHubsType](../../Models/Requests/GetRecentlyAddedHubsType.md) | :heavy_check_mark: | N/A | movie | -| `UpdatedAt` | *long* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `UserRating` | *float* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | -| `ViewCount` | *int* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | -| `ViewOffset` | *int* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | -| `ViewedLeafCount` | *int* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | -| `Year` | *int* | :heavy_minus_sign: | The release year of the media item. | 2022 | -| `Image` | List<[GetRecentlyAddedImage](../../Models/Requests/GetRecentlyAddedImage.md)> | :heavy_minus_sign: | N/A | | -| `UltraBlurColors` | [UltraBlurColors](../../Models/Requests/UltraBlurColors.md) | :heavy_minus_sign: | N/A | | -| `Guids` | List<[Guids](../../Models/Requests/Guids.md)> | :heavy_minus_sign: | N/A | | -| `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 | | -| `Country` | List<[Country](../../Models/Requests/Country.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 | | -| `Role` | List<[Role](../../Models/Requests/Role.md)> | :heavy_minus_sign: | N/A | | -| `Producer` | List<[Producer](../../Models/Requests/Producer.md)> | :heavy_minus_sign: | N/A | | -| `Rating1` | List<[Rating](../../Models/Requests/Rating.md)> | :heavy_minus_sign: | N/A | | -| `Similar` | List<[Similar](../../Models/Requests/Similar.md)> | :heavy_minus_sign: | N/A | | -| `Location` | List<[Location](../../Models/Requests/Location.md)> | :heavy_minus_sign: | N/A | | -| `Collection` | List<[Collection](../../Models/Requests/Collection.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedOperator.md b/docs/Models/Requests/GetRecentlyAddedOperator.md deleted file mode 100644 index 19071c5..0000000 --- a/docs/Models/Requests/GetRecentlyAddedOperator.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetRecentlyAddedOperator - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Key` | *string* | :heavy_check_mark: | N/A | = | -| `Title` | *string* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming.md b/docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming.md deleted file mode 100644 index 47aaa9f..0000000 --- a/docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming.md +++ /dev/null @@ -1,18 +0,0 @@ -# GetRecentlyAddedOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### GetRecentlyAddedOptimizedForStreaming1 - -```csharp -GetRecentlyAddedOptimizedForStreaming.CreateGetRecentlyAddedOptimizedForStreaming1(/* values here */); -``` - -### Boolean - -```csharp -GetRecentlyAddedOptimizedForStreaming.CreateBoolean(/* values here */); -``` diff --git a/docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.md b/docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.md deleted file mode 100644 index 0fd6f93..0000000 --- a/docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetRecentlyAddedOptimizedForStreaming1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedRequest.md b/docs/Models/Requests/GetRecentlyAddedRequest.md deleted file mode 100644 index 0c3c064..0000000 --- a/docs/Models/Requests/GetRecentlyAddedRequest.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetRecentlyAddedRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `ContentDirectoryID` | *long* | :heavy_check_mark: | The content directory ID. | | -| `PinnedContentDirectoryID` | *string* | :heavy_minus_sign: | Comma-separated list of pinned content directory IDs. | | -| `SectionID` | *long* | :heavy_minus_sign: | The library section ID for filtering content. | 2 | -| `Type` | [Models.Requests.Type](../../Models/Requests/Type.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `IncludeMeta` | [IncludeMeta](../../Models/Requests/IncludeMeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | -| `XPlexContainerStart` | *int* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | -| `XPlexContainerSize` | *int* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedResponse.md b/docs/Models/Requests/GetRecentlyAddedResponse.md deleted file mode 100644 index 31f4c13..0000000 --- a/docs/Models/Requests/GetRecentlyAddedResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 | -| `Object` | [GetRecentlyAddedResponseBody](../../Models/Requests/GetRecentlyAddedResponseBody.md) | :heavy_minus_sign: | A successful response with recently added content. | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedResponseBody.md b/docs/Models/Requests/GetRecentlyAddedResponseBody.md deleted file mode 100644 index 09295dc..0000000 --- a/docs/Models/Requests/GetRecentlyAddedResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRecentlyAddedResponseBody - -A successful response with 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/GetRecentlyAddedSort.md b/docs/Models/Requests/GetRecentlyAddedSort.md deleted file mode 100644 index ac6bfcd..0000000 --- a/docs/Models/Requests/GetRecentlyAddedSort.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetRecentlyAddedSort - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `Default` | *string* | :heavy_minus_sign: | N/A | asc | -| `Active` | *bool* | :heavy_minus_sign: | N/A | false | -| `ActiveDirection` | [GetRecentlyAddedActiveDirection](../../Models/Requests/GetRecentlyAddedActiveDirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `DefaultDirection` | [GetRecentlyAddedDefaultDirection](../../Models/Requests/GetRecentlyAddedDefaultDirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `DescKey` | *string* | :heavy_minus_sign: | N/A | titleSort:desc | -| `FirstCharacterKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | -| `Key` | *string* | :heavy_check_mark: | N/A | titleSort | -| `Title` | *string* | :heavy_check_mark: | N/A | Title | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedType.md b/docs/Models/Requests/GetRecentlyAddedType.md deleted file mode 100644 index 7e953d0..0000000 --- a/docs/Models/Requests/GetRecentlyAddedType.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetRecentlyAddedType - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| `Key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `Type` | *string* | :heavy_check_mark: | N/A | filter | -| `Subtype` | *string* | :heavy_minus_sign: | N/A | clip | -| `Title` | *string* | :heavy_check_mark: | N/A | TV Shows | -| `Active` | *bool* | :heavy_check_mark: | N/A | false | -| `Filter` | List<[GetRecentlyAddedFilter](../../Models/Requests/GetRecentlyAddedFilter.md)> | :heavy_minus_sign: | N/A | | -| `Sort` | List<[GetRecentlyAddedSort](../../Models/Requests/GetRecentlyAddedSort.md)> | :heavy_minus_sign: | N/A | | -| `Field` | List<[GetRecentlyAddedField](../../Models/Requests/GetRecentlyAddedField.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetRefreshLibraryMetadataRequest.md b/docs/Models/Requests/GetRefreshLibraryMetadataRequest.md deleted file mode 100644 index 9ded6b9..0000000 --- a/docs/Models/Requests/GetRefreshLibraryMetadataRequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetRefreshLibraryMetadataRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `Force` | [Force](../../Models/Requests/Force.md) | :heavy_minus_sign: | Force the refresh even if the library is already being refreshed. | 0 | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | \ No newline at end of file diff --git a/docs/Models/Requests/GetRefreshLibraryMetadataResponse.md b/docs/Models/Requests/GetRefreshLibraryMetadataResponse.md deleted file mode 100644 index 4bb12dd..0000000 --- a/docs/Models/Requests/GetRefreshLibraryMetadataResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRefreshLibraryMetadataResponse - - -## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/GetRelatedHubsRequest.md b/docs/Models/Requests/GetRelatedHubsRequest.md new file mode 100644 index 0000000..9b18aae --- /dev/null +++ b/docs/Models/Requests/GetRelatedHubsRequest.md @@ -0,0 +1,21 @@ +# GetRelatedHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `MetadataId` | *long* | :heavy_check_mark: | The metadata ID for the hubs to fetch | | +| `Count` | *long* | :heavy_minus_sign: | Limit results to count items | | +| `OnlyTransient` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetRelatedHubsResponse.md b/docs/Models/Requests/GetRelatedHubsResponse.md new file mode 100644 index 0000000..80ea399 --- /dev/null +++ b/docs/Models/Requests/GetRelatedHubsResponse.md @@ -0,0 +1,12 @@ +# GetRelatedHubsResponse + + +## 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 | +| `MediaContainerWithHubs` | [MediaContainerWithHubs](../../Models/Components/MediaContainerWithHubs.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetRelatedItemsMediaContainer.md b/docs/Models/Requests/GetRelatedItemsMediaContainer.md new file mode 100644 index 0000000..e0b652b --- /dev/null +++ b/docs/Models/Requests/GetRelatedItemsMediaContainer.md @@ -0,0 +1,17 @@ +# GetRelatedItemsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Hub` | List<[Models.Components.Hub](../../Models/Components/Hub.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetRelatedItemsRequest.md b/docs/Models/Requests/GetRelatedItemsRequest.md new file mode 100644 index 0000000..071f3db --- /dev/null +++ b/docs/Models/Requests/GetRelatedItemsRequest.md @@ -0,0 +1,19 @@ +# GetRelatedItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetRelatedItemsResponse.md b/docs/Models/Requests/GetRelatedItemsResponse.md new file mode 100644 index 0000000..981e380 --- /dev/null +++ b/docs/Models/Requests/GetRelatedItemsResponse.md @@ -0,0 +1,11 @@ +# GetRelatedItemsResponse + + +## 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` | [GetRelatedItemsResponseBody](../../Models/Requests/GetRelatedItemsResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetRelatedItemsResponseBody.md b/docs/Models/Requests/GetRelatedItemsResponseBody.md new file mode 100644 index 0000000..c3e96be --- /dev/null +++ b/docs/Models/Requests/GetRelatedItemsResponseBody.md @@ -0,0 +1,10 @@ +# GetRelatedItemsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetRelatedItemsMediaContainer](../../Models/Requests/GetRelatedItemsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetResizedPhotoRequest.md b/docs/Models/Requests/GetResizedPhotoRequest.md deleted file mode 100644 index cee782c..0000000 --- a/docs/Models/Requests/GetResizedPhotoRequest.md +++ /dev/null @@ -1,14 +0,0 @@ -# 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 deleted file mode 100644 index 1d78813..0000000 --- a/docs/Models/Requests/GetResizedPhotoResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/GetResourcesStatisticsMediaContainer.md b/docs/Models/Requests/GetResourcesStatisticsMediaContainer.md deleted file mode 100644 index d6de9ef..0000000 --- a/docs/Models/Requests/GetResourcesStatisticsMediaContainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetResourcesStatisticsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 5497 | -| `StatisticsResources` | List<[StatisticsResources](../../Models/Requests/StatisticsResources.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetResourcesStatisticsRequest.md b/docs/Models/Requests/GetResourcesStatisticsRequest.md deleted file mode 100644 index 837cc44..0000000 --- a/docs/Models/Requests/GetResourcesStatisticsRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetResourcesStatisticsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `Timespan` | *long* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | \ No newline at end of file diff --git a/docs/Models/Requests/GetResourcesStatisticsResponse.md b/docs/Models/Requests/GetResourcesStatisticsResponse.md deleted file mode 100644 index 0edd30c..0000000 --- a/docs/Models/Requests/GetResourcesStatisticsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetResourcesStatisticsResponse - - -## 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` | [GetResourcesStatisticsResponseBody](../../Models/Requests/GetResourcesStatisticsResponseBody.md) | :heavy_minus_sign: | Resource Statistics | \ No newline at end of file diff --git a/docs/Models/Requests/GetResourcesStatisticsResponseBody.md b/docs/Models/Requests/GetResourcesStatisticsResponseBody.md deleted file mode 100644 index 76a233e..0000000 --- a/docs/Models/Requests/GetResourcesStatisticsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetResourcesStatisticsResponseBody - -Resource Statistics - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetResourcesStatisticsMediaContainer](../../Models/Requests/GetResourcesStatisticsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetScheduledRecordingsMediaContainer.md b/docs/Models/Requests/GetScheduledRecordingsMediaContainer.md new file mode 100644 index 0000000..d9fac1a --- /dev/null +++ b/docs/Models/Requests/GetScheduledRecordingsMediaContainer.md @@ -0,0 +1,17 @@ +# GetScheduledRecordingsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `MediaGrabOperation` | List<[MediaGrabOperation](../../Models/Components/MediaGrabOperation.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetScheduledRecordingsResponse.md b/docs/Models/Requests/GetScheduledRecordingsResponse.md new file mode 100644 index 0000000..da32912 --- /dev/null +++ b/docs/Models/Requests/GetScheduledRecordingsResponse.md @@ -0,0 +1,12 @@ +# GetScheduledRecordingsResponse + + +## 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` | [GetScheduledRecordingsResponseBody](../../Models/Requests/GetScheduledRecordingsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetScheduledRecordingsResponseBody.md b/docs/Models/Requests/GetScheduledRecordingsResponseBody.md new file mode 100644 index 0000000..ebe9be7 --- /dev/null +++ b/docs/Models/Requests/GetScheduledRecordingsResponseBody.md @@ -0,0 +1,10 @@ +# GetScheduledRecordingsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetScheduledRecordingsMediaContainer](../../Models/Requests/GetScheduledRecordingsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesCountry.md b/docs/Models/Requests/GetSearchAllLibrariesCountry.md deleted file mode 100644 index f7f4f94..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesCountry.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSearchAllLibrariesCountry - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | The unique identifier for the country.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `Tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesDirector.md b/docs/Models/Requests/GetSearchAllLibrariesDirector.md deleted file mode 100644 index e4c5337..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesDirector.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | Unique identifier for the director. | 126522 | -| `Tag` | *string* | :heavy_check_mark: | The role of Director | Danny Boyle | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the director. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesDirectory.md b/docs/Models/Requests/GetSearchAllLibrariesDirectory.md deleted file mode 100644 index a77cb4f..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesDirectory.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetSearchAllLibrariesDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `Key` | *string* | :heavy_check_mark: | The unique identifier path for the search result item. | /library/sections/3/all?actor=197429 | -| `LibrarySectionID` | *long* | :heavy_check_mark: | The identifier for the library section. | 1 | -| `LibrarySectionKey` | *string* | :heavy_check_mark: | The key corresponding to the library section. | /library/sections/1 | -| `LibrarySectionTitle` | *string* | :heavy_check_mark: | The title of the library section. | Movies | -| `LibrarySectionType` | *long* | :heavy_minus_sign: | N/A | | -| `Type` | *string* | :heavy_check_mark: | The type of the directory. | tag | -| `Id` | *long* | :heavy_check_mark: | N/A | 197429 | -| `Filter` | *string* | :heavy_minus_sign: | The filter string used to query this specific item in the library. | actor=197429 | -| `Tag` | *string* | :heavy_check_mark: | N/A | Ben Stiller | -| `TagType` | *long* | :heavy_minus_sign: | The type of tag associated with this search result (e.g., Director, Actor). | | -| `TagKey` | *string* | :heavy_minus_sign: | The unique identifier for the tag associated with this search result. | 5d776826999c64001ec2c606 | -| `Thumb` | *string* | :heavy_minus_sign: | The URL to the thumbnail image associated with this search result. | https://metadata-static.plex.tv/5/people/57bd7c7d6c5c9e2881251b30e5603d3d.jpg | -| `Count` | *long* | :heavy_minus_sign: | The number of items associated with this search result. | 10 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesFlattenSeasons.md b/docs/Models/Requests/GetSearchAllLibrariesFlattenSeasons.md deleted file mode 100644 index 00be6ad..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesFlattenSeasons.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetSearchAllLibrariesFlattenSeasons - -Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - - - -## Values - -| Name | Value | -| ---------------- | ---------------- | -| `LibraryDefault` | -1 | -| `Hide` | 0 | -| `Show` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesGenre.md b/docs/Models/Requests/GetSearchAllLibrariesGenre.md deleted file mode 100644 index 7c5e26a..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesGenre.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSearchAllLibrariesGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | The unique identifier for the genre.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `Tag` | *string* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesGuids.md b/docs/Models/Requests/GetSearchAllLibrariesGuids.md deleted file mode 100644 index 5999993..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesGuids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetSearchAllLibrariesGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesHasThumbnail.md b/docs/Models/Requests/GetSearchAllLibrariesHasThumbnail.md deleted file mode 100644 index b5f9278..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesHasThumbnail.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetSearchAllLibrariesHasThumbnail - -Indicates if the part has a thumbnail. - - - -## Values - -| Name | Value | -| ------- | ------- | -| `False` | 0 | -| `True` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesImage.md b/docs/Models/Requests/GetSearchAllLibrariesImage.md deleted file mode 100644 index 1ad4733..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesImage.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesImage - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `Alt` | *string* | :heavy_check_mark: | N/A | Episode 1 | -| `Type` | [GetSearchAllLibrariesLibraryType](../../Models/Requests/GetSearchAllLibrariesLibraryType.md) | :heavy_check_mark: | N/A | background | -| `Url` | *string* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesLibraryOptimizedForStreaming.md b/docs/Models/Requests/GetSearchAllLibrariesLibraryOptimizedForStreaming.md deleted file mode 100644 index 94bfc80..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesLibraryOptimizedForStreaming.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetSearchAllLibrariesLibraryOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - - -## Supported Types - -### GetSearchAllLibrariesOptimizedForStreamingLibrary1 - -```csharp -GetSearchAllLibrariesLibraryOptimizedForStreaming.CreateGetSearchAllLibrariesOptimizedForStreamingLibrary1(/* values here */); -``` - -### Boolean - -```csharp -GetSearchAllLibrariesLibraryOptimizedForStreaming.CreateBoolean(/* values here */); -``` diff --git a/docs/Models/Requests/GetSearchAllLibrariesLibraryType.md b/docs/Models/Requests/GetSearchAllLibrariesLibraryType.md deleted file mode 100644 index 1d439cd..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesLibraryType.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesLibraryType - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `CoverPoster` | coverPoster | -| `Background` | background | -| `Snapshot` | snapshot | -| `ClearLogo` | clearLogo | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesLocation.md b/docs/Models/Requests/GetSearchAllLibrariesLocation.md deleted file mode 100644 index 520d682..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesLocation.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesLocation - -The folder path for the media item. - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | -| `Path` | *string* | :heavy_check_mark: | N/A | /TV Shows/Clarkson's Farm | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesMedia.md b/docs/Models/Requests/GetSearchAllLibrariesMedia.md deleted file mode 100644 index 1c3a7bd..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesMedia.md +++ /dev/null @@ -1,26 +0,0 @@ -# GetSearchAllLibrariesMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `Duration` | *int* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | -| `Bitrate` | *int* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | -| `Width` | *int* | :heavy_minus_sign: | Video width in pixels. | 3840 | -| `Height` | *int* | :heavy_minus_sign: | Video height in pixels. | 1602 | -| `AspectRatio` | *float* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | -| `AudioChannels` | *int* | :heavy_minus_sign: | Number of audio channels. | 6 | -| `DisplayOffset` | *int* | :heavy_minus_sign: | N/A | 50 | -| `AudioCodec` | *string* | :heavy_minus_sign: | Audio codec used. | aac | -| `VideoCodec` | *string* | :heavy_minus_sign: | Video codec used. | hevc | -| `VideoResolution` | *string* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | -| `Container` | *string* | :heavy_minus_sign: | Container format of the media. | mp4 | -| `VideoFrameRate` | *string* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | -| `VideoProfile` | *string* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `HasVoiceActivity` | *bool* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | -| `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `OptimizedForStreaming` | [GetSearchAllLibrariesOptimizedForStreaming](../../Models/Requests/GetSearchAllLibrariesOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | Indicates whether the media has 64-bit offsets.
This is relevant for media files that may require larger offsets than what 32-bit integers can provide.
| false | -| `Part` | List<[GetSearchAllLibrariesPart](../../Models/Requests/GetSearchAllLibrariesPart.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesMediaContainer.md b/docs/Models/Requests/GetSearchAllLibrariesMediaContainer.md deleted file mode 100644 index c3857f0..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesMediaContainer.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetSearchAllLibrariesMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `AllowSync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `LibrarySectionID` | *long* | :heavy_minus_sign: | The unique identifier for the library section. | 2 | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | The title of the library section. | TV Series | -| `LibrarySectionUUID` | *string* | :heavy_minus_sign: | The universally unique identifier for the library section. | e69655a2-ef48-4aba-bb19-0cc34d1e7d36 | -| `MediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `MediaTagVersion` | *long* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `SearchResult` | List<[SearchResult](../../Models/Requests/SearchResult.md)> | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesMetadata.md b/docs/Models/Requests/GetSearchAllLibrariesMetadata.md deleted file mode 100644 index 1f99ebf..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesMetadata.md +++ /dev/null @@ -1,82 +0,0 @@ -# GetSearchAllLibrariesMetadata - -Unknown - - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_check_mark: | The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. | 58683 | -| `Key` | *string* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | -| `Guid` | *string* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | -| `Slug` | *string* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | -| `Studio` | *string* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | -| `Type` | [GetSearchAllLibrariesType](../../Models/Requests/GetSearchAllLibrariesType.md) | :heavy_check_mark: | N/A | movie | -| `Title` | *string* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | -| `Banner` | *string* | :heavy_check_mark: | The banner image URL for the media item. | /library/metadata/58683/banner/1703239236 | -| `TitleSort` | *string* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | -| `ContentRating` | *string* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | -| `Summary` | *string* | :heavy_check_mark: | A synopsis of the media item. | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.
| -| `Rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | -| `AudienceRating` | *double* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | -| `Year` | *int* | :heavy_minus_sign: | The release year of the media item. | 2022 | -| `Tagline` | *string* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | -| `Thumb` | *string* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | -| `Art` | *string* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | -| `Theme` | *string* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | -| `Index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | -| `LeafCount` | *int* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | -| `ViewedLeafCount` | *int* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | -| `ChildCount` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | -| `SeasonCount` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | -| `Duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | -| `OriginallyAvailableAt` | [LocalDate](https://nodatime.org/3.1.x/api/NodaTime.LocalDate.html) | :heavy_minus_sign: | The original release date of the media item. | 2022-12-14 | -| `AddedAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | -| `UpdatedAt` | *long* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `ParentYear` | *int* | :heavy_minus_sign: | The release year of the parent media item. | 2010 | -| `AudienceRatingImage` | *string* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | -| `ChapterSource` | *string* | :heavy_minus_sign: | The source from which chapter data is derived. | media | -| `PrimaryExtraKey` | *string* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | -| `OriginalTitle` | *string* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | -| `ParentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | -| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | -| `ParentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `GrandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `GrandparentSlug` | *string* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | -| `GrandparentKey` | *string* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | -| `ParentKey` | *string* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | -| `GrandparentTitle` | *string* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | -| `GrandparentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | -| `GrandparentTheme` | *string* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | -| `GrandparentArt` | *string* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | -| `ParentTitle` | *string* | :heavy_minus_sign: | The title of the parent media item. | Caprica | -| `ParentIndex` | *int* | :heavy_minus_sign: | The index position of the parent media item. | 1 | -| `ParentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | -| `RatingImage` | *string* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | -| `ViewCount` | *int* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | -| `ViewOffset` | *int* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | -| `SkipCount` | *int* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | -| `Subtype` | *string* | :heavy_minus_sign: | A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. | clip | -| `LastRatedAt` | *long* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | -| `CreatedAtAccuracy` | *string* | :heavy_minus_sign: | The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). | epoch,local | -| `CreatedAtTZOffset` | *string* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | -| `LastViewedAt` | *int* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | -| `UserRating` | *float* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | -| `Image` | List<[GetSearchAllLibrariesImage](../../Models/Requests/GetSearchAllLibrariesImage.md)> | :heavy_minus_sign: | N/A | | -| `UltraBlurColors` | [GetSearchAllLibrariesUltraBlurColors](../../Models/Requests/GetSearchAllLibrariesUltraBlurColors.md) | :heavy_minus_sign: | N/A | | -| `Guids` | List<[GetSearchAllLibrariesGuids](../../Models/Requests/GetSearchAllLibrariesGuids.md)> | :heavy_minus_sign: | N/A | | -| `LibrarySectionID` | *long* | :heavy_minus_sign: | The identifier for the library section. | 1 | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | The title of the library section. | Movies | -| `LibrarySectionKey` | *string* | :heavy_minus_sign: | The key corresponding to the library section. | /library/sections/1 | -| `ShowOrdering` | [GetSearchAllLibrariesShowOrdering](../../Models/Requests/GetSearchAllLibrariesShowOrdering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.
Options:
- None = Library default
- tmdbAiring = The Movie Database (Aired)
- aired = TheTVDB (Aired)
- dvd = TheTVDB (DVD)
- absolute = TheTVDB (Absolute)
| absolute | -| `FlattenSeasons` | [GetSearchAllLibrariesFlattenSeasons](../../Models/Requests/GetSearchAllLibrariesFlattenSeasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
| 1 | -| `SkipChildren` | *bool* | :heavy_minus_sign: | Indicates whether child items should be skipped. | false | -| `Media` | List<[GetSearchAllLibrariesMedia](../../Models/Requests/GetSearchAllLibrariesMedia.md)> | :heavy_minus_sign: | N/A | | -| `Genre` | List<[GetSearchAllLibrariesGenre](../../Models/Requests/GetSearchAllLibrariesGenre.md)> | :heavy_minus_sign: | N/A | | -| `Country` | List<[GetSearchAllLibrariesCountry](../../Models/Requests/GetSearchAllLibrariesCountry.md)> | :heavy_minus_sign: | N/A | | -| `Director` | List<[GetSearchAllLibrariesDirector](../../Models/Requests/GetSearchAllLibrariesDirector.md)> | :heavy_minus_sign: | N/A | | -| `Writer` | List<[GetSearchAllLibrariesWriter](../../Models/Requests/GetSearchAllLibrariesWriter.md)> | :heavy_minus_sign: | N/A | | -| `Role` | List<[GetSearchAllLibrariesRole](../../Models/Requests/GetSearchAllLibrariesRole.md)> | :heavy_minus_sign: | N/A | | -| `Location` | List<[GetSearchAllLibrariesLocation](../../Models/Requests/GetSearchAllLibrariesLocation.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming.md b/docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming.md deleted file mode 100644 index 69a6052..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming.md +++ /dev/null @@ -1,18 +0,0 @@ -# GetSearchAllLibrariesOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### GetSearchAllLibrariesOptimizedForStreaming1 - -```csharp -GetSearchAllLibrariesOptimizedForStreaming.CreateGetSearchAllLibrariesOptimizedForStreaming1(/* values here */); -``` - -### Boolean - -```csharp -GetSearchAllLibrariesOptimizedForStreaming.CreateBoolean(/* values here */); -``` diff --git a/docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming1.md b/docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming1.md deleted file mode 100644 index 8199eae..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreaming1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSearchAllLibrariesOptimizedForStreaming1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreamingLibrary1.md b/docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreamingLibrary1.md deleted file mode 100644 index aa01319..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesOptimizedForStreamingLibrary1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSearchAllLibrariesOptimizedForStreamingLibrary1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesPart.md b/docs/Models/Requests/GetSearchAllLibrariesPart.md deleted file mode 100644 index 0220ee6..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesPart.md +++ /dev/null @@ -1,22 +0,0 @@ -# GetSearchAllLibrariesPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | -| `Accessible` | *bool* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `Exists` | *bool* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `Id` | *long* | :heavy_check_mark: | Unique part identifier. | 418385 | -| `Key` | *string* | :heavy_minus_sign: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | -| `Indexes` | *string* | :heavy_minus_sign: | N/A | sd | -| `Duration` | *int* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | -| `File` | *string* | :heavy_minus_sign: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | -| `Size` | *long* | :heavy_minus_sign: | File size in bytes. | 30649952104 | -| `PacketLength` | *int* | :heavy_minus_sign: | N/A | 188 | -| `Container` | *string* | :heavy_minus_sign: | Container format of the part. | mkv | -| `VideoProfile` | *string* | :heavy_minus_sign: | Video profile for the part. | main 10 | -| `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `OptimizedForStreaming` | [GetSearchAllLibrariesLibraryOptimizedForStreaming](../../Models/Requests/GetSearchAllLibrariesLibraryOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
| | -| `HasThumbnail` | [GetSearchAllLibrariesHasThumbnail](../../Models/Requests/GetSearchAllLibrariesHasThumbnail.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesQueryParamIncludeCollections.md b/docs/Models/Requests/GetSearchAllLibrariesQueryParamIncludeCollections.md deleted file mode 100644 index d0bc130..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesQueryParamIncludeCollections.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesQueryParamIncludeCollections - -Whether to include collections in the search results. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesQueryParamIncludeExternalMedia.md b/docs/Models/Requests/GetSearchAllLibrariesQueryParamIncludeExternalMedia.md deleted file mode 100644 index a5f85db..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesQueryParamIncludeExternalMedia.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesQueryParamIncludeExternalMedia - -Whether to include external media in the search results. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesRequest.md b/docs/Models/Requests/GetSearchAllLibrariesRequest.md deleted file mode 100644 index 88c8007..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesRequest.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetSearchAllLibrariesRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -| `Query` | *string* | :heavy_check_mark: | The search query term. | | -| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `Limit` | *long* | :heavy_minus_sign: | Limit the number of results returned. | | -| `SearchTypes` | List<[SearchTypes](../../Models/Requests/SearchTypes.md)> | :heavy_minus_sign: | A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.
| movies,music,otherVideos,people,tv | -| `IncludeCollections` | [GetSearchAllLibrariesQueryParamIncludeCollections](../../Models/Requests/GetSearchAllLibrariesQueryParamIncludeCollections.md) | :heavy_minus_sign: | Whether to include collections in the search results. | 1 | -| `IncludeExternalMedia` | [GetSearchAllLibrariesQueryParamIncludeExternalMedia](../../Models/Requests/GetSearchAllLibrariesQueryParamIncludeExternalMedia.md) | :heavy_minus_sign: | Whether to include external media in the search results. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesResponse.md b/docs/Models/Requests/GetSearchAllLibrariesResponse.md deleted file mode 100644 index 4cbb53b..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesResponse - - -## 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` | [GetSearchAllLibrariesResponseBody](../../Models/Requests/GetSearchAllLibrariesResponseBody.md) | :heavy_minus_sign: | The libraries available on the Server | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesResponseBody.md b/docs/Models/Requests/GetSearchAllLibrariesResponseBody.md deleted file mode 100644 index bc0c3bb..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesResponseBody - -The libraries available on the Server - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetSearchAllLibrariesMediaContainer](../../Models/Requests/GetSearchAllLibrariesMediaContainer.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesRole.md b/docs/Models/Requests/GetSearchAllLibrariesRole.md deleted file mode 100644 index ba389d7..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesRole.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | The unique identifier for the role.
NOTE: This is different for each Plex server and is not globally unique.
| 126522 | -| `Tag` | *string* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | -| `Role` | *string* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesShowOrdering.md b/docs/Models/Requests/GetSearchAllLibrariesShowOrdering.md deleted file mode 100644 index 6331527..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesShowOrdering.md +++ /dev/null @@ -1,21 +0,0 @@ -# GetSearchAllLibrariesShowOrdering - -Setting that indicates the episode ordering for the show. -Options: - - None = Library default - - tmdbAiring = The Movie Database (Aired) - - aired = TheTVDB (Aired) - - dvd = TheTVDB (DVD) - - absolute = TheTVDB (Absolute) - - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `None` | None | -| `TmdbAiring` | tmdbAiring | -| `TvdbAired` | aired | -| `TvdbDvd` | dvd | -| `TvdbAbsolute` | absolute | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesType.md b/docs/Models/Requests/GetSearchAllLibrariesType.md deleted file mode 100644 index 289c76f..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesType.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetSearchAllLibrariesType - -The type of media content in the Plex library. This can represent videos, music, or photos. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | movie | -| `TvShow` | show | -| `Season` | season | -| `Episode` | episode | -| `Artist` | artist | -| `Album` | album | -| `Track` | track | -| `PhotoAlbum` | photoalbum | -| `Photo` | photo | -| `Collection` | collection | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesUltraBlurColors.md b/docs/Models/Requests/GetSearchAllLibrariesUltraBlurColors.md deleted file mode 100644 index 7b4e5d1..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesUltraBlurColors.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesUltraBlurColors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `TopLeft` | *string* | :heavy_check_mark: | N/A | 11333b | -| `TopRight` | *string* | :heavy_check_mark: | N/A | 0a232d | -| `BottomRight` | *string* | :heavy_check_mark: | N/A | 73958 | -| `BottomLeft` | *string* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchAllLibrariesWriter.md b/docs/Models/Requests/GetSearchAllLibrariesWriter.md deleted file mode 100644 index c3ab087..0000000 --- a/docs/Models/Requests/GetSearchAllLibrariesWriter.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | -| `Tag` | *string* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the writer. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchLibraryMediaContainer.md b/docs/Models/Requests/GetSearchLibraryMediaContainer.md deleted file mode 100644 index c33c5c5..0000000 --- a/docs/Models/Requests/GetSearchLibraryMediaContainer.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetSearchLibraryMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 2 | -| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | false | -| `Art` | *string* | :heavy_minus_sign: | N/A | /:/resources/show-fanart.jpg | -| `Identifier` | *string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `MediaTagPrefix` | *string* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `MediaTagVersion` | *int* | :heavy_minus_sign: | N/A | 1698860922 | -| `Nocache` | *bool* | :heavy_minus_sign: | N/A | true | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /:/resources/show.png | -| `Title1` | *string* | :heavy_minus_sign: | N/A | TV Shows | -| `Title2` | *string* | :heavy_minus_sign: | N/A | Search for '' | -| `ViewGroup` | *string* | :heavy_minus_sign: | N/A | season | -| `ViewMode` | *int* | :heavy_minus_sign: | N/A | 65593 | -| `Metadata` | List<[GetSearchLibraryMetadata](../../Models/Requests/GetSearchLibraryMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchLibraryMetadata.md b/docs/Models/Requests/GetSearchLibraryMetadata.md deleted file mode 100644 index 7e97bb3..0000000 --- a/docs/Models/Requests/GetSearchLibraryMetadata.md +++ /dev/null @@ -1,27 +0,0 @@ -# GetSearchLibraryMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 2 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/2/children | -| `ParentRatingKey` | *string* | :heavy_minus_sign: | N/A | 1 | -| `Guid` | *string* | :heavy_minus_sign: | N/A | plex://season/602e67e766dfdb002c0a1b5b | -| `ParentGuid` | *string* | :heavy_minus_sign: | N/A | plex://show/5d9c086c7d06d9001ffd27aa | -| `ParentStudio` | *string* | :heavy_minus_sign: | N/A | Mutant Enemy Productions | -| `Type` | *string* | :heavy_minus_sign: | N/A | season | -| `Title` | *string* | :heavy_minus_sign: | N/A | Season 1 | -| `ParentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/1 | -| `ParentTitle` | *string* | :heavy_minus_sign: | N/A | Firefly | -| `Summary` | *string* | :heavy_minus_sign: | N/A | Captain Malcolm 'Mal' Reynolds is a former galactic war veteran who is the captain of the transport ship "Serenity". Mal and his crew, ensign Zoe Alleyne Washburne; Zoe's husband, pilot Hoban 'Wash' Washburne; muscular mercenary Jayne Cobb; young mechanic Kaylee Frye; former Alliance medical officer Simon Tam; his disturbed teenage sister River (both on the run from the interplanetary government "The Alliance"); the beautiful courtesan Inara Serra; and preacher Shepherd Book do any jobs, legal or illegal, they can find as the Serenity crew travels across the outskirts of outer space. | -| `Index` | *int* | :heavy_minus_sign: | N/A | 1 | -| `ParentIndex` | *int* | :heavy_minus_sign: | N/A | 1 | -| `ParentYear` | *int* | :heavy_minus_sign: | N/A | 2002 | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/2/thumb/1705636920 | -| `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/1/art/1705636920 | -| `ParentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/1/thumb/1705636920 | -| `ParentTheme` | *string* | :heavy_minus_sign: | N/A | /library/metadata/1/theme/1705636920 | -| `AddedAt` | *int* | :heavy_minus_sign: | N/A | 1705636916 | -| `UpdatedAt` | *int* | :heavy_minus_sign: | N/A | 1705636920 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchLibraryQueryParamType.md b/docs/Models/Requests/GetSearchLibraryQueryParamType.md deleted file mode 100644 index 698cb53..0000000 --- a/docs/Models/Requests/GetSearchLibraryQueryParamType.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetSearchLibraryQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | 1 | -| `TvShow` | 2 | -| `Season` | 3 | -| `Episode` | 4 | -| `Artist` | 5 | -| `Album` | 6 | -| `Track` | 7 | -| `PhotoAlbum` | 8 | -| `Photo` | 9 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchLibraryRequest.md b/docs/Models/Requests/GetSearchLibraryRequest.md deleted file mode 100644 index d6e19bc..0000000 --- a/docs/Models/Requests/GetSearchLibraryRequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSearchLibraryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `Type` | [GetSearchLibraryQueryParamType](../../Models/Requests/GetSearchLibraryQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchLibraryResponse.md b/docs/Models/Requests/GetSearchLibraryResponse.md deleted file mode 100644 index be8d629..0000000 --- a/docs/Models/Requests/GetSearchLibraryResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchLibraryResponse - - -## 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` | [GetSearchLibraryResponseBody](../../Models/Requests/GetSearchLibraryResponseBody.md) | :heavy_minus_sign: | The contents of the library by section and type | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchLibraryResponseBody.md b/docs/Models/Requests/GetSearchLibraryResponseBody.md deleted file mode 100644 index 97a8b3f..0000000 --- a/docs/Models/Requests/GetSearchLibraryResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchLibraryResponseBody - -The contents of the library by section and type - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetSearchLibraryMediaContainer](../../Models/Requests/GetSearchLibraryMediaContainer.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 deleted file mode 100644 index dc42356..0000000 --- a/docs/Models/Requests/GetSearchResultsCountry.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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 deleted file mode 100644 index d5fcccd..0000000 --- a/docs/Models/Requests/GetSearchResultsDirector.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/GetSearchResultsGenre.md b/docs/Models/Requests/GetSearchResultsGenre.md deleted file mode 100644 index 208de7b..0000000 --- a/docs/Models/Requests/GetSearchResultsGenre.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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 deleted file mode 100644 index efb5c54..0000000 --- a/docs/Models/Requests/GetSearchResultsMedia.md +++ /dev/null @@ -1,22 +0,0 @@ -# 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 deleted file mode 100644 index f18a31a..0000000 --- a/docs/Models/Requests/GetSearchResultsMediaContainer.md +++ /dev/null @@ -1,13 +0,0 @@ -# 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 deleted file mode 100644 index 74c4b6b..0000000 --- a/docs/Models/Requests/GetSearchResultsMetadata.md +++ /dev/null @@ -1,41 +0,0 @@ -# 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 deleted file mode 100644 index ecbafb8..0000000 --- a/docs/Models/Requests/GetSearchResultsPart.md +++ /dev/null @@ -1,15 +0,0 @@ -# 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 deleted file mode 100644 index 7318f58..0000000 --- a/docs/Models/Requests/GetSearchResultsRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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 deleted file mode 100644 index 4d03fc5..0000000 --- a/docs/Models/Requests/GetSearchResultsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 | -| `Object` | [GetSearchResultsResponseBody](../../Models/Requests/GetSearchResultsResponseBody.md) | :heavy_minus_sign: | Search Results | \ No newline at end of file diff --git a/docs/Models/Requests/GetSearchResultsResponseBody.md b/docs/Models/Requests/GetSearchResultsResponseBody.md deleted file mode 100644 index a83af07..0000000 --- a/docs/Models/Requests/GetSearchResultsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 deleted file mode 100644 index eb237ce..0000000 --- a/docs/Models/Requests/GetSearchResultsRole.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/GetSearchResultsWriter.md b/docs/Models/Requests/GetSearchResultsWriter.md deleted file mode 100644 index 13536fa..0000000 --- a/docs/Models/Requests/GetSearchResultsWriter.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/GetSectionFiltersMediaContainer.md b/docs/Models/Requests/GetSectionFiltersMediaContainer.md new file mode 100644 index 0000000..20e7dfe --- /dev/null +++ b/docs/Models/Requests/GetSectionFiltersMediaContainer.md @@ -0,0 +1,17 @@ +# GetSectionFiltersMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Directory` | List<[Models.Components.Directory](../../Models/Components/Directory.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionFiltersRequest.md b/docs/Models/Requests/GetSectionFiltersRequest.md new file mode 100644 index 0000000..2ab609a --- /dev/null +++ b/docs/Models/Requests/GetSectionFiltersRequest.md @@ -0,0 +1,19 @@ +# GetSectionFiltersRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionFiltersResponse.md b/docs/Models/Requests/GetSectionFiltersResponse.md new file mode 100644 index 0000000..68b803e --- /dev/null +++ b/docs/Models/Requests/GetSectionFiltersResponse.md @@ -0,0 +1,11 @@ +# GetSectionFiltersResponse + + +## 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` | [GetSectionFiltersResponseBody](../../Models/Requests/GetSectionFiltersResponseBody.md) | :heavy_minus_sign: | The filters on the section | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionFiltersResponseBody.md b/docs/Models/Requests/GetSectionFiltersResponseBody.md new file mode 100644 index 0000000..24357b4 --- /dev/null +++ b/docs/Models/Requests/GetSectionFiltersResponseBody.md @@ -0,0 +1,10 @@ +# GetSectionFiltersResponseBody + +The filters on the section + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetSectionFiltersMediaContainer](../../Models/Requests/GetSectionFiltersMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionHubsMediaContainer.md b/docs/Models/Requests/GetSectionHubsMediaContainer.md new file mode 100644 index 0000000..887cef1 --- /dev/null +++ b/docs/Models/Requests/GetSectionHubsMediaContainer.md @@ -0,0 +1,17 @@ +# GetSectionHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Hub` | List<[Models.Components.Hub](../../Models/Components/Hub.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionHubsRequest.md b/docs/Models/Requests/GetSectionHubsRequest.md new file mode 100644 index 0000000..a286b47 --- /dev/null +++ b/docs/Models/Requests/GetSectionHubsRequest.md @@ -0,0 +1,21 @@ +# GetSectionHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | The section ID for the hubs to fetch | | +| `Count` | *long* | :heavy_minus_sign: | Limit results to count items | | +| `OnlyTransient` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionHubsResponse.md b/docs/Models/Requests/GetSectionHubsResponse.md new file mode 100644 index 0000000..7c97341 --- /dev/null +++ b/docs/Models/Requests/GetSectionHubsResponse.md @@ -0,0 +1,12 @@ +# GetSectionHubsResponse + + +## 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` | [GetSectionHubsResponseBody](../../Models/Requests/GetSectionHubsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionHubsResponseBody.md b/docs/Models/Requests/GetSectionHubsResponseBody.md new file mode 100644 index 0000000..3df1ec2 --- /dev/null +++ b/docs/Models/Requests/GetSectionHubsResponseBody.md @@ -0,0 +1,10 @@ +# GetSectionHubsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetSectionHubsMediaContainer](../../Models/Requests/GetSectionHubsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionImageRequest.md b/docs/Models/Requests/GetSectionImageRequest.md new file mode 100644 index 0000000..074b711 --- /dev/null +++ b/docs/Models/Requests/GetSectionImageRequest.md @@ -0,0 +1,22 @@ +# GetSectionImageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | +| `UpdatedAt` | *long* | :heavy_check_mark: | The update time of the image. Used for busting cache. | | +| `MediaQuery` | [MediaQuery](../../Models/Components/MediaQuery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | +| `Composite` | [Composite](../../Models/Components/Composite.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionImageResponse.md b/docs/Models/Requests/GetSectionImageResponse.md new file mode 100644 index 0000000..a07eaa4 --- /dev/null +++ b/docs/Models/Requests/GetSectionImageResponse.md @@ -0,0 +1,10 @@ +# GetSectionImageResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionPreferencesRequest.md b/docs/Models/Requests/GetSectionPreferencesRequest.md new file mode 100644 index 0000000..944677c --- /dev/null +++ b/docs/Models/Requests/GetSectionPreferencesRequest.md @@ -0,0 +1,20 @@ +# GetSectionPreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | +| `Agent` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionPreferencesResponse.md b/docs/Models/Requests/GetSectionPreferencesResponse.md new file mode 100644 index 0000000..f0ae13a --- /dev/null +++ b/docs/Models/Requests/GetSectionPreferencesResponse.md @@ -0,0 +1,11 @@ +# GetSectionPreferencesResponse + + +## 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 | +| `MediaContainerWithSettings` | [MediaContainerWithSettings](../../Models/Components/MediaContainerWithSettings.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionsMediaContainer.md b/docs/Models/Requests/GetSectionsMediaContainer.md new file mode 100644 index 0000000..6910fe9 --- /dev/null +++ b/docs/Models/Requests/GetSectionsMediaContainer.md @@ -0,0 +1,19 @@ +# GetSectionsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | +| `Directory` | List<[LibrarySection](../../Models/Components/LibrarySection.md)> | :heavy_minus_sign: | N/A | +| `Title1` | *string* | :heavy_minus_sign: | Typically just "Plex Library" | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionsPrefsRequest.md b/docs/Models/Requests/GetSectionsPrefsRequest.md new file mode 100644 index 0000000..d53d4a4 --- /dev/null +++ b/docs/Models/Requests/GetSectionsPrefsRequest.md @@ -0,0 +1,20 @@ +# GetSectionsPrefsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Type` | *long* | :heavy_check_mark: | The metadata type | | +| `Agent` | *string* | :heavy_minus_sign: | The metadata agent in use | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionsPrefsResponse.md b/docs/Models/Requests/GetSectionsPrefsResponse.md new file mode 100644 index 0000000..b1391c4 --- /dev/null +++ b/docs/Models/Requests/GetSectionsPrefsResponse.md @@ -0,0 +1,11 @@ +# GetSectionsPrefsResponse + + +## 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 | +| `RequestHandlerSlashGetResponses200` | [RequestHandlerSlashGetResponses200](../../Models/Components/RequestHandlerSlashGetResponses200.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionsResponse.md b/docs/Models/Requests/GetSectionsResponse.md new file mode 100644 index 0000000..44a7cef --- /dev/null +++ b/docs/Models/Requests/GetSectionsResponse.md @@ -0,0 +1,12 @@ +# GetSectionsResponse + + +## 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` | [GetSectionsResponseBody](../../Models/Requests/GetSectionsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSectionsResponseBody.md b/docs/Models/Requests/GetSectionsResponseBody.md new file mode 100644 index 0000000..9b8517c --- /dev/null +++ b/docs/Models/Requests/GetSectionsResponseBody.md @@ -0,0 +1,10 @@ +# GetSectionsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `MediaContainer` | [GetSectionsMediaContainer](../../Models/Requests/GetSectionsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerActivitiesMediaContainer.md b/docs/Models/Requests/GetServerActivitiesMediaContainer.md deleted file mode 100644 index 8029482..0000000 --- a/docs/Models/Requests/GetServerActivitiesMediaContainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# 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 deleted file mode 100644 index 7753dfb..0000000 --- a/docs/Models/Requests/GetServerActivitiesResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 | -| `Object` | [GetServerActivitiesResponseBody](../../Models/Requests/GetServerActivitiesResponseBody.md) | :heavy_minus_sign: | The Server Activities | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerActivitiesResponseBody.md b/docs/Models/Requests/GetServerActivitiesResponseBody.md deleted file mode 100644 index e4dfac8..0000000 --- a/docs/Models/Requests/GetServerActivitiesResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 deleted file mode 100644 index 3030890..0000000 --- a/docs/Models/Requests/GetServerCapabilitiesResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 | -| `Object` | [GetServerCapabilitiesResponseBody](../../Models/Requests/GetServerCapabilitiesResponseBody.md) | :heavy_minus_sign: | The Server Capabilities | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerCapabilitiesResponseBody.md b/docs/Models/Requests/GetServerCapabilitiesResponseBody.md deleted file mode 100644 index 86281ba..0000000 --- a/docs/Models/Requests/GetServerCapabilitiesResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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/GetServerIdentityMediaContainer.md b/docs/Models/Requests/GetServerIdentityMediaContainer.md deleted file mode 100644 index fc0f9a8..0000000 --- a/docs/Models/Requests/GetServerIdentityMediaContainer.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 deleted file mode 100644 index 2ee8afc..0000000 --- a/docs/Models/Requests/GetServerIdentityResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 | -| `Object` | [GetServerIdentityResponseBody](../../Models/Requests/GetServerIdentityResponseBody.md) | :heavy_minus_sign: | The Server Identity information | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerIdentityResponseBody.md b/docs/Models/Requests/GetServerIdentityResponseBody.md deleted file mode 100644 index 6910b0f..0000000 --- a/docs/Models/Requests/GetServerIdentityResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerIdentityResponseBody - -The Server Identity information - - -## 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/GetServerInfoRequest.md b/docs/Models/Requests/GetServerInfoRequest.md new file mode 100644 index 0000000..96a2339 --- /dev/null +++ b/docs/Models/Requests/GetServerInfoRequest.md @@ -0,0 +1,18 @@ +# GetServerInfoRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerInfoResponse.md b/docs/Models/Requests/GetServerInfoResponse.md new file mode 100644 index 0000000..6e40420 --- /dev/null +++ b/docs/Models/Requests/GetServerInfoResponse.md @@ -0,0 +1,11 @@ +# GetServerInfoResponse + + +## 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 | +| `MediaContainerWithDirectory` | [MediaContainerWithDirectory](../../Models/Components/MediaContainerWithDirectory.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerListMediaContainer.md b/docs/Models/Requests/GetServerListMediaContainer.md deleted file mode 100644 index 954b94f..0000000 --- a/docs/Models/Requests/GetServerListMediaContainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# 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 deleted file mode 100644 index 6139131..0000000 --- a/docs/Models/Requests/GetServerListResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 | -| `Object` | [GetServerListResponseBody](../../Models/Requests/GetServerListResponseBody.md) | :heavy_minus_sign: | List of Servers | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerListResponseBody.md b/docs/Models/Requests/GetServerListResponseBody.md deleted file mode 100644 index 620a466..0000000 --- a/docs/Models/Requests/GetServerListResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 deleted file mode 100644 index 2e68938..0000000 --- a/docs/Models/Requests/GetServerListServer.md +++ /dev/null @@ -1,13 +0,0 @@ -# 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/GetServerPreferencesMediaContainer.md b/docs/Models/Requests/GetServerPreferencesMediaContainer.md deleted file mode 100644 index 764689c..0000000 --- a/docs/Models/Requests/GetServerPreferencesMediaContainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetServerPreferencesMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 161 | -| `Setting` | List<[Setting](../../Models/Requests/Setting.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerPreferencesResponse.md b/docs/Models/Requests/GetServerPreferencesResponse.md deleted file mode 100644 index 5e64dac..0000000 --- a/docs/Models/Requests/GetServerPreferencesResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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: | Server Preferences | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerPreferencesResponseBody.md b/docs/Models/Requests/GetServerPreferencesResponseBody.md deleted file mode 100644 index 5973758..0000000 --- a/docs/Models/Requests/GetServerPreferencesResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerPreferencesResponseBody - -Server Preferences - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetServerPreferencesMediaContainer](../../Models/Requests/GetServerPreferencesMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerResourcesRequest.md b/docs/Models/Requests/GetServerResourcesRequest.md deleted file mode 100644 index ae2e117..0000000 --- a/docs/Models/Requests/GetServerResourcesRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerResourcesRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `IncludeHttps` | [IncludeHttps](../../Models/Requests/IncludeHttps.md) | :heavy_minus_sign: | Include Https entries in the results | 1 | -| `IncludeRelay` | [IncludeRelay](../../Models/Requests/IncludeRelay.md) | :heavy_minus_sign: | Include Relay addresses in the results
E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400
| 1 | -| `IncludeIPv6` | [IncludeIPv6](../../Models/Requests/IncludeIPv6.md) | :heavy_minus_sign: | Include IPv6 entries in the results | 1 | -| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | \ No newline at end of file diff --git a/docs/Models/Requests/GetServerResourcesResponse.md b/docs/Models/Requests/GetServerResourcesResponse.md deleted file mode 100644 index 20fed0f..0000000 --- a/docs/Models/Requests/GetServerResourcesResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerResourcesResponse - - -## 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 | -| `PlexDevices` | List<[PlexDevice](../../Models/Requests/PlexDevice.md)> | :heavy_minus_sign: | List of Plex Devices. This includes Plex hosted servers and clients | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionHistoryMediaContainer.md b/docs/Models/Requests/GetSessionHistoryMediaContainer.md deleted file mode 100644 index f2646eb..0000000 --- a/docs/Models/Requests/GetSessionHistoryMediaContainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSessionHistoryMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 10855 | -| `Metadata` | List<[GetSessionHistoryMetadata](../../Models/Requests/GetSessionHistoryMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionHistoryMetadata.md b/docs/Models/Requests/GetSessionHistoryMetadata.md deleted file mode 100644 index 3fdedeb..0000000 --- a/docs/Models/Requests/GetSessionHistoryMetadata.md +++ /dev/null @@ -1,26 +0,0 @@ -# GetSessionHistoryMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `HistoryKey` | *string* | :heavy_minus_sign: | N/A | /status/sessions/history/1 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/32171 | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 32171 | -| `LibrarySectionID` | *string* | :heavy_minus_sign: | N/A | 2 | -| `ParentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/32170 | -| `GrandparentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/32132 | -| `Title` | *string* | :heavy_minus_sign: | N/A | The Noise That Blue Makes | -| `GrandparentTitle` | *string* | :heavy_minus_sign: | N/A | Taskmaster | -| `Type` | *string* | :heavy_minus_sign: | N/A | episode | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/32171/thumb/-1 | -| `ParentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/32170/thumb/1654134301 | -| `GrandparentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/32132/thumb/1703933346 | -| `GrandparentArt` | *string* | :heavy_minus_sign: | N/A | /library/metadata/32132/art/1703933346 | -| `Index` | *int* | :heavy_minus_sign: | N/A | 1 | -| `ParentIndex` | *int* | :heavy_minus_sign: | N/A | 13 | -| `OriginallyAvailableAt` | [LocalDate](https://nodatime.org/3.1.x/api/NodaTime.LocalDate.html) | :heavy_minus_sign: | N/A | 2022-04-14 00:00:00 +0000 UTC | -| `ViewedAt` | *int* | :heavy_minus_sign: | N/A | 1654139223 | -| `AccountID` | *int* | :heavy_minus_sign: | N/A | 1 | -| `DeviceID` | *int* | :heavy_minus_sign: | N/A | 5 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionHistoryRequest.md b/docs/Models/Requests/GetSessionHistoryRequest.md deleted file mode 100644 index 4fa54bc..0000000 --- a/docs/Models/Requests/GetSessionHistoryRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSessionHistoryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Sort` | *string* | :heavy_minus_sign: | Sorts the results by the specified field followed by the direction (asc, desc)
| | -| `AccountId` | *long* | :heavy_minus_sign: | Filter results by those that are related to a specific users id
| 1 | -| `Filter` | [QueryParamFilter](../../Models/Requests/QueryParamFilter.md) | :heavy_minus_sign: | Filters content by field and direction/equality
(Unknown if viewedAt is the only supported column)
| {
"viewed-at-greater-than": {
"value": "viewedAt\u003e"
},
"viewed-at-greater-than-or-equal-to": {
"value": "viewedAt\u003e=\u003e"
},
"viewed-at-less-than": {
"value": "viewedAt\u003c"
}
} | -| `LibrarySectionID` | *long* | :heavy_minus_sign: | Filters the results based on the id of a valid library section
| 12 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionHistoryResponse.md b/docs/Models/Requests/GetSessionHistoryResponse.md deleted file mode 100644 index febdbc2..0000000 --- a/docs/Models/Requests/GetSessionHistoryResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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: | List of Plex Sessions | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionHistoryResponseBody.md b/docs/Models/Requests/GetSessionHistoryResponseBody.md deleted file mode 100644 index 99acde5..0000000 --- a/docs/Models/Requests/GetSessionHistoryResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionHistoryResponseBody - -List of Plex Sessions - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetSessionHistoryMediaContainer](../../Models/Requests/GetSessionHistoryMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionPlaylistIndexRequest.md b/docs/Models/Requests/GetSessionPlaylistIndexRequest.md new file mode 100644 index 0000000..8cf4267 --- /dev/null +++ b/docs/Models/Requests/GetSessionPlaylistIndexRequest.md @@ -0,0 +1,20 @@ +# GetSessionPlaylistIndexRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SessionId` | *string* | :heavy_check_mark: | The session id | | +| `ConsumerId` | *string* | :heavy_check_mark: | The consumer id | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionPlaylistIndexResponse.md b/docs/Models/Requests/GetSessionPlaylistIndexResponse.md new file mode 100644 index 0000000..b053f74 --- /dev/null +++ b/docs/Models/Requests/GetSessionPlaylistIndexResponse.md @@ -0,0 +1,10 @@ +# GetSessionPlaylistIndexResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionSegmentRequest.md b/docs/Models/Requests/GetSessionSegmentRequest.md new file mode 100644 index 0000000..f45423b --- /dev/null +++ b/docs/Models/Requests/GetSessionSegmentRequest.md @@ -0,0 +1,21 @@ +# GetSessionSegmentRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SessionId` | *string* | :heavy_check_mark: | The session id | | +| `ConsumerId` | *string* | :heavy_check_mark: | The consumer id | | +| `SegmentId` | *string* | :heavy_check_mark: | The segment id | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionSegmentResponse.md b/docs/Models/Requests/GetSessionSegmentResponse.md new file mode 100644 index 0000000..9971848 --- /dev/null +++ b/docs/Models/Requests/GetSessionSegmentResponse.md @@ -0,0 +1,10 @@ +# GetSessionSegmentResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionsMedia.md b/docs/Models/Requests/GetSessionsMedia.md deleted file mode 100644 index 1d3e902..0000000 --- a/docs/Models/Requests/GetSessionsMedia.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetSessionsMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | -| `AudioChannels` | *int* | :heavy_minus_sign: | N/A | 2 | -| `AudioCodec` | *string* | :heavy_minus_sign: | N/A | flac | -| `Bitrate` | *int* | :heavy_minus_sign: | N/A | 1014 | -| `Container` | *string* | :heavy_minus_sign: | N/A | flac | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 186240 | -| `Id` | *string* | :heavy_minus_sign: | N/A | 130355 | -| `Selected` | *bool* | :heavy_minus_sign: | N/A | true | -| `Part` | List<[GetSessionsPart](../../Models/Requests/GetSessionsPart.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionsMediaContainer.md b/docs/Models/Requests/GetSessionsMediaContainer.md deleted file mode 100644 index d01999e..0000000 --- a/docs/Models/Requests/GetSessionsMediaContainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSessionsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 1 | -| `Metadata` | List<[GetSessionsMetadata](../../Models/Requests/GetSessionsMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionsMetadata.md b/docs/Models/Requests/GetSessionsMetadata.md deleted file mode 100644 index 2b07551..0000000 --- a/docs/Models/Requests/GetSessionsMetadata.md +++ /dev/null @@ -1,45 +0,0 @@ -# GetSessionsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | -| `AddedAt` | *int* | :heavy_minus_sign: | N/A | 1705543312 | -| `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/39904/art/1705310687 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 186240 | -| `GrandparentArt` | *string* | :heavy_minus_sign: | N/A | /library/metadata/39904/art/1705310687 | -| `GrandparentGuid` | *string* | :heavy_minus_sign: | N/A | plex://artist/5d07bbfd403c6402904a6480 | -| `GrandparentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/39904 | -| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | N/A | 39904 | -| `GrandparentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/39904/thumb/1705310687 | -| `GrandparentTitle` | *string* | :heavy_minus_sign: | N/A | Green Day | -| `Guid` | *string* | :heavy_minus_sign: | N/A | plex://track/6535834f71f22f36f71a8e8f | -| `Index` | *int* | :heavy_minus_sign: | N/A | 1 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/67085 | -| `LibrarySectionID` | *string* | :heavy_minus_sign: | N/A | 3 | -| `LibrarySectionKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/3 | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | N/A | Music | -| `MusicAnalysisVersion` | *string* | :heavy_minus_sign: | N/A | 1 | -| `OriginalTitle` | *string* | :heavy_minus_sign: | The original untranslated name of the media item when non-english, or the track artist if an audio Item has an album artist | The American Dream Is Killing Me | -| `ParentGuid` | *string* | :heavy_minus_sign: | N/A | plex://album/65394d6d472b8ab03ef47f12 | -| `ParentIndex` | *int* | :heavy_minus_sign: | N/A | 1 | -| `ParentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/67084 | -| `ParentRatingKey` | *string* | :heavy_minus_sign: | N/A | 67084 | -| `ParentStudio` | *string* | :heavy_minus_sign: | N/A | Reprise Records | -| `ParentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/67084/thumb/1705543314 | -| `ParentTitle` | *string* | :heavy_minus_sign: | N/A | Saviors | -| `ParentYear` | *int* | :heavy_minus_sign: | N/A | 2024 | -| `RatingCount` | *int* | :heavy_minus_sign: | N/A | 45885 | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 67085 | -| `SessionKey` | *string* | :heavy_minus_sign: | N/A | 203 | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/67084/thumb/1705543314 | -| `Title` | *string* | :heavy_minus_sign: | N/A | The American Dream Is Killing Me | -| `TitleSort` | *string* | :heavy_minus_sign: | N/A | American Dream Is Killing Me | -| `Type` | *string* | :heavy_minus_sign: | N/A | track | -| `UpdatedAt` | *int* | :heavy_minus_sign: | N/A | 1705543314 | -| `ViewOffset` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Media` | List<[GetSessionsMedia](../../Models/Requests/GetSessionsMedia.md)> | :heavy_minus_sign: | N/A | | -| `User` | [GetSessionsUser](../../Models/Requests/GetSessionsUser.md) | :heavy_minus_sign: | N/A | | -| `Player` | [Player](../../Models/Requests/Player.md) | :heavy_minus_sign: | N/A | | -| `Session` | [Session](../../Models/Requests/Session.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionsPart.md b/docs/Models/Requests/GetSessionsPart.md deleted file mode 100644 index 0f9a4fc..0000000 --- a/docs/Models/Requests/GetSessionsPart.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetSessionsPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `Container` | *string* | :heavy_minus_sign: | N/A | flac | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 186240 | -| `File` | *string* | :heavy_minus_sign: | N/A | /music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac | -| `HasThumbnail` | *string* | :heavy_minus_sign: | N/A | 1 | -| `Id` | *string* | :heavy_minus_sign: | N/A | 130625 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/parts/130625/1705543268/file.flac | -| `Size` | *int* | :heavy_minus_sign: | N/A | 23644000 | -| `Decision` | *string* | :heavy_minus_sign: | N/A | directplay | -| `Selected` | *bool* | :heavy_minus_sign: | N/A | true | -| `Stream` | List<[GetSessionsStream](../../Models/Requests/GetSessionsStream.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionsResponse.md b/docs/Models/Requests/GetSessionsResponse.md index 563b527..71fe086 100644 --- a/docs/Models/Requests/GetSessionsResponse.md +++ b/docs/Models/Requests/GetSessionsResponse.md @@ -8,4 +8,5 @@ | `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: | List of Active Plex Sessions | \ No newline at end of file +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionsResponseBody.md b/docs/Models/Requests/GetSessionsResponseBody.md deleted file mode 100644 index cd0c321..0000000 --- a/docs/Models/Requests/GetSessionsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionsResponseBody - -List of Active Plex Sessions - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| `MediaContainer` | [GetSessionsMediaContainer](../../Models/Requests/GetSessionsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionsStream.md b/docs/Models/Requests/GetSessionsStream.md deleted file mode 100644 index dbe6e89..0000000 --- a/docs/Models/Requests/GetSessionsStream.md +++ /dev/null @@ -1,27 +0,0 @@ -# GetSessionsStream - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- | -| `AlbumGain` | *string* | :heavy_minus_sign: | N/A | -12.94 | -| `AlbumPeak` | *string* | :heavy_minus_sign: | N/A | 1.000000 | -| `AlbumRange` | *string* | :heavy_minus_sign: | N/A | 4.751014 | -| `AudioChannelLayout` | *string* | :heavy_minus_sign: | N/A | stereo | -| `BitDepth` | *int* | :heavy_minus_sign: | N/A | 16 | -| `Bitrate` | *int* | :heavy_minus_sign: | N/A | 1014 | -| `Channels` | *int* | :heavy_minus_sign: | N/A | 2 | -| `Codec` | *string* | :heavy_minus_sign: | N/A | flac | -| `DisplayTitle` | *string* | :heavy_minus_sign: | N/A | FLAC (Stereo) | -| `ExtendedDisplayTitle` | *string* | :heavy_minus_sign: | N/A | FLAC (Stereo) | -| `Gain` | *string* | :heavy_minus_sign: | N/A | -12.94 | -| `Id` | *string* | :heavy_minus_sign: | N/A | 352487 | -| `Index` | *int* | :heavy_minus_sign: | N/A | 0 | -| `Loudness` | *string* | :heavy_minus_sign: | N/A | -5.94 | -| `Lra` | *string* | :heavy_minus_sign: | N/A | 1.74 | -| `Peak` | *string* | :heavy_minus_sign: | N/A | 1.000000 | -| `SamplingRate` | *int* | :heavy_minus_sign: | N/A | 44100 | -| `Selected` | *bool* | :heavy_minus_sign: | N/A | true | -| `StreamType` | *int* | :heavy_minus_sign: | N/A | 2 | -| `Location` | *string* | :heavy_minus_sign: | N/A | direct | \ No newline at end of file diff --git a/docs/Models/Requests/GetSessionsUser.md b/docs/Models/Requests/GetSessionsUser.md deleted file mode 100644 index b6820b4..0000000 --- a/docs/Models/Requests/GetSessionsUser.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionsUser - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `Id` | *string* | :heavy_minus_sign: | N/A | 1 | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661 | -| `Title` | *string* | :heavy_minus_sign: | N/A | Blindkitty38 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSonicPathRequest.md b/docs/Models/Requests/GetSonicPathRequest.md new file mode 100644 index 0000000..9d283a6 --- /dev/null +++ b/docs/Models/Requests/GetSonicPathRequest.md @@ -0,0 +1,23 @@ +# GetSonicPathRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | +| `StartID` | *long* | :heavy_check_mark: | The starting metadata item id | | +| `EndID` | *long* | :heavy_check_mark: | The ending metadata item id | | +| `Count` | *long* | :heavy_minus_sign: | Limit results to count items | | +| `MaxDistance` | *double* | :heavy_minus_sign: | The maximum distance allowed along the path; defaults to 0.25 | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSonicPathResponse.md b/docs/Models/Requests/GetSonicPathResponse.md new file mode 100644 index 0000000..303273f --- /dev/null +++ b/docs/Models/Requests/GetSonicPathResponse.md @@ -0,0 +1,11 @@ +# GetSonicPathResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetSonicallySimilarRequest.md b/docs/Models/Requests/GetSonicallySimilarRequest.md new file mode 100644 index 0000000..9c2d7e6 --- /dev/null +++ b/docs/Models/Requests/GetSonicallySimilarRequest.md @@ -0,0 +1,23 @@ +# GetSonicallySimilarRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | +| `Type` | *long* | :heavy_minus_sign: | The metadata type to fetch (should be 10 for audio track) | | +| `Values` | List<*long*> | :heavy_check_mark: | The music analysis to center the search. Typically obtained from the `musicAnalysis` of a track | | +| `Limit` | *long* | :heavy_minus_sign: | The limit of the number of items to fetch; defaults to 50 | | +| `MaxDistance` | *double* | :heavy_minus_sign: | The maximum distance to search, defaults to 0.25 | | \ No newline at end of file diff --git a/docs/Models/Requests/GetSonicallySimilarResponse.md b/docs/Models/Requests/GetSonicallySimilarResponse.md new file mode 100644 index 0000000..4510223 --- /dev/null +++ b/docs/Models/Requests/GetSonicallySimilarResponse.md @@ -0,0 +1,11 @@ +# GetSonicallySimilarResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetSourceConnectionInformationMediaContainer.md b/docs/Models/Requests/GetSourceConnectionInformationMediaContainer.md new file mode 100644 index 0000000..7382ee4 --- /dev/null +++ b/docs/Models/Requests/GetSourceConnectionInformationMediaContainer.md @@ -0,0 +1,17 @@ +# GetSourceConnectionInformationMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Device` | [Models.Requests.Device](../../Models/Requests/Device.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetSourceConnectionInformationRequest.md b/docs/Models/Requests/GetSourceConnectionInformationRequest.md index e5439ac..1630345 100644 --- a/docs/Models/Requests/GetSourceConnectionInformationRequest.md +++ b/docs/Models/Requests/GetSourceConnectionInformationRequest.md @@ -3,6 +3,18 @@ ## 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 +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Source` | *string* | :heavy_check_mark: | The source identifier with an included prefix. | | +| `Refresh` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Force refresh | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSourceConnectionInformationResponse.md b/docs/Models/Requests/GetSourceConnectionInformationResponse.md index d88ea57..dcbf0c6 100644 --- a/docs/Models/Requests/GetSourceConnectionInformationResponse.md +++ b/docs/Models/Requests/GetSourceConnectionInformationResponse.md @@ -7,4 +7,5 @@ | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | | `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 | \ No newline at end of file +| `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: | OK | \ 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..390df30 --- /dev/null +++ b/docs/Models/Requests/GetSourceConnectionInformationResponseBody.md @@ -0,0 +1,10 @@ +# GetSourceConnectionInformationResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetSourceConnectionInformationMediaContainer](../../Models/Requests/GetSourceConnectionInformationMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetStatisticsDevice.md b/docs/Models/Requests/GetStatisticsDevice.md deleted file mode 100644 index f63a0c5..0000000 --- a/docs/Models/Requests/GetStatisticsDevice.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetStatisticsDevice - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `Id` | *int* | :heavy_minus_sign: | N/A | 208 | -| `Name` | *string* | :heavy_minus_sign: | N/A | Roku Express | -| `Platform` | *string* | :heavy_minus_sign: | N/A | Roku | -| `ClientIdentifier` | *string* | :heavy_minus_sign: | N/A | 793095d235660625108ef785cc7646e9 | -| `CreatedAt` | *int* | :heavy_minus_sign: | N/A | 1706470556 | \ No newline at end of file diff --git a/docs/Models/Requests/GetStatisticsMediaContainer.md b/docs/Models/Requests/GetStatisticsMediaContainer.md deleted file mode 100644 index 163bbd1..0000000 --- a/docs/Models/Requests/GetStatisticsMediaContainer.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetStatisticsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 5497 | -| `Device` | List<[GetStatisticsDevice](../../Models/Requests/GetStatisticsDevice.md)> | :heavy_minus_sign: | N/A | | -| `Account` | List<[Account](../../Models/Requests/Account.md)> | :heavy_minus_sign: | N/A | | -| `StatisticsMedia` | List<[StatisticsMedia](../../Models/Requests/StatisticsMedia.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetStatisticsRequest.md b/docs/Models/Requests/GetStatisticsRequest.md deleted file mode 100644 index 3bbf8c9..0000000 --- a/docs/Models/Requests/GetStatisticsRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetStatisticsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `Timespan` | *long* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | \ No newline at end of file diff --git a/docs/Models/Requests/GetStatisticsResponse.md b/docs/Models/Requests/GetStatisticsResponse.md deleted file mode 100644 index 5842012..0000000 --- a/docs/Models/Requests/GetStatisticsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetStatisticsResponse - - -## 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` | [GetStatisticsResponseBody](../../Models/Requests/GetStatisticsResponseBody.md) | :heavy_minus_sign: | Media Statistics | \ No newline at end of file diff --git a/docs/Models/Requests/GetStatisticsResponseBody.md b/docs/Models/Requests/GetStatisticsResponseBody.md deleted file mode 100644 index b1944a8..0000000 --- a/docs/Models/Requests/GetStatisticsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetStatisticsResponseBody - -Media Statistics - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| `MediaContainer` | [GetStatisticsMediaContainer](../../Models/Requests/GetStatisticsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetStreamLevelsLevel.md b/docs/Models/Requests/GetStreamLevelsLevel.md new file mode 100644 index 0000000..8f5ff2a --- /dev/null +++ b/docs/Models/Requests/GetStreamLevelsLevel.md @@ -0,0 +1,8 @@ +# GetStreamLevelsLevel + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `V` | *double* | :heavy_minus_sign: | The level in db. | \ No newline at end of file diff --git a/docs/Models/Requests/GetStreamLevelsMediaContainer.md b/docs/Models/Requests/GetStreamLevelsMediaContainer.md new file mode 100644 index 0000000..a7e1f9c --- /dev/null +++ b/docs/Models/Requests/GetStreamLevelsMediaContainer.md @@ -0,0 +1,18 @@ +# GetStreamLevelsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Level` | List<[GetStreamLevelsLevel](../../Models/Requests/GetStreamLevelsLevel.md)> | :heavy_minus_sign: | N/A | +| `TotalSamples` | *string* | :heavy_minus_sign: | The total number of samples (as a string) | \ No newline at end of file diff --git a/docs/Models/Requests/GetStreamLevelsRequest.md b/docs/Models/Requests/GetStreamLevelsRequest.md new file mode 100644 index 0000000..dabe431 --- /dev/null +++ b/docs/Models/Requests/GetStreamLevelsRequest.md @@ -0,0 +1,20 @@ +# GetStreamLevelsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `StreamId` | *long* | :heavy_check_mark: | The id of the stream | | +| `Subsample` | *long* | :heavy_minus_sign: | Subsample result down to return only the provided number of samples | | \ No newline at end of file diff --git a/docs/Models/Requests/GetStreamLevelsResponse.md b/docs/Models/Requests/GetStreamLevelsResponse.md new file mode 100644 index 0000000..663a44e --- /dev/null +++ b/docs/Models/Requests/GetStreamLevelsResponse.md @@ -0,0 +1,11 @@ +# GetStreamLevelsResponse + + +## 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` | [GetStreamLevelsResponseBody](../../Models/Requests/GetStreamLevelsResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetStreamLevelsResponseBody.md b/docs/Models/Requests/GetStreamLevelsResponseBody.md new file mode 100644 index 0000000..872df82 --- /dev/null +++ b/docs/Models/Requests/GetStreamLevelsResponseBody.md @@ -0,0 +1,10 @@ +# GetStreamLevelsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetStreamLevelsMediaContainer](../../Models/Requests/GetStreamLevelsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetStreamLoudnessRequest.md b/docs/Models/Requests/GetStreamLoudnessRequest.md new file mode 100644 index 0000000..0418a89 --- /dev/null +++ b/docs/Models/Requests/GetStreamLoudnessRequest.md @@ -0,0 +1,20 @@ +# GetStreamLoudnessRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `StreamId` | *long* | :heavy_check_mark: | The id of the stream | | +| `Subsample` | *long* | :heavy_minus_sign: | Subsample result down to return only the provided number of samples | | \ No newline at end of file diff --git a/docs/Models/Requests/GetStreamLoudnessResponse.md b/docs/Models/Requests/GetStreamLoudnessResponse.md new file mode 100644 index 0000000..2ca4766 --- /dev/null +++ b/docs/Models/Requests/GetStreamLoudnessResponse.md @@ -0,0 +1,11 @@ +# GetStreamLoudnessResponse + + +## 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 | +| `Res` | *string* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetStreamRequest.md b/docs/Models/Requests/GetStreamRequest.md new file mode 100644 index 0000000..4dad366 --- /dev/null +++ b/docs/Models/Requests/GetStreamRequest.md @@ -0,0 +1,23 @@ +# GetStreamRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `StreamId` | *long* | :heavy_check_mark: | The id of the stream | | +| `Ext` | *string* | :heavy_check_mark: | The extension of the stream. Required to fetch the `sub` portion of `idx`/`sub` subtitles | | +| `Encoding` | *string* | :heavy_minus_sign: | The requested encoding for the subtitle (only used for text subtitles) | | +| `Format` | *string* | :heavy_minus_sign: | The requested format for the subtitle to convert the subtitles to (only used for text subtitles) | | +| `AutoAdjustSubtitle` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether the server should attempt to automatically adjust the subtitle timestamps to match the media | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetStreamResponse.md b/docs/Models/Requests/GetStreamResponse.md new file mode 100644 index 0000000..798c1d3 --- /dev/null +++ b/docs/Models/Requests/GetStreamResponse.md @@ -0,0 +1,10 @@ +# GetStreamResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSubscriptionRequest.md b/docs/Models/Requests/GetSubscriptionRequest.md new file mode 100644 index 0000000..7d9262e --- /dev/null +++ b/docs/Models/Requests/GetSubscriptionRequest.md @@ -0,0 +1,21 @@ +# GetSubscriptionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SubscriptionId` | *long* | :heavy_check_mark: | N/A | | +| `IncludeGrabs` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates whether the active grabs should be included as well | 1 | +| `IncludeStorage` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Compute the storage of recorded items desired by this subscription | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetSubscriptionResponse.md b/docs/Models/Requests/GetSubscriptionResponse.md new file mode 100644 index 0000000..95aab19 --- /dev/null +++ b/docs/Models/Requests/GetSubscriptionResponse.md @@ -0,0 +1,11 @@ +# GetSubscriptionResponse + + +## 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 | +| `MediaContainerWithSubscription` | [MediaContainerWithSubscription](../../Models/Components/MediaContainerWithSubscription.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetTagsMediaContainer.md b/docs/Models/Requests/GetTagsMediaContainer.md new file mode 100644 index 0000000..3659720 --- /dev/null +++ b/docs/Models/Requests/GetTagsMediaContainer.md @@ -0,0 +1,17 @@ +# GetTagsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Directory` | List<[Models.Requests.Directory](../../Models/Requests/Directory.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetTagsRequest.md b/docs/Models/Requests/GetTagsRequest.md new file mode 100644 index 0000000..0581f39 --- /dev/null +++ b/docs/Models/Requests/GetTagsRequest.md @@ -0,0 +1,19 @@ +# GetTagsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Type` | *long* | :heavy_minus_sign: | The metadata type to filter by | | \ No newline at end of file diff --git a/docs/Models/Requests/GetTagsResponse.md b/docs/Models/Requests/GetTagsResponse.md new file mode 100644 index 0000000..20dd2da --- /dev/null +++ b/docs/Models/Requests/GetTagsResponse.md @@ -0,0 +1,11 @@ +# GetTagsResponse + + +## 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` | [GetTagsResponseBody](../../Models/Requests/GetTagsResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetTagsResponseBody.md b/docs/Models/Requests/GetTagsResponseBody.md new file mode 100644 index 0000000..62bb0e2 --- /dev/null +++ b/docs/Models/Requests/GetTagsResponseBody.md @@ -0,0 +1,10 @@ +# GetTagsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `MediaContainer` | [GetTagsMediaContainer](../../Models/Requests/GetTagsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetTasksResponse.md b/docs/Models/Requests/GetTasksResponse.md new file mode 100644 index 0000000..ad98d22 --- /dev/null +++ b/docs/Models/Requests/GetTasksResponse.md @@ -0,0 +1,11 @@ +# GetTasksResponse + + +## 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` | [GetTasksResponseBody](../../Models/Requests/GetTasksResponseBody.md) | :heavy_minus_sign: | Butler tasks | \ No newline at end of file diff --git a/docs/Models/Requests/GetTasksResponseBody.md b/docs/Models/Requests/GetTasksResponseBody.md new file mode 100644 index 0000000..b2e09bc --- /dev/null +++ b/docs/Models/Requests/GetTasksResponseBody.md @@ -0,0 +1,10 @@ +# GetTasksResponseBody + +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/GetTemplateMediaContainer.md b/docs/Models/Requests/GetTemplateMediaContainer.md new file mode 100644 index 0000000..3896702 --- /dev/null +++ b/docs/Models/Requests/GetTemplateMediaContainer.md @@ -0,0 +1,17 @@ +# GetTemplateMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `SubscriptionTemplate` | List<[SubscriptionTemplate](../../Models/Requests/SubscriptionTemplate.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetTemplateRequest.md b/docs/Models/Requests/GetTemplateRequest.md new file mode 100644 index 0000000..922f199 --- /dev/null +++ b/docs/Models/Requests/GetTemplateRequest.md @@ -0,0 +1,19 @@ +# GetTemplateRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Guid` | *string* | :heavy_minus_sign: | The guid of the item for which to get the template | plex://episode/5fc70265c40548002d539d23 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTemplateResponse.md b/docs/Models/Requests/GetTemplateResponse.md new file mode 100644 index 0000000..9410657 --- /dev/null +++ b/docs/Models/Requests/GetTemplateResponse.md @@ -0,0 +1,12 @@ +# GetTemplateResponse + + +## 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` | [GetTemplateResponseBody](../../Models/Requests/GetTemplateResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetTemplateResponseBody.md b/docs/Models/Requests/GetTemplateResponseBody.md new file mode 100644 index 0000000..3cc9611 --- /dev/null +++ b/docs/Models/Requests/GetTemplateResponseBody.md @@ -0,0 +1,10 @@ +# GetTemplateResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `MediaContainer` | [GetTemplateMediaContainer](../../Models/Requests/GetTemplateMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetThumbImageRequest.md b/docs/Models/Requests/GetThumbImageRequest.md deleted file mode 100644 index fddedbd..0000000 --- a/docs/Models/Requests/GetThumbImageRequest.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetThumbImageRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | -| `RatingKey` | *long* | :heavy_check_mark: | the id of the library item to return the children of. | 9518 | -| `Width` | *long* | :heavy_check_mark: | N/A | 396 | -| `Height` | *long* | :heavy_check_mark: | N/A | 396 | -| `MinSize` | *long* | :heavy_check_mark: | N/A | 1 | -| `Upscale` | *long* | :heavy_check_mark: | N/A | 1 | -| `XPlexToken` | *string* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf | \ No newline at end of file diff --git a/docs/Models/Requests/GetThumbImageResponse.md b/docs/Models/Requests/GetThumbImageResponse.md deleted file mode 100644 index 2745bcb..0000000 --- a/docs/Models/Requests/GetThumbImageResponse.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetThumbImageResponse - - -## 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 | -| `Bytes` | *byte[]* | :heavy_minus_sign: | Successful response returning an image | -| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetThumbRequest.md b/docs/Models/Requests/GetThumbRequest.md new file mode 100644 index 0000000..53d630e --- /dev/null +++ b/docs/Models/Requests/GetThumbRequest.md @@ -0,0 +1,20 @@ +# GetThumbRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DeviceId` | *long* | :heavy_check_mark: | The ID of the device. | | +| `VersionPathParameter` | *long* | :heavy_check_mark: | A version number of the thumb used for busting cache | | \ No newline at end of file diff --git a/docs/Models/Requests/GetThumbResponse.md b/docs/Models/Requests/GetThumbResponse.md new file mode 100644 index 0000000..dd819fd --- /dev/null +++ b/docs/Models/Requests/GetThumbResponse.md @@ -0,0 +1,10 @@ +# GetThumbResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTimelineRequest.md b/docs/Models/Requests/GetTimelineRequest.md deleted file mode 100644 index 7ff680e..0000000 --- a/docs/Models/Requests/GetTimelineRequest.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetTimelineRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | -| `RatingKey` | *double* | :heavy_check_mark: | The rating key of the media item | 23409 | -| `Key` | *string* | :heavy_check_mark: | The key of the media item to get the timeline for | /library/metadata/23409 | -| `State` | [State](../../Models/Requests/State.md) | :heavy_check_mark: | The state of the media item | playing | -| `HasMDE` | *double* | :heavy_check_mark: | Whether the media item has MDE | 1 | -| `Time` | *double* | :heavy_check_mark: | The time of the media item | 2000 | -| `Duration` | *double* | :heavy_check_mark: | The duration of the media item | 10000 | -| `Context` | *string* | :heavy_check_mark: | The context of the media item | home:hub.continueWatching | -| `PlayQueueItemID` | *double* | :heavy_check_mark: | The play queue item ID of the media item | 1 | -| `PlayBackTime` | *double* | :heavy_check_mark: | The playback time of the media item | 2000 | -| `Row` | *double* | :heavy_check_mark: | The row of the media item | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTimelineResponse.md b/docs/Models/Requests/GetTimelineResponse.md deleted file mode 100644 index c5b8748..0000000 --- a/docs/Models/Requests/GetTimelineResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTokenByPinIdAuthPinContainer.md b/docs/Models/Requests/GetTokenByPinIdAuthPinContainer.md deleted file mode 100644 index de791a6..0000000 --- a/docs/Models/Requests/GetTokenByPinIdAuthPinContainer.md +++ /dev/null @@ -1,21 +0,0 @@ -# GetTokenByPinIdAuthPinContainer - -The Pin with a non-null authToken when it has been verified by the user - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | N/A | 308667304 | -| `Code` | *string* | :heavy_check_mark: | N/A | 7RQZ | -| `Product` | *string* | :heavy_check_mark: | N/A | Tautulli | -| `Trusted` | *bool* | :heavy_minus_sign: | N/A | | -| `Qr` | *string* | :heavy_check_mark: | N/A | https://plex.tv/api/v2/pins/qr/7RQZ | -| `ClientIdentifier` | *string* | :heavy_check_mark: | The X-Client-Identifier used in the request | Tautulli | -| `Location` | [GetTokenByPinIdGeoData](../../Models/Requests/GetTokenByPinIdGeoData.md) | :heavy_check_mark: | Geo location data | {
"code": "VI",
"continent_code": "NA",
"country": "United States Virgin Islands",
"city": "Amsterdam",
"european_union_member": true,
"time_zone": "America/St_Thomas",
"postal_code": 802,
"in_privacy_restricted_country": true,
"in_privacy_restricted_region": true,
"subdivisions": "Saint Thomas",
"coordinates": "18.3381, -64.8941"
} | -| `ExpiresIn` | *long* | :heavy_minus_sign: | The number of seconds this pin expires, by default 900 seconds | 876 | -| `CreatedAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_check_mark: | N/A | 2024-07-16T17:03:05Z | -| `ExpiresAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_check_mark: | N/A | 2024-07-16T17:18:05Z | -| `AuthToken` | *string* | :heavy_minus_sign: | N/A | gcgzw5rz2xovp84b4vha3a40 | -| `NewRegistration` | *object* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetTokenByPinIdGeoData.md b/docs/Models/Requests/GetTokenByPinIdGeoData.md deleted file mode 100644 index a70c299..0000000 --- a/docs/Models/Requests/GetTokenByPinIdGeoData.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetTokenByPinIdGeoData - -Geo location data - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `Code` | *string* | :heavy_check_mark: | The ISO 3166-1 alpha-2 code of the country. | VI | -| `ContinentCode` | *string* | :heavy_check_mark: | The continent code where the country is located. | NA | -| `Country` | *string* | :heavy_check_mark: | The official name of the country. | United States Virgin Islands | -| `City` | *string* | :heavy_check_mark: | The name of the city. | Amsterdam | -| `EuropeanUnionMember` | *bool* | :heavy_minus_sign: | Indicates if the country is a member of the European Union. | true | -| `TimeZone` | *string* | :heavy_check_mark: | The time zone of the country. | America/St_Thomas | -| `PostalCode` | *string* | :heavy_check_mark: | The postal code of the location. | 802 | -| `InPrivacyRestrictedCountry` | *bool* | :heavy_minus_sign: | Indicates if the country has privacy restrictions. | true | -| `InPrivacyRestrictedRegion` | *bool* | :heavy_minus_sign: | Indicates if the region has privacy restrictions. | true | -| `Subdivisions` | *string* | :heavy_check_mark: | The name of the primary administrative subdivision. | Saint Thomas | -| `Coordinates` | *string* | :heavy_check_mark: | The geographical coordinates (latitude, longitude) of the location. | 18.3381, -64.8941 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTokenByPinIdRequest.md b/docs/Models/Requests/GetTokenByPinIdRequest.md deleted file mode 100644 index fbcc31a..0000000 --- a/docs/Models/Requests/GetTokenByPinIdRequest.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetTokenByPinIdRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `PinID` | *long* | :heavy_check_mark: | The PinID to retrieve an access token for | | -| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `ClientName` | *string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku | -| `DeviceNickname` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `ClientVersion` | *string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 | -| `Platform` | *string* | :heavy_minus_sign: | The platform of the client application. | Roku | \ No newline at end of file diff --git a/docs/Models/Requests/GetTokenByPinIdResponse.md b/docs/Models/Requests/GetTokenByPinIdResponse.md deleted file mode 100644 index 757c1a3..0000000 --- a/docs/Models/Requests/GetTokenByPinIdResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenByPinIdResponse - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `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 | | -| `AuthPinContainer` | [GetTokenByPinIdAuthPinContainer](../../Models/Requests/GetTokenByPinIdAuthPinContainer.md) | :heavy_minus_sign: | The Pin with a non-null authToken when it has been verified by the user | {
"id": 308667304,
"code": "7RQZ",
"product": "0",
"trusted": false,
"qr": "https://plex.tv/api/v2/pins/qr/7RQZ",
"clientIdentifier": "string",
"location": {
"code": "VI",
"continent_code": "NA",
"country": "United States Virgin Islands",
"city": "Amsterdam",
"european_union_member": true,
"time_zone": "America/St_Thomas",
"postal_code": 802,
"in_privacy_restricted_country": true,
"in_privacy_restricted_region": true,
"subdivisions": "Saint Thomas",
"coordinates": "18.3381, -64.8941"
},
"expiresIn": 876,
"createdAt": "2024-07-16T17:03:05Z",
"expiresAt": "2024-07-16T17:18:05Z",
"authToken": null,
"newRegistration": null
} | \ No newline at end of file diff --git a/docs/Models/Requests/GetTokenDetailsAuthenticationResponseStatus.md b/docs/Models/Requests/GetTokenDetailsAuthenticationResponseStatus.md deleted file mode 100644 index 47b1ef0..0000000 --- a/docs/Models/Requests/GetTokenDetailsAuthenticationResponseStatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenDetailsAuthenticationResponseStatus - -String representation of subscriptionActive - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `Inactive` | Inactive | -| `Active` | Active | \ No newline at end of file diff --git a/docs/Models/Requests/GetTokenDetailsAuthenticationStatus.md b/docs/Models/Requests/GetTokenDetailsAuthenticationStatus.md deleted file mode 100644 index aec435f..0000000 --- a/docs/Models/Requests/GetTokenDetailsAuthenticationStatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenDetailsAuthenticationStatus - -String representation of subscriptionActive - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `Inactive` | Inactive | -| `Active` | Active | \ No newline at end of file diff --git a/docs/Models/Requests/GetTokenDetailsResponse.md b/docs/Models/Requests/GetTokenDetailsResponse.md deleted file mode 100644 index dab2859..0000000 --- a/docs/Models/Requests/GetTokenDetailsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenDetailsResponse - - -## 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 | -| `UserPlexAccount` | [GetTokenDetailsUserPlexAccount](../../Models/Requests/GetTokenDetailsUserPlexAccount.md) | :heavy_minus_sign: | Logged in user details | \ No newline at end of file diff --git a/docs/Models/Requests/GetTokenDetailsStatus.md b/docs/Models/Requests/GetTokenDetailsStatus.md deleted file mode 100644 index 43e0f7a..0000000 --- a/docs/Models/Requests/GetTokenDetailsStatus.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetTokenDetailsStatus - - -## Values - -| Name | Value | -| --------- | --------- | -| `Online` | online | -| `Offline` | offline | \ No newline at end of file diff --git a/docs/Models/Requests/GetTokenDetailsSubscription.md b/docs/Models/Requests/GetTokenDetailsSubscription.md deleted file mode 100644 index 8cde98e..0000000 --- a/docs/Models/Requests/GetTokenDetailsSubscription.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetTokenDetailsSubscription - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | -| `Features` | List<*string*> | :heavy_minus_sign: | List of features allowed on your Plex Pass subscription | | -| `Active` | *bool* | :heavy_minus_sign: | If the account's Plex Pass subscription is active | true | -| `SubscribedAt` | *string* | :heavy_minus_sign: | Date the account subscribed to Plex Pass | 2021-04-12T18:21:12Z | -| `Status` | [GetTokenDetailsAuthenticationResponseStatus](../../Models/Requests/GetTokenDetailsAuthenticationResponseStatus.md) | :heavy_minus_sign: | String representation of subscriptionActive | Inactive | -| `PaymentService` | *string* | :heavy_minus_sign: | Payment service used for your Plex Pass subscription | | -| `Plan` | *string* | :heavy_minus_sign: | Name of Plex Pass subscription plan | | \ No newline at end of file diff --git a/docs/Models/Requests/GetTokenDetailsUserPlexAccount.md b/docs/Models/Requests/GetTokenDetailsUserPlexAccount.md deleted file mode 100644 index 3980be9..0000000 --- a/docs/Models/Requests/GetTokenDetailsUserPlexAccount.md +++ /dev/null @@ -1,50 +0,0 @@ -# GetTokenDetailsUserPlexAccount - -Logged in user details - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `AdsConsent` | *bool* | :heavy_check_mark: | Unknown | | -| `AdsConsentReminderAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | -| `AdsConsentSetAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | -| `Anonymous` | *bool* | :heavy_minus_sign: | Unknown | | -| `AuthToken` | *string* | :heavy_check_mark: | The account token | CxoUzBTSV5hsxjTpFKaf | -| `BackupCodesCreated` | *bool* | :heavy_minus_sign: | If the two-factor authentication backup codes have been created | | -| `Confirmed` | *bool* | :heavy_minus_sign: | If the account has been confirmed | | -| `Country` | *string* | :heavy_check_mark: | The account country | US | -| `Email` | *string* | :heavy_check_mark: | The account email address | username@email.com | -| `EmailOnlyAuth` | *bool* | :heavy_minus_sign: | If login with email only is enabled | | -| `ExperimentalFeatures` | *bool* | :heavy_minus_sign: | If experimental features are enabled | | -| `FriendlyName` | *string* | :heavy_check_mark: | Your account full name | friendlyUsername | -| `Entitlements` | List<*string*> | :heavy_check_mark: | List of devices your allowed to use with this account | | -| `Guest` | *bool* | :heavy_minus_sign: | If the account is a Plex Home guest user | | -| `HasPassword` | *bool* | :heavy_minus_sign: | If the account has a password | | -| `Home` | *bool* | :heavy_minus_sign: | If the account is a Plex Home user | | -| `HomeAdmin` | *bool* | :heavy_minus_sign: | If the account is the Plex Home admin | | -| `HomeSize` | *int* | :heavy_check_mark: | The number of accounts in the Plex Home | 1 | -| `Id` | *int* | :heavy_check_mark: | The Plex account ID | 13692262 | -| `JoinedAt` | *long* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `Locale` | *string* | :heavy_check_mark: | The account locale | | -| `MailingListActive` | *bool* | :heavy_minus_sign: | If you are subscribed to the Plex newsletter | | -| `MailingListStatus` | [MailingListStatus](../../Models/Requests/MailingListStatus.md) | :heavy_check_mark: | Your current mailing list status (active or unsubscribed) | active | -| `MaxHomeSize` | *int* | :heavy_check_mark: | The maximum number of accounts allowed in the Plex Home | 15 | -| ~~`Pin`~~ | *string* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

[Might be removed] The hashed Plex Home PIN | | -| `Profile` | [UserProfile](../../Models/Requests/UserProfile.md) | :heavy_check_mark: | N/A | | -| `Protected` | *bool* | :heavy_minus_sign: | If the account has a Plex Home PIN enabled | | -| `RememberExpiresAt` | *long* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `Restricted` | *bool* | :heavy_minus_sign: | If the account is a Plex Home managed user | | -| `Roles` | List<*string*> | :heavy_minus_sign: | [Might be removed] List of account roles. Plexpass membership listed here | | -| `ScrobbleTypes` | *string* | :heavy_check_mark: | Unknown | | -| `Services` | List<[Services](../../Models/Requests/Services.md)> | :heavy_check_mark: | N/A | | -| `Subscription` | [Subscription](../../Models/Requests/Subscription.md) | :heavy_check_mark: | If the account’s Plex Pass subscription is active | | -| `SubscriptionDescription` | *string* | :heavy_check_mark: | Description of the Plex Pass subscription | | -| `Subscriptions` | List<[GetTokenDetailsSubscription](../../Models/Requests/GetTokenDetailsSubscription.md)> | :heavy_minus_sign: | N/A | | -| `Thumb` | *string* | :heavy_check_mark: | URL of the account thumbnail | https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101 | -| `Title` | *string* | :heavy_check_mark: | The title of the account (username or friendly name) | UsernameTitle | -| `TwoFactorEnabled` | *bool* | :heavy_minus_sign: | If two-factor authentication is enabled | | -| `Username` | *string* | :heavy_check_mark: | The account username | Username | -| `Uuid` | *string* | :heavy_check_mark: | The account UUID | dae343c1f45beb4f | -| `AttributionPartner` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetTopWatchedContentCountry.md b/docs/Models/Requests/GetTopWatchedContentCountry.md deleted file mode 100644 index d09d97a..0000000 --- a/docs/Models/Requests/GetTopWatchedContentCountry.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTopWatchedContentCountry - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `Id` | *int* | :heavy_minus_sign: | N/A | 116 | -| `Filter` | *string* | :heavy_minus_sign: | N/A | country=116 | -| `Tag` | *string* | :heavy_minus_sign: | N/A | United States of America | \ No newline at end of file diff --git a/docs/Models/Requests/GetTopWatchedContentGenre.md b/docs/Models/Requests/GetTopWatchedContentGenre.md deleted file mode 100644 index d42298f..0000000 --- a/docs/Models/Requests/GetTopWatchedContentGenre.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTopWatchedContentGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Id` | *int* | :heavy_minus_sign: | N/A | 184 | -| `Filter` | *string* | :heavy_minus_sign: | N/A | genre=184 | -| `Tag` | *string* | :heavy_minus_sign: | N/A | Thriller | \ No newline at end of file diff --git a/docs/Models/Requests/GetTopWatchedContentGuids.md b/docs/Models/Requests/GetTopWatchedContentGuids.md deleted file mode 100644 index f4a9081..0000000 --- a/docs/Models/Requests/GetTopWatchedContentGuids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetTopWatchedContentGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Id` | *string* | :heavy_minus_sign: | N/A | tvdb://2337 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTopWatchedContentMediaContainer.md b/docs/Models/Requests/GetTopWatchedContentMediaContainer.md deleted file mode 100644 index 16175b8..0000000 --- a/docs/Models/Requests/GetTopWatchedContentMediaContainer.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetTopWatchedContentMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `AllowSync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `MediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `MediaTagVersion` | *long* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `Metadata` | List<[GetTopWatchedContentMetadata](../../Models/Requests/GetTopWatchedContentMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetTopWatchedContentMetadata.md b/docs/Models/Requests/GetTopWatchedContentMetadata.md deleted file mode 100644 index e0c446d..0000000 --- a/docs/Models/Requests/GetTopWatchedContentMetadata.md +++ /dev/null @@ -1,39 +0,0 @@ -# GetTopWatchedContentMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | 17 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/17 | -| `Guid` | *string* | :heavy_minus_sign: | N/A | plex://movie/5d77683f6f4521001ea9dc53 | -| `Slug` | *string* | :heavy_minus_sign: | N/A | waterloo-road | -| `Studio` | *string* | :heavy_minus_sign: | N/A | Universal Pictures | -| `Type` | *string* | :heavy_minus_sign: | N/A | movie | -| `Title` | *string* | :heavy_minus_sign: | N/A | Serenity | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | N/A | Movies | -| `LibrarySectionID` | *int* | :heavy_minus_sign: | N/A | 1 | -| `LibrarySectionKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/1 | -| `ContentRating` | *string* | :heavy_minus_sign: | N/A | PG-13 | -| `Summary` | *string* | :heavy_minus_sign: | N/A | Serenity continues the story of the TV series it was based upon ("Firefly"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job. | -| `Index` | *long* | :heavy_minus_sign: | N/A | 1 | -| `AudienceRating` | *double* | :heavy_minus_sign: | N/A | 9.1 | -| `Year` | *int* | :heavy_minus_sign: | N/A | 2005 | -| `Tagline` | *string* | :heavy_minus_sign: | N/A | They aim to misbehave. | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/17/thumb/1705637165 | -| `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/17/art/1705637165 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 141417 | -| `OriginallyAvailableAt` | [LocalDate](https://nodatime.org/3.1.x/api/NodaTime.LocalDate.html) | :heavy_minus_sign: | N/A | 2005-09-29 00:00:00 +0000 UTC | -| `LeafCount` | *long* | :heavy_minus_sign: | N/A | 222 | -| `ViewedLeafCount` | *long* | :heavy_minus_sign: | N/A | 100 | -| `ChildCount` | *long* | :heavy_minus_sign: | N/A | 13 | -| `AddedAt` | *int* | :heavy_minus_sign: | N/A | 1705637164 | -| `UpdatedAt` | *int* | :heavy_minus_sign: | N/A | 1705637165 | -| `GlobalViewCount` | *long* | :heavy_minus_sign: | N/A | 80 | -| `AudienceRatingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | -| `Genre` | List<[GetTopWatchedContentGenre](../../Models/Requests/GetTopWatchedContentGenre.md)> | :heavy_minus_sign: | N/A | | -| `Country` | List<[GetTopWatchedContentCountry](../../Models/Requests/GetTopWatchedContentCountry.md)> | :heavy_minus_sign: | N/A | | -| `Guids` | List<[GetTopWatchedContentGuids](../../Models/Requests/GetTopWatchedContentGuids.md)> | :heavy_minus_sign: | N/A | | -| `Role` | List<[GetTopWatchedContentRole](../../Models/Requests/GetTopWatchedContentRole.md)> | :heavy_minus_sign: | N/A | | -| `User` | List<[GetTopWatchedContentUser](../../Models/Requests/GetTopWatchedContentUser.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetTopWatchedContentQueryParamIncludeGuids.md b/docs/Models/Requests/GetTopWatchedContentQueryParamIncludeGuids.md deleted file mode 100644 index 22fb318..0000000 --- a/docs/Models/Requests/GetTopWatchedContentQueryParamIncludeGuids.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetTopWatchedContentQueryParamIncludeGuids - -Adds the Guid object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTopWatchedContentQueryParamType.md b/docs/Models/Requests/GetTopWatchedContentQueryParamType.md deleted file mode 100644 index a2fedd2..0000000 --- a/docs/Models/Requests/GetTopWatchedContentQueryParamType.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetTopWatchedContentQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Movie` | 1 | -| `TvShow` | 2 | -| `Season` | 3 | -| `Episode` | 4 | -| `Artist` | 5 | -| `Album` | 6 | -| `Track` | 7 | -| `PhotoAlbum` | 8 | -| `Photo` | 9 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTopWatchedContentRequest.md b/docs/Models/Requests/GetTopWatchedContentRequest.md deleted file mode 100644 index d62f37f..0000000 --- a/docs/Models/Requests/GetTopWatchedContentRequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetTopWatchedContentRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Type` | [GetTopWatchedContentQueryParamType](../../Models/Requests/GetTopWatchedContentQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `IncludeGuids` | [GetTopWatchedContentQueryParamIncludeGuids](../../Models/Requests/GetTopWatchedContentQueryParamIncludeGuids.md) | :heavy_minus_sign: | Adds the Guid object to the response
| 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTopWatchedContentResponse.md b/docs/Models/Requests/GetTopWatchedContentResponse.md deleted file mode 100644 index 286fd56..0000000 --- a/docs/Models/Requests/GetTopWatchedContentResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTopWatchedContentResponse - - -## 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` | [GetTopWatchedContentResponseBody](../../Models/Requests/GetTopWatchedContentResponseBody.md) | :heavy_minus_sign: | The metadata of the library item. | \ No newline at end of file diff --git a/docs/Models/Requests/GetTopWatchedContentResponseBody.md b/docs/Models/Requests/GetTopWatchedContentResponseBody.md deleted file mode 100644 index ed2cf71..0000000 --- a/docs/Models/Requests/GetTopWatchedContentResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTopWatchedContentResponseBody - -The metadata of the library item. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetTopWatchedContentMediaContainer](../../Models/Requests/GetTopWatchedContentMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetTopWatchedContentRole.md b/docs/Models/Requests/GetTopWatchedContentRole.md deleted file mode 100644 index d09586e..0000000 --- a/docs/Models/Requests/GetTopWatchedContentRole.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetTopWatchedContentRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_minus_sign: | N/A | 220 | -| `Filter` | *string* | :heavy_minus_sign: | N/A | actor=220 | -| `Tag` | *string* | :heavy_minus_sign: | N/A | Dennis Keiffer | -| `TagKey` | *string* | :heavy_minus_sign: | N/A | 5d77683554f42c001f8c4708 | -| `Role` | *string* | :heavy_minus_sign: | N/A | Bar Guy (uncredited) | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | https://metadata-static.plex.tv/6/people/648e9a7ea1d537bccfcd7615134b78ce.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetTopWatchedContentUser.md b/docs/Models/Requests/GetTopWatchedContentUser.md deleted file mode 100644 index 88b3d85..0000000 --- a/docs/Models/Requests/GetTopWatchedContentUser.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetTopWatchedContentUser - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Id` | *int* | :heavy_minus_sign: | N/A | 220 | \ No newline at end of file diff --git a/docs/Models/Requests/GetTranscodeSessionsMediaContainer.md b/docs/Models/Requests/GetTranscodeSessionsMediaContainer.md deleted file mode 100644 index 8589f5b..0000000 --- a/docs/Models/Requests/GetTranscodeSessionsMediaContainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetTranscodeSessionsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `Size` | *int* | :heavy_minus_sign: | N/A | 1 | -| `TranscodeSession` | List<[TranscodeSession](../../Models/Requests/TranscodeSession.md)> | :heavy_minus_sign: | N/A | [
{
"key": "vv3i2q2lax92qlzul1hbd4bx",
"throttled": false,
"complete": false,
"progress": 1.7999999523162842,
"size": -22,
"speed": 25.100000381469727,
"error": false,
"duration": 1445695,
"remaining": 53,
"context": "streaming",
"sourceVideoCodec": "h264",
"sourceAudioCodec": "aac",
"videoDecision": "transcode",
"audioDecision": "transcode",
"subtitleDecision": "burn",
"protocol": "http",
"container": "mkv",
"videoCodec": "h264",
"audioCodec": "opus",
"audioChannels": 1,
"transcodeHwRequested": true,
"timeStamp": 1705895805.4919229,
"maxOffsetAvailable": 29.53,
"minOffsetAvailable": 3.003000020980835
}
] | \ No newline at end of file diff --git a/docs/Models/Requests/GetTranscodeSessionsResponse.md b/docs/Models/Requests/GetTranscodeSessionsResponse.md deleted file mode 100644 index 9edb562..0000000 --- a/docs/Models/Requests/GetTranscodeSessionsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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 | -| `Object` | [GetTranscodeSessionsResponseBody](../../Models/Requests/GetTranscodeSessionsResponseBody.md) | :heavy_minus_sign: | The Transcode Sessions | \ No newline at end of file diff --git a/docs/Models/Requests/GetTranscodeSessionsResponseBody.md b/docs/Models/Requests/GetTranscodeSessionsResponseBody.md deleted file mode 100644 index ec01d26..0000000 --- a/docs/Models/Requests/GetTranscodeSessionsResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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/GetTransientTokenMediaContainer.md b/docs/Models/Requests/GetTransientTokenMediaContainer.md new file mode 100644 index 0000000..36e718e --- /dev/null +++ b/docs/Models/Requests/GetTransientTokenMediaContainer.md @@ -0,0 +1,17 @@ +# GetTransientTokenMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Token` | *string* | :heavy_minus_sign: | The transient token | \ No newline at end of file diff --git a/docs/Models/Requests/GetTransientTokenQueryParamType.md b/docs/Models/Requests/GetTransientTokenQueryParamType.md deleted file mode 100644 index ed8d4a4..0000000 --- a/docs/Models/Requests/GetTransientTokenQueryParamType.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTransientTokenQueryParamType - -`delegation` - This is the only supported `type` parameter. - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Delegation` | delegation | \ No newline at end of file diff --git a/docs/Models/Requests/GetTransientTokenRequest.md b/docs/Models/Requests/GetTransientTokenRequest.md index 8974dbc..c256fa5 100644 --- a/docs/Models/Requests/GetTransientTokenRequest.md +++ b/docs/Models/Requests/GetTransientTokenRequest.md @@ -3,7 +3,18 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| `Type` | [GetTransientTokenQueryParamType](../../Models/Requests/GetTransientTokenQueryParamType.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 +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Type` | [QueryParamType](../../Models/Requests/QueryParamType.md) | :heavy_check_mark: | The value `delegation` is the only supported `type` parameter. | | +| `Scope` | [Scope](../../Models/Requests/Scope.md) | :heavy_check_mark: | The value `all` is the only supported `scope` parameter. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetTransientTokenResponse.md b/docs/Models/Requests/GetTransientTokenResponse.md index de13191..0c3e71d 100644 --- a/docs/Models/Requests/GetTransientTokenResponse.md +++ b/docs/Models/Requests/GetTransientTokenResponse.md @@ -7,4 +7,5 @@ | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | | `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 | \ No newline at end of file +| `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: | OK | \ 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..7d99d34 --- /dev/null +++ b/docs/Models/Requests/GetTransientTokenResponseBody.md @@ -0,0 +1,10 @@ +# GetTransientTokenResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetTransientTokenMediaContainer](../../Models/Requests/GetTransientTokenMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetUpdateStatusMediaContainer.md b/docs/Models/Requests/GetUpdateStatusMediaContainer.md deleted file mode 100644 index ad83342..0000000 --- a/docs/Models/Requests/GetUpdateStatusMediaContainer.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetUpdateStatusMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Size` | *int* | :heavy_minus_sign: | N/A | 1 | -| `CanInstall` | *bool* | :heavy_minus_sign: | N/A | false | -| `CheckedAt` | *int* | :heavy_minus_sign: | N/A | 1705801232 | -| `DownloadURL` | *string* | :heavy_minus_sign: | N/A | https://plex.tv/downloads/latest/5?channel=8&build=linux-x86_64&distro=redhat&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx | -| `Status` | *int* | :heavy_minus_sign: | N/A | 0 | -| `Release` | List<[Release](../../Models/Requests/Release.md)> | :heavy_minus_sign: | N/A | [
{
"key": "https://plex.tv/updater/releases/5136",
"version": "1.40.0.7775-456fbaf97",
"added": "(PLEASE NOTE) This version makes changes to the database which will make it compatible only with server versions 1.31.2 or higher (released March 14). You will not be able to use your database on Plex Media Server versions lower than this after this update. Please also be patient when updating to this version if you have a very large database and allow the upgrade process to finish.\n(Collections) Items added to a collection from the item context menu will now lock the collection field on the items (#12793)\n(Music) Store track genres and add filtering options (#14653)\n(Music) Support ID3v2.4 null-separated tags for genres and release type (#14653)\n(View History) No longer create a view history entry for items marked as played (#10888)\n(Web) Updated to 4.118.0",
"fixed": "(Agents) Changing a 'Other Videos' type library to the modern movie agent would fail (#14483)\n(Agents) It is possible that agents are not initialised during startup on rare occasions (#14654)\n(Agents) Remove the legacy OpenSubtitles agent which is no longer supported upstream (#14667)\n(Collection) Server could become unresponsive when collection membership changes (#14612)\n(DVR) Previously watched recordings could be deleted without being watched again (#13779)\n(Libraries) When performing fix match on items from certain music libraries the language would default to Arabic (#14501)\n(Library) The Content Rating not equal to None filter does not work (#14620)\n(Search) Album search results could contain all the album's tracks too (#14486)\n(Subtitles) In some circumstances, sidecar subtitles can show up for media when they're no longer available (#14674)\n(Transcoder) HW encoding would fail on devices with no rate control (#14222)\n(Transcoder) Software transcoding on Ubuntu could cause unexpected behavior (#14605)",
"downloadURL": "https://plex.tv/downloads/latest/5?channel=8\u0026build=linux-x86_64\u0026distro=redhat\u0026X-Plex-Token=xxxxxxxxxxxxxxxxxxxx",
"state": "notify"
}
] | \ No newline at end of file diff --git a/docs/Models/Requests/GetUpdateStatusResponse.md b/docs/Models/Requests/GetUpdateStatusResponse.md deleted file mode 100644 index 23214a6..0000000 --- a/docs/Models/Requests/GetUpdateStatusResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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: | The Server Updates | \ No newline at end of file diff --git a/docs/Models/Requests/GetUpdateStatusResponseBody.md b/docs/Models/Requests/GetUpdateStatusResponseBody.md deleted file mode 100644 index 7236428..0000000 --- a/docs/Models/Requests/GetUpdateStatusResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUpdateStatusResponseBody - -The Server Updates - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `MediaContainer` | [GetUpdateStatusMediaContainer](../../Models/Requests/GetUpdateStatusMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetUpdatesStatusMediaContainer.md b/docs/Models/Requests/GetUpdatesStatusMediaContainer.md new file mode 100644 index 0000000..d5cf091 --- /dev/null +++ b/docs/Models/Requests/GetUpdatesStatusMediaContainer.md @@ -0,0 +1,13 @@ +# GetUpdatesStatusMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `AutoUpdateVersion` | *long* | :heavy_minus_sign: | The version of the updater (currently `1`) | +| `CanInstall` | *bool* | :heavy_minus_sign: | Indicates whether this install can be updated through these endpoints (typically only on MacOS and Windows) | +| `CheckedAt` | *long* | :heavy_minus_sign: | The last time a check for updates was performed | +| `DownloadURL` | *string* | :heavy_minus_sign: | The URL where the update is available | +| `Release` | List<[Release](../../Models/Requests/Release.md)> | :heavy_minus_sign: | N/A | +| `Status` | *long* | :heavy_minus_sign: | The current error code (`0` means no error) | \ No newline at end of file diff --git a/docs/Models/Requests/GetUpdatesStatusResponse.md b/docs/Models/Requests/GetUpdatesStatusResponse.md new file mode 100644 index 0000000..7bb961a --- /dev/null +++ b/docs/Models/Requests/GetUpdatesStatusResponse.md @@ -0,0 +1,11 @@ +# GetUpdatesStatusResponse + + +## 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` | [GetUpdatesStatusResponseBody](../../Models/Requests/GetUpdatesStatusResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/GetUpdatesStatusResponseBody.md b/docs/Models/Requests/GetUpdatesStatusResponseBody.md new file mode 100644 index 0000000..2fe238d --- /dev/null +++ b/docs/Models/Requests/GetUpdatesStatusResponseBody.md @@ -0,0 +1,10 @@ +# GetUpdatesStatusResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `MediaContainer` | [GetUpdatesStatusMediaContainer](../../Models/Requests/GetUpdatesStatusMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetUpdatesStatusState.md b/docs/Models/Requests/GetUpdatesStatusState.md new file mode 100644 index 0000000..5b285d6 --- /dev/null +++ b/docs/Models/Requests/GetUpdatesStatusState.md @@ -0,0 +1,29 @@ +# GetUpdatesStatusState + +The status of this update. + +- available - This release is available +- downloading - This release is downloading +- downloaded - This release has been downloaded +- installing - This release is installing +- tonight - This release will be installed tonight +- skipped - This release has been skipped +- error - This release has an error +- notify - This release is only notifying it is available (typically because it cannot be installed on this setup) +- done - This release is complete + + + +## Values + +| Name | Value | +| ------------- | ------------- | +| `Available` | available | +| `Downloading` | downloading | +| `Downloaded` | downloaded | +| `Installing` | installing | +| `Tonight` | tonight | +| `Skipped` | skipped | +| `Error` | error | +| `Notify` | notify | +| `Done` | done | \ No newline at end of file diff --git a/docs/Models/Requests/GetUserFriendsResponse.md b/docs/Models/Requests/GetUserFriendsResponse.md deleted file mode 100644 index 3d23a4c..0000000 --- a/docs/Models/Requests/GetUserFriendsResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUserFriendsResponse - - -## 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 | -| `Friends` | List<[Friend](../../Models/Requests/Friend.md)> | :heavy_minus_sign: | Friends Data | \ No newline at end of file diff --git a/docs/Models/Requests/GetUsersMediaContainer.md b/docs/Models/Requests/GetUsersMediaContainer.md deleted file mode 100644 index 8b22762..0000000 --- a/docs/Models/Requests/GetUsersMediaContainer.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetUsersMediaContainer - -Container holding user and server details. - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | -| `FriendlyName` | *string* | :heavy_check_mark: | The friendly name of the Plex instance. | myPlex | -| `Identifier` | *string* | :heavy_check_mark: | N/A | com.plexapp.plugins.myplex | -| `MachineIdentifier` | *string* | :heavy_check_mark: | Unique Machine identifier of the Plex server. | 3dff4c4da3b1229a649aa574a9e2b419a684a20e | -| `TotalSize` | *long* | :heavy_check_mark: | Total number of users. | 30 | -| `Size` | *long* | :heavy_check_mark: | Number of users in the current response. | 30 | -| `User` | List<[User](../../Models/Requests/User.md)> | :heavy_check_mark: | List of users with access to the Plex server. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetUsersRequest.md b/docs/Models/Requests/GetUsersRequest.md deleted file mode 100644 index e4a0915..0000000 --- a/docs/Models/Requests/GetUsersRequest.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetUsersRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `ClientName` | *string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku | -| `DeviceNickname` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `DeviceName` | *string* | :heavy_minus_sign: | The name of the device the client application is running on. This is used to track the client application and its usage. (Chrome, Safari, etc.) | Chrome | -| `DeviceScreenResolution` | *string* | :heavy_minus_sign: | The resolution of the device the client application is running on. This is used to track the client application and its usage. (1487x1165,2560x1440) | 1487x1165,2560x1440 | -| `ClientVersion` | *string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 | -| `Platform` | *string* | :heavy_minus_sign: | The platform of the client application. | Roku | -| `ClientFeatures` | *string* | :heavy_minus_sign: | The features of the client application. This is used to track the client application and its usage. (external-media,indirect-media,hub-style-list) | external-media,indirect-media,hub-style-list | -| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `XPlexSessionId` | *string* | :heavy_minus_sign: | The session ID of the client application. This is used to track the client application and its usage. (97e136ef-4ddd-4ff3-89a7-a5820c96c2ca) | 97e136ef-4ddd-4ff3-89a7-a5820c96c2ca | -| `XPlexLanguage` | *string* | :heavy_minus_sign: | The language of the client application. | en | -| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `XPlexToken` | *string* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf | \ No newline at end of file diff --git a/docs/Models/Requests/GetUsersResponse.md b/docs/Models/Requests/GetUsersResponse.md deleted file mode 100644 index ff7ee2a..0000000 --- a/docs/Models/Requests/GetUsersResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUsersResponse - - -## 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 | -| `Body` | *byte[]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetUsersResponseBody.md b/docs/Models/Requests/GetUsersResponseBody.md deleted file mode 100644 index 00bc305..0000000 --- a/docs/Models/Requests/GetUsersResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUsersResponseBody - -Successful response with media container data in XML - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| `MediaContainer` | [GetUsersMediaContainer](../../Models/Requests/GetUsersMediaContainer.md) | :heavy_minus_sign: | Container holding user and server details. | \ No newline at end of file diff --git a/docs/Models/Requests/GetUsersServer.md b/docs/Models/Requests/GetUsersServer.md deleted file mode 100644 index 3c2aeed..0000000 --- a/docs/Models/Requests/GetUsersServer.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetUsersServer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | Unique ID of the server of the connected user | 907759180 | -| `ServerId` | *long* | :heavy_check_mark: | ID of the actual Plex server. | 9999999 | -| `MachineIdentifier` | *string* | :heavy_check_mark: | Machine identifier of the Plex server. | fbb8aa6be6e0c997c6268bc2b4431c8807f70a3 | -| `Name` | *string* | :heavy_check_mark: | Name of the Plex server of the connected user. | ConnectedUserFlix | -| `LastSeenAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | -| `NumLibraries` | *long* | :heavy_check_mark: | Number of libraries in the server this user has access to. | 16 | -| `AllLibraries` | [AllLibraries](../../Models/Requests/AllLibraries.md) | :heavy_minus_sign: | N/A | 1 | -| `Owned` | [Owned](../../Models/Requests/Owned.md) | :heavy_minus_sign: | N/A | 1 | -| `Pending` | [Pending](../../Models/Requests/Pending.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetWatchListRequest.md b/docs/Models/Requests/GetWatchListRequest.md deleted file mode 100644 index 6a07173..0000000 --- a/docs/Models/Requests/GetWatchListRequest.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetWatchListRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Filter` | [Filter](../../Models/Requests/Filter.md) | :heavy_check_mark: | Filter | | -| `Sort` | *string* | :heavy_minus_sign: | In the format "field:dir". Available fields are "watchlistedAt" (Added At),
"titleSort" (Title), "originallyAvailableAt" (Release Date), or "rating" (Critic Rating).
"dir" can be "asc" or "desc"
| | -| `Libtype` | [Libtype](../../Models/Requests/Libtype.md) | :heavy_minus_sign: | The type of library to filter. Can be "movie" or "show", or all if not present.
| | -| `Maxresults` | *int* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
| | -| `IncludeCollections` | [IncludeCollections](../../Models/Requests/IncludeCollections.md) | :heavy_minus_sign: | include collections in the results
| | -| `IncludeExternalMedia` | [IncludeExternalMedia](../../Models/Requests/IncludeExternalMedia.md) | :heavy_minus_sign: | include external media in the results
| | -| `XPlexContainerStart` | *int* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | -| `XPlexContainerSize` | *int* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | -| `XPlexToken` | *string* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf | \ No newline at end of file diff --git a/docs/Models/Requests/GetWatchListResponse.md b/docs/Models/Requests/GetWatchListResponse.md deleted file mode 100644 index 3b87d07..0000000 --- a/docs/Models/Requests/GetWatchListResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetWatchListResponse - - -## 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` | [GetWatchListResponseBody](../../Models/Requests/GetWatchListResponseBody.md) | :heavy_minus_sign: | Watchlist Data | \ No newline at end of file diff --git a/docs/Models/Requests/GetWatchListResponseBody.md b/docs/Models/Requests/GetWatchListResponseBody.md deleted file mode 100644 index 4d7c979..0000000 --- a/docs/Models/Requests/GetWatchListResponseBody.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetWatchListResponseBody - -Watchlist Data - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `LibrarySectionID` | *string* | :heavy_minus_sign: | N/A | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | N/A | -| `Offset` | *int* | :heavy_minus_sign: | N/A | -| `TotalSize` | *int* | :heavy_minus_sign: | N/A | -| `Identifier` | *string* | :heavy_minus_sign: | N/A | -| `Size` | *int* | :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/Guids.md b/docs/Models/Requests/Guids.md deleted file mode 100644 index 6802b5d..0000000 --- a/docs/Models/Requests/Guids.md +++ /dev/null @@ -1,8 +0,0 @@ -# Guids - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/Models/Requests/HasThumbnail.md b/docs/Models/Requests/HasThumbnail.md deleted file mode 100644 index 7a4a122..0000000 --- a/docs/Models/Requests/HasThumbnail.md +++ /dev/null @@ -1,11 +0,0 @@ -# HasThumbnail - -Indicates if the part has a thumbnail. - - -## Values - -| Name | Value | -| ------- | ------- | -| `False` | 0 | -| `True` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Hidden.md b/docs/Models/Requests/Hidden.md deleted file mode 100644 index 303b13e..0000000 --- a/docs/Models/Requests/Hidden.md +++ /dev/null @@ -1,12 +0,0 @@ -# Hidden - -The Plex library visibility setting - - -## Values - -| Name | Value | -| ---------------------------------- | ---------------------------------- | -| `Visible` | 0 | -| `ExcludeHomeScreen` | 1 | -| `ExcludeHomeScreenAndGlobalSearch` | 2 | \ No newline at end of file diff --git a/docs/Models/Requests/Hints.md b/docs/Models/Requests/Hints.md new file mode 100644 index 0000000..baedb29 --- /dev/null +++ b/docs/Models/Requests/Hints.md @@ -0,0 +1,9 @@ +# Hints + +Hints describing what we're looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote. + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/Home.md b/docs/Models/Requests/Home.md deleted file mode 100644 index 6733522..0000000 --- a/docs/Models/Requests/Home.md +++ /dev/null @@ -1,11 +0,0 @@ -# Home - -Indicates if the user is part of a home group. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/HomeVisibility.md b/docs/Models/Requests/HomeVisibility.md new file mode 100644 index 0000000..e799ee4 --- /dev/null +++ b/docs/Models/Requests/HomeVisibility.md @@ -0,0 +1,18 @@ +# HomeVisibility + +Whether this hub is visible on the home screen + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + + +## Values + +| Name | Value | +| -------- | -------- | +| `All` | all | +| `None` | none | +| `Admin` | admin | +| `Shared` | shared | \ No newline at end of file diff --git a/docs/Models/Requests/Hub.md b/docs/Models/Requests/Hub.md index 276a4fc..e3d5ae2 100644 --- a/docs/Models/Requests/Hub.md +++ b/docs/Models/Requests/Hub.md @@ -3,16 +3,12 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `HubKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/50768,65523,58188,57341,57302,57070 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /playlists/all?type=15&sort=lastViewedAt:desc&playlistType=video,audio | -| `Title` | *string* | :heavy_minus_sign: | N/A | Recent Playlists | -| `Type` | *string* | :heavy_minus_sign: | N/A | playlist | -| `HubIdentifier` | *string* | :heavy_minus_sign: | N/A | home.playlists | -| `Context` | *string* | :heavy_minus_sign: | N/A | hub.home.playlists | -| `Size` | *int* | :heavy_minus_sign: | N/A | 6 | -| `More` | *bool* | :heavy_minus_sign: | N/A | true | -| `Style` | *string* | :heavy_minus_sign: | N/A | shelf | -| `Promoted` | *bool* | :heavy_minus_sign: | N/A | true | -| `Metadata` | List<[GetGlobalHubsMetadata](../../Models/Requests/GetGlobalHubsMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `HomeVisibility` | [Models.Requests.HomeVisibility](../../Models/Requests/HomeVisibility.md) | :heavy_minus_sign: | Whether this hub is visible on the home screen
- all: Visible to all users
- none: Visible to no users
- admin: Visible to only admin users
- shared: Visible to shared users
| +| `Identifier` | *string* | :heavy_minus_sign: | The identifier for this hub | +| `PromotedToOwnHome` | *bool* | :heavy_minus_sign: | Whether this hub is visible to admin user home | +| `PromotedToRecommended` | *bool* | :heavy_minus_sign: | Whether this hub is promoted to all for recommendations | +| `PromotedToSharedHome` | *bool* | :heavy_minus_sign: | Whether this hub is visible to shared user's home | +| `RecommendationsVisibility` | [Models.Requests.RecommendationsVisibility](../../Models/Requests/RecommendationsVisibility.md) | :heavy_minus_sign: | The visibility of this hub in recommendations:
- all: Visible to all users
- none: Visible to no users
- admin: Visible to only admin users
- shared: Visible to shared users
| +| `Title` | *string* | :heavy_minus_sign: | The title of this hub | \ No newline at end of file diff --git a/docs/Models/Requests/Image.md b/docs/Models/Requests/Image.md deleted file mode 100644 index 3d085e7..0000000 --- a/docs/Models/Requests/Image.md +++ /dev/null @@ -1,10 +0,0 @@ -# Image - - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `Alt` | *string* | :heavy_minus_sign: | N/A | -| `Type` | *string* | :heavy_minus_sign: | N/A | -| `Url` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/IncludeAdvanced.md b/docs/Models/Requests/IncludeAdvanced.md deleted file mode 100644 index b7c32d1..0000000 --- a/docs/Models/Requests/IncludeAdvanced.md +++ /dev/null @@ -1,9 +0,0 @@ -# IncludeAdvanced - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/IncludeCollections.md b/docs/Models/Requests/IncludeCollections.md deleted file mode 100644 index ba1fb4b..0000000 --- a/docs/Models/Requests/IncludeCollections.md +++ /dev/null @@ -1,12 +0,0 @@ -# IncludeCollections - -include collections in the results - - - -## Values - -| Name | Value | -| ------ | ------ | -| `One` | 1 | -| `Zero` | 0 | \ No newline at end of file diff --git a/docs/Models/Requests/IncludeDetails.md b/docs/Models/Requests/IncludeDetails.md deleted file mode 100644 index d865168..0000000 --- a/docs/Models/Requests/IncludeDetails.md +++ /dev/null @@ -1,13 +0,0 @@ -# IncludeDetails - -Whether or not to include details for a section (types, filters, and sorts). -Only exists for backwards compatibility, media providers other than the server libraries have it on always. - - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/IncludeExternalMedia.md b/docs/Models/Requests/IncludeExternalMedia.md deleted file mode 100644 index 90c652e..0000000 --- a/docs/Models/Requests/IncludeExternalMedia.md +++ /dev/null @@ -1,12 +0,0 @@ -# IncludeExternalMedia - -include external media in the results - - - -## Values - -| Name | Value | -| ------ | ------ | -| `One` | 1 | -| `Zero` | 0 | \ No newline at end of file diff --git a/docs/Models/Requests/IncludeGuids.md b/docs/Models/Requests/IncludeGuids.md deleted file mode 100644 index eaba0b9..0000000 --- a/docs/Models/Requests/IncludeGuids.md +++ /dev/null @@ -1,12 +0,0 @@ -# IncludeGuids - -Adds the Guids object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/IncludeHttps.md b/docs/Models/Requests/IncludeHttps.md deleted file mode 100644 index 94382d4..0000000 --- a/docs/Models/Requests/IncludeHttps.md +++ /dev/null @@ -1,11 +0,0 @@ -# IncludeHttps - -Include Https entries in the results - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/IncludeIPv6.md b/docs/Models/Requests/IncludeIPv6.md deleted file mode 100644 index 0b70e65..0000000 --- a/docs/Models/Requests/IncludeIPv6.md +++ /dev/null @@ -1,11 +0,0 @@ -# IncludeIPv6 - -Include IPv6 entries in the results - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/IncludeMeta.md b/docs/Models/Requests/IncludeMeta.md deleted file mode 100644 index 0f180eb..0000000 --- a/docs/Models/Requests/IncludeMeta.md +++ /dev/null @@ -1,12 +0,0 @@ -# IncludeMeta - -Adds the Meta object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/IncludeRelay.md b/docs/Models/Requests/IncludeRelay.md deleted file mode 100644 index 2136d5a..0000000 --- a/docs/Models/Requests/IncludeRelay.md +++ /dev/null @@ -1,13 +0,0 @@ -# IncludeRelay - -Include Relay addresses in the results -E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 - - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Index.md b/docs/Models/Requests/Index.md new file mode 100644 index 0000000..e97d0e2 --- /dev/null +++ b/docs/Models/Requests/Index.md @@ -0,0 +1,10 @@ +# Index + +The type of index to grab. + + +## Values + +| Name | Value | +| ----- | ----- | +| `Sd` | sd | \ No newline at end of file diff --git a/docs/Models/Requests/IngestTransientItemRequest.md b/docs/Models/Requests/IngestTransientItemRequest.md new file mode 100644 index 0000000..4200b98 --- /dev/null +++ b/docs/Models/Requests/IngestTransientItemRequest.md @@ -0,0 +1,22 @@ +# IngestTransientItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Url` | *string* | :heavy_minus_sign: | The file of the file to ingest. | file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv | +| `VirtualFilePath` | *string* | :heavy_minus_sign: | A virtual path to use when the url is opaque. | /Avatar.mkv | +| `ComputeHashes` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether or not to compute Plex and OpenSubtitle hashes for the file. Defaults to 0. | 1 | +| `IngestNonMatches` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether or not non matching media should be stored. Defaults to 0. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/IngestTransientItemResponse.md b/docs/Models/Requests/IngestTransientItemResponse.md new file mode 100644 index 0000000..fd4e784 --- /dev/null +++ b/docs/Models/Requests/IngestTransientItemResponse.md @@ -0,0 +1,12 @@ +# IngestTransientItemResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/InternalPaymentMethod.md b/docs/Models/Requests/InternalPaymentMethod.md deleted file mode 100644 index f1103c2..0000000 --- a/docs/Models/Requests/InternalPaymentMethod.md +++ /dev/null @@ -1,7 +0,0 @@ -# InternalPaymentMethod - - -## Fields - -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/Item.md b/docs/Models/Requests/Item.md new file mode 100644 index 0000000..fc41066 --- /dev/null +++ b/docs/Models/Requests/Item.md @@ -0,0 +1,18 @@ +# Item + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `Composite` | *string* | :heavy_minus_sign: | The composite thumbnail image path | +| `Device` | [GetPlaylistGeneratorDevice](../../Models/Requests/GetPlaylistGeneratorDevice.md) | :heavy_minus_sign: | N/A | +| `Id` | *long* | :heavy_minus_sign: | N/A | +| `Location` | [GetPlaylistGeneratorLocation](../../Models/Requests/GetPlaylistGeneratorLocation.md) | :heavy_minus_sign: | N/A | +| `MediaSettings` | [MediaSettings](../../Models/Requests/MediaSettings.md) | :heavy_minus_sign: | N/A | +| `Policy` | [Policy](../../Models/Requests/Policy.md) | :heavy_minus_sign: | N/A | +| `Status` | [GetPlaylistGeneratorStatus](../../Models/Requests/GetPlaylistGeneratorStatus.md) | :heavy_minus_sign: | N/A | +| `Target` | *string* | :heavy_minus_sign: | N/A | +| `TargetTagID` | *long* | :heavy_minus_sign: | The tag of this generator's settings | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | [GetPlaylistGeneratorType](../../Models/Requests/GetPlaylistGeneratorType.md) | :heavy_minus_sign: | The type of this generator | \ No newline at end of file diff --git a/docs/Models/Requests/Language.md b/docs/Models/Requests/Language.md new file mode 100644 index 0000000..e0fdc5e --- /dev/null +++ b/docs/Models/Requests/Language.md @@ -0,0 +1,9 @@ +# Language + + +## Fields + +| Field | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `Code` | *string* | :heavy_minus_sign: | 3 letter language code | +| `Title` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Level.md b/docs/Models/Requests/Level.md index b2325df..1172ff7 100644 --- a/docs/Models/Requests/Level.md +++ b/docs/Models/Requests/Level.md @@ -1,11 +1,11 @@ # Level An integer log level to write to the PMS log with. -0: Error -1: Warning -2: Info -3: Debug -4: Verbose + - 0: Error + - 1: Warning + - 2: Info + - 3: Debug + - 4: Verbose diff --git a/docs/Models/Requests/Libtype.md b/docs/Models/Requests/Libtype.md deleted file mode 100644 index 9bc1edd..0000000 --- a/docs/Models/Requests/Libtype.md +++ /dev/null @@ -1,12 +0,0 @@ -# Libtype - -The type of library to filter. Can be "movie" or "show", or all if not present. - - - -## Values - -| Name | Value | -| ------- | ------- | -| `Movie` | movie | -| `Show` | show | \ No newline at end of file diff --git a/docs/Models/Requests/Lineup.md b/docs/Models/Requests/Lineup.md new file mode 100644 index 0000000..196dea0 --- /dev/null +++ b/docs/Models/Requests/Lineup.md @@ -0,0 +1,13 @@ +# Lineup + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | *string* | :heavy_minus_sign: | The type of this object (`lineup` in this case) | +| `LineupType` | [Models.Requests.LineupType](../../Models/Requests/LineupType.md) | :heavy_minus_sign: | - `-1`: N/A
- `0`: Over the air
- `1`: Cable
- `2`: Satellite
- `3`: IPTV
- `4`: Virtual
| +| `Location` | *string* | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | The uuid of this lineup | +| `Channel` | List<[Channel](../../Models/Components/Channel.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/LineupType.md b/docs/Models/Requests/LineupType.md new file mode 100644 index 0000000..ffda93e --- /dev/null +++ b/docs/Models/Requests/LineupType.md @@ -0,0 +1,21 @@ +# LineupType + +- `-1`: N/A +- `0`: Over the air +- `1`: Cable +- `2`: Satellite +- `3`: IPTV +- `4`: Virtual + + + +## Values + +| Name | Value | +| -------- | -------- | +| `Minus1` | -1 | +| `Zero` | 0 | +| `One` | 1 | +| `Two` | 2 | +| `Three` | 3 | +| `Four` | 4 | \ No newline at end of file diff --git a/docs/Models/Requests/ListActivitiesMediaContainer.md b/docs/Models/Requests/ListActivitiesMediaContainer.md new file mode 100644 index 0000000..07755d6 --- /dev/null +++ b/docs/Models/Requests/ListActivitiesMediaContainer.md @@ -0,0 +1,8 @@ +# ListActivitiesMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `Activity` | List<[Activity](../../Models/Requests/Activity.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListActivitiesResponse.md b/docs/Models/Requests/ListActivitiesResponse.md new file mode 100644 index 0000000..88f1f66 --- /dev/null +++ b/docs/Models/Requests/ListActivitiesResponse.md @@ -0,0 +1,11 @@ +# ListActivitiesResponse + + +## 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` | [ListActivitiesResponseBody](../../Models/Requests/ListActivitiesResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ListActivitiesResponseBody.md b/docs/Models/Requests/ListActivitiesResponseBody.md new file mode 100644 index 0000000..8d0e27f --- /dev/null +++ b/docs/Models/Requests/ListActivitiesResponseBody.md @@ -0,0 +1,10 @@ +# ListActivitiesResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `MediaContainer` | [ListActivitiesMediaContainer](../../Models/Requests/ListActivitiesMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListContentRequest.md b/docs/Models/Requests/ListContentRequest.md new file mode 100644 index 0000000..a8151bb --- /dev/null +++ b/docs/Models/Requests/ListContentRequest.md @@ -0,0 +1,20 @@ +# ListContentRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `MediaQuery` | [MediaQuery](../../Models/Components/MediaQuery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | +| `SectionId` | *string* | :heavy_check_mark: | The id of the section | | \ No newline at end of file diff --git a/docs/Models/Requests/ListContentResponse.md b/docs/Models/Requests/ListContentResponse.md new file mode 100644 index 0000000..b7bf316 --- /dev/null +++ b/docs/Models/Requests/ListContentResponse.md @@ -0,0 +1,12 @@ +# ListContentResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListDVRsDVRsMediaContainer.md b/docs/Models/Requests/ListDVRsDVRsMediaContainer.md new file mode 100644 index 0000000..a9a66ec --- /dev/null +++ b/docs/Models/Requests/ListDVRsDVRsMediaContainer.md @@ -0,0 +1,17 @@ +# ListDVRsDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Status` | *long* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/Models/Requests/ListDVRsMediaContainer.md b/docs/Models/Requests/ListDVRsMediaContainer.md new file mode 100644 index 0000000..429f6e4 --- /dev/null +++ b/docs/Models/Requests/ListDVRsMediaContainer.md @@ -0,0 +1,9 @@ +# ListDVRsMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `MediaContainer` | [ListDVRsDVRsMediaContainer](../../Models/Requests/ListDVRsDVRsMediaContainer.md) | :heavy_minus_sign: | N/A | +| `Dvr` | List<[Models.Requests.Dvr](../../Models/Requests/Dvr.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListDVRsResponse.md b/docs/Models/Requests/ListDVRsResponse.md new file mode 100644 index 0000000..a5b1d21 --- /dev/null +++ b/docs/Models/Requests/ListDVRsResponse.md @@ -0,0 +1,12 @@ +# ListDVRsResponse + + +## 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` | [ListDVRsResponseBody](../../Models/Requests/ListDVRsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListDVRsResponseBody.md b/docs/Models/Requests/ListDVRsResponseBody.md new file mode 100644 index 0000000..bef6992 --- /dev/null +++ b/docs/Models/Requests/ListDVRsResponseBody.md @@ -0,0 +1,10 @@ +# ListDVRsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `MediaContainer` | [ListDVRsMediaContainer](../../Models/Requests/ListDVRsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListDevicesResponse.md b/docs/Models/Requests/ListDevicesResponse.md new file mode 100644 index 0000000..9396b98 --- /dev/null +++ b/docs/Models/Requests/ListDevicesResponse.md @@ -0,0 +1,12 @@ +# ListDevicesResponse + + +## 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 | +| `MediaContainerWithDevice` | [MediaContainerWithDevice](../../Models/Components/MediaContainerWithDevice.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListDownloadQueueItemsMediaContainer.md b/docs/Models/Requests/ListDownloadQueueItemsMediaContainer.md new file mode 100644 index 0000000..73b87b3 --- /dev/null +++ b/docs/Models/Requests/ListDownloadQueueItemsMediaContainer.md @@ -0,0 +1,17 @@ +# ListDownloadQueueItemsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `DownloadQueueItem` | List<[DownloadQueueItem](../../Models/Requests/DownloadQueueItem.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListDownloadQueueItemsRequest.md b/docs/Models/Requests/ListDownloadQueueItemsRequest.md new file mode 100644 index 0000000..46c62fe --- /dev/null +++ b/docs/Models/Requests/ListDownloadQueueItemsRequest.md @@ -0,0 +1,19 @@ +# ListDownloadQueueItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `QueueId` | *long* | :heavy_check_mark: | The queue id | | \ No newline at end of file diff --git a/docs/Models/Requests/ListDownloadQueueItemsResponse.md b/docs/Models/Requests/ListDownloadQueueItemsResponse.md new file mode 100644 index 0000000..c45236a --- /dev/null +++ b/docs/Models/Requests/ListDownloadQueueItemsResponse.md @@ -0,0 +1,11 @@ +# ListDownloadQueueItemsResponse + + +## 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` | [ListDownloadQueueItemsResponseBody](../../Models/Requests/ListDownloadQueueItemsResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ListDownloadQueueItemsResponseBody.md b/docs/Models/Requests/ListDownloadQueueItemsResponseBody.md new file mode 100644 index 0000000..2cb7646 --- /dev/null +++ b/docs/Models/Requests/ListDownloadQueueItemsResponseBody.md @@ -0,0 +1,10 @@ +# ListDownloadQueueItemsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [ListDownloadQueueItemsMediaContainer](../../Models/Requests/ListDownloadQueueItemsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListDownloadQueueItemsStatus.md b/docs/Models/Requests/ListDownloadQueueItemsStatus.md new file mode 100644 index 0000000..e8e4d17 --- /dev/null +++ b/docs/Models/Requests/ListDownloadQueueItemsStatus.md @@ -0,0 +1,22 @@ +# ListDownloadQueueItemsStatus + +The state of the item: + - deciding: The item decision is pending + - waiting: The item is waiting for transcode + - processing: The item is being transcoded + - available: The item is available for download + - error: The item encountered an error in the decision or transcode + - expired: The transcoded item has timed out and is no longer available + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Deciding` | deciding | +| `Waiting` | waiting | +| `Processing` | processing | +| `Available` | available | +| `Error` | error | +| `Expired` | expired | \ No newline at end of file diff --git a/docs/Models/Requests/ListHubsMediaContainer.md b/docs/Models/Requests/ListHubsMediaContainer.md new file mode 100644 index 0000000..a3f083c --- /dev/null +++ b/docs/Models/Requests/ListHubsMediaContainer.md @@ -0,0 +1,17 @@ +# ListHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Hub` | List<[Models.Requests.Hub](../../Models/Requests/Hub.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListHubsRequest.md b/docs/Models/Requests/ListHubsRequest.md new file mode 100644 index 0000000..bd1f392 --- /dev/null +++ b/docs/Models/Requests/ListHubsRequest.md @@ -0,0 +1,20 @@ +# ListHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | The section ID for the hubs to reorder | | +| `MetadataItemId` | *long* | :heavy_minus_sign: | Restrict hubs to ones relevant to the provided metadata item | | \ No newline at end of file diff --git a/docs/Models/Requests/ListHubsResponse.md b/docs/Models/Requests/ListHubsResponse.md new file mode 100644 index 0000000..f00eb7d --- /dev/null +++ b/docs/Models/Requests/ListHubsResponse.md @@ -0,0 +1,12 @@ +# ListHubsResponse + + +## 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` | [ListHubsResponseBody](../../Models/Requests/ListHubsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListHubsResponseBody.md b/docs/Models/Requests/ListHubsResponseBody.md new file mode 100644 index 0000000..d8afe8d --- /dev/null +++ b/docs/Models/Requests/ListHubsResponseBody.md @@ -0,0 +1,10 @@ +# ListHubsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `MediaContainer` | [ListHubsMediaContainer](../../Models/Requests/ListHubsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListLineupsRequest.md b/docs/Models/Requests/ListLineupsRequest.md new file mode 100644 index 0000000..7a56fb1 --- /dev/null +++ b/docs/Models/Requests/ListLineupsRequest.md @@ -0,0 +1,21 @@ +# ListLineupsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Country` | *string* | :heavy_check_mark: | 3 letter country code | | +| `EpgId` | *string* | :heavy_check_mark: | The `providerIdentifier` of the provider | | +| `Region` | *string* | :heavy_check_mark: | The region for the lineup | | \ No newline at end of file diff --git a/docs/Models/Requests/ListLineupsResponse.md b/docs/Models/Requests/ListLineupsResponse.md new file mode 100644 index 0000000..e8a51fb --- /dev/null +++ b/docs/Models/Requests/ListLineupsResponse.md @@ -0,0 +1,12 @@ +# ListLineupsResponse + + +## 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 | +| `MediaContainerWithLineup` | [MediaContainerWithLineup](../../Models/Components/MediaContainerWithLineup.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListMatchesRequest.md b/docs/Models/Requests/ListMatchesRequest.md new file mode 100644 index 0000000..aad8239 --- /dev/null +++ b/docs/Models/Requests/ListMatchesRequest.md @@ -0,0 +1,25 @@ +# ListMatchesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Title` | *string* | :heavy_minus_sign: | N/A | | +| `ParentTitle` | *string* | :heavy_minus_sign: | N/A | | +| `Agent` | *string* | :heavy_minus_sign: | N/A | | +| `Language` | *string* | :heavy_minus_sign: | N/A | | +| `Year` | *long* | :heavy_minus_sign: | N/A | | +| `Manual` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/ListMatchesResponse.md b/docs/Models/Requests/ListMatchesResponse.md new file mode 100644 index 0000000..06759f0 --- /dev/null +++ b/docs/Models/Requests/ListMatchesResponse.md @@ -0,0 +1,11 @@ +# ListMatchesResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ListMomentsRequest.md b/docs/Models/Requests/ListMomentsRequest.md new file mode 100644 index 0000000..05d386d --- /dev/null +++ b/docs/Models/Requests/ListMomentsRequest.md @@ -0,0 +1,19 @@ +# ListMomentsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/ListMomentsResponse.md b/docs/Models/Requests/ListMomentsResponse.md new file mode 100644 index 0000000..264fc53 --- /dev/null +++ b/docs/Models/Requests/ListMomentsResponse.md @@ -0,0 +1,11 @@ +# ListMomentsResponse + + +## 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 | +| `MediaContainerWithArtwork` | [MediaContainerWithArtwork](../../Models/Components/MediaContainerWithArtwork.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ListPersonMediaRequest.md b/docs/Models/Requests/ListPersonMediaRequest.md new file mode 100644 index 0000000..6f377cc --- /dev/null +++ b/docs/Models/Requests/ListPersonMediaRequest.md @@ -0,0 +1,19 @@ +# ListPersonMediaRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PersonId` | *string* | :heavy_check_mark: | Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor | | \ No newline at end of file diff --git a/docs/Models/Requests/ListPersonMediaResponse.md b/docs/Models/Requests/ListPersonMediaResponse.md new file mode 100644 index 0000000..9983ae7 --- /dev/null +++ b/docs/Models/Requests/ListPersonMediaResponse.md @@ -0,0 +1,11 @@ +# ListPersonMediaResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ListPlaybackHistoryMediaContainer.md b/docs/Models/Requests/ListPlaybackHistoryMediaContainer.md new file mode 100644 index 0000000..23bd682 --- /dev/null +++ b/docs/Models/Requests/ListPlaybackHistoryMediaContainer.md @@ -0,0 +1,17 @@ +# ListPlaybackHistoryMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Metadata` | List<[ListPlaybackHistoryMetadata](../../Models/Requests/ListPlaybackHistoryMetadata.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListPlaybackHistoryMetadata.md b/docs/Models/Requests/ListPlaybackHistoryMetadata.md new file mode 100644 index 0000000..cd0a7de --- /dev/null +++ b/docs/Models/Requests/ListPlaybackHistoryMetadata.md @@ -0,0 +1,18 @@ +# ListPlaybackHistoryMetadata + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `AccountID` | *long* | :heavy_minus_sign: | The account id of this playback | +| `DeviceID` | *long* | :heavy_minus_sign: | The device id which played the item | +| `HistoryKey` | *string* | :heavy_minus_sign: | The key for this individual history item | +| `Key` | *string* | :heavy_minus_sign: | The metadata key for the item played | +| `LibrarySectionID` | *string* | :heavy_minus_sign: | The library section id containing the item played | +| `OriginallyAvailableAt` | *string* | :heavy_minus_sign: | The originally available at of the item played | +| `RatingKey` | *string* | :heavy_minus_sign: | The rating key for the item played | +| `Thumb` | *string* | :heavy_minus_sign: | The thumb of the item played | +| `Title` | *string* | :heavy_minus_sign: | The title of the item played | +| `Type` | *string* | :heavy_minus_sign: | The metadata type of the item played | +| `ViewedAt` | *long* | :heavy_minus_sign: | The time when the item was played | \ No newline at end of file diff --git a/docs/Models/Requests/ListPlaybackHistoryRequest.md b/docs/Models/Requests/ListPlaybackHistoryRequest.md new file mode 100644 index 0000000..9c2c7db --- /dev/null +++ b/docs/Models/Requests/ListPlaybackHistoryRequest.md @@ -0,0 +1,23 @@ +# ListPlaybackHistoryRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `AccountID` | *long* | :heavy_minus_sign: | The account id to restrict view history | | +| `ViewedAt` | *long* | :heavy_minus_sign: | The time period to restrict history (typically of the form `viewedAt>=12456789`) | | +| `LibrarySectionID` | *long* | :heavy_minus_sign: | The library section id to restrict view history | | +| `MetadataItemID` | *long* | :heavy_minus_sign: | The metadata item to restrict view history (can provide the id for a show to see all of that show's view history). Note this is translated to `metadata_items.id`, `parents.id`, or `grandparents.id` internally depending on the metadata type. | | +| `Sort` | List<*string*> | :heavy_minus_sign: | The field on which to sort. Multiple orderings can be specified separated by `,` and the direction specified following a `:` (`desc` or `asc`; `asc` is assumed if not provided). Note `metadataItemID` may not be used here. | viewedAt:desc,accountID | \ No newline at end of file diff --git a/docs/Models/Requests/ListPlaybackHistoryResponse.md b/docs/Models/Requests/ListPlaybackHistoryResponse.md new file mode 100644 index 0000000..fca7263 --- /dev/null +++ b/docs/Models/Requests/ListPlaybackHistoryResponse.md @@ -0,0 +1,12 @@ +# ListPlaybackHistoryResponse + + +## 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` | [ListPlaybackHistoryResponseBody](../../Models/Requests/ListPlaybackHistoryResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListPlaybackHistoryResponseBody.md b/docs/Models/Requests/ListPlaybackHistoryResponseBody.md new file mode 100644 index 0000000..7c341b1 --- /dev/null +++ b/docs/Models/Requests/ListPlaybackHistoryResponseBody.md @@ -0,0 +1,10 @@ +# ListPlaybackHistoryResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `MediaContainer` | [ListPlaybackHistoryMediaContainer](../../Models/Requests/ListPlaybackHistoryMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListPlaylistsRequest.md b/docs/Models/Requests/ListPlaylistsRequest.md new file mode 100644 index 0000000..2f456a6 --- /dev/null +++ b/docs/Models/Requests/ListPlaylistsRequest.md @@ -0,0 +1,20 @@ +# ListPlaylistsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistType` | [Models.Requests.PlaylistType](../../Models/Requests/PlaylistType.md) | :heavy_minus_sign: | Limit to a type of playlist | | +| `Smart` | *bool* | :heavy_minus_sign: | Whether this is a smart collection/playlist | | \ No newline at end of file diff --git a/docs/Models/Requests/ListPlaylistsResponse.md b/docs/Models/Requests/ListPlaylistsResponse.md new file mode 100644 index 0000000..518bc27 --- /dev/null +++ b/docs/Models/Requests/ListPlaylistsResponse.md @@ -0,0 +1,12 @@ +# ListPlaylistsResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListProvidersMediaContainer.md b/docs/Models/Requests/ListProvidersMediaContainer.md new file mode 100644 index 0000000..a9c2da8 --- /dev/null +++ b/docs/Models/Requests/ListProvidersMediaContainer.md @@ -0,0 +1,68 @@ +# ListProvidersMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | A unique identifier for the provider, e.g. `com.plexapp.plugins.library`. | | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| | +| `Size` | *long* | :heavy_minus_sign: | N/A | | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| | +| `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` | *long* | :heavy_minus_sign: | N/A | 7 | +| `MachineIdentifier` | *object* | :heavy_minus_sign: | N/A | 0123456789abcdef0123456789abcdef012345678 | +| `MediaProviders` | *bool* | :heavy_minus_sign: | N/A | | +| `Multiuser` | *bool* | :heavy_minus_sign: | N/A | | +| `MusicAnalysis` | *long* | :heavy_minus_sign: | N/A | 2 | +| `MyPlex` | *bool* | :heavy_minus_sign: | N/A | | +| `MyPlexMappingState` | *object* | :heavy_minus_sign: | N/A | mapped | +| `MyPlexSigninState` | *object* | :heavy_minus_sign: | N/A | ok | +| `MyPlexSubscription` | *bool* | :heavy_minus_sign: | N/A | | +| `MyPlexUsername` | *string* | :heavy_minus_sign: | N/A | | +| `OfflineTranscode` | *object* | :heavy_minus_sign: | N/A | 1 | +| `OwnerFeatures` | *string* | :heavy_minus_sign: | A comma-separated list of features which are enabled for the server owner | | +| `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` | *long* | :heavy_minus_sign: | N/A | | +| `StreamingBrainVersion` | *long* | :heavy_minus_sign: | N/A | | +| `Sync` | *bool* | :heavy_minus_sign: | N/A | | +| `TranscoderActiveVideoSessions` | *long* | :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` | *object* | :heavy_minus_sign: | The suggested video quality bitrates to present to the user | | +| `TranscoderVideoQualities` | *string* | :heavy_minus_sign: | N/A | | +| `TranscoderVideoResolutions` | *object* | :heavy_minus_sign: | The suggested video resolutions to the above quality bitrates | | +| `UpdatedAt` | *long* | :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 | | +| `Feature` | List<[Feature](../../Models/Requests/Feature.md)> | :heavy_minus_sign: | N/A | | +| `Protocols` | *string* | :heavy_minus_sign: | A comma-separated list of default protocols for the provider, which can be:
- `stream`: The provider allows streaming media directly from the provider (e.g. for Vimeo). - `download`: The provider allows downloading media for offline storage, sync, etc. (e.g. Podcasts). - `livetv`: The provider provides live content which is only available on a schedule basis. | | +| `Title` | *string* | :heavy_minus_sign: | The title of the provider. | | +| `Types` | *string* | :heavy_minus_sign: | This attribute contains a comma-separated list of the media types exposed by the provider (e.g. `video, audio`). | | \ No newline at end of file diff --git a/docs/Models/Requests/ListProvidersResponse.md b/docs/Models/Requests/ListProvidersResponse.md new file mode 100644 index 0000000..970eb96 --- /dev/null +++ b/docs/Models/Requests/ListProvidersResponse.md @@ -0,0 +1,11 @@ +# ListProvidersResponse + + +## 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` | [ListProvidersResponseBody](../../Models/Requests/ListProvidersResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ListProvidersResponseBody.md b/docs/Models/Requests/ListProvidersResponseBody.md new file mode 100644 index 0000000..4cc979f --- /dev/null +++ b/docs/Models/Requests/ListProvidersResponseBody.md @@ -0,0 +1,10 @@ +# ListProvidersResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `MediaContainer` | [ListProvidersMediaContainer](../../Models/Requests/ListProvidersMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListSessionsMediaContainer.md b/docs/Models/Requests/ListSessionsMediaContainer.md new file mode 100644 index 0000000..34fe874 --- /dev/null +++ b/docs/Models/Requests/ListSessionsMediaContainer.md @@ -0,0 +1,17 @@ +# ListSessionsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Metadata` | List<[Models.Requests.Metadata](../../Models/Requests/Metadata.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListSessionsResponse.md b/docs/Models/Requests/ListSessionsResponse.md new file mode 100644 index 0000000..edda2fa --- /dev/null +++ b/docs/Models/Requests/ListSessionsResponse.md @@ -0,0 +1,12 @@ +# ListSessionsResponse + + +## 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` | [ListSessionsResponseBody](../../Models/Requests/ListSessionsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListSessionsResponseBody.md b/docs/Models/Requests/ListSessionsResponseBody.md new file mode 100644 index 0000000..6711bac --- /dev/null +++ b/docs/Models/Requests/ListSessionsResponseBody.md @@ -0,0 +1,10 @@ +# ListSessionsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `MediaContainer` | [ListSessionsMediaContainer](../../Models/Requests/ListSessionsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListSimilarRequest.md b/docs/Models/Requests/ListSimilarRequest.md new file mode 100644 index 0000000..d5fb490 --- /dev/null +++ b/docs/Models/Requests/ListSimilarRequest.md @@ -0,0 +1,20 @@ +# ListSimilarRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Count` | *long* | :heavy_minus_sign: | Limit results to count items | | \ No newline at end of file diff --git a/docs/Models/Requests/ListSimilarResponse.md b/docs/Models/Requests/ListSimilarResponse.md new file mode 100644 index 0000000..cd3ed0b --- /dev/null +++ b/docs/Models/Requests/ListSimilarResponse.md @@ -0,0 +1,11 @@ +# ListSimilarResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ListSonicallySimilarRequest.md b/docs/Models/Requests/ListSonicallySimilarRequest.md new file mode 100644 index 0000000..245e824 --- /dev/null +++ b/docs/Models/Requests/ListSonicallySimilarRequest.md @@ -0,0 +1,23 @@ +# ListSonicallySimilarRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `ExcludeParentID` | *long* | :heavy_minus_sign: | N/A | | +| `ExcludeGrandparentID` | *long* | :heavy_minus_sign: | N/A | | +| `Limit` | *long* | :heavy_minus_sign: | N/A | | +| `MaxDistance` | *double* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/ListSonicallySimilarResponse.md b/docs/Models/Requests/ListSonicallySimilarResponse.md new file mode 100644 index 0000000..5c6bd80 --- /dev/null +++ b/docs/Models/Requests/ListSonicallySimilarResponse.md @@ -0,0 +1,11 @@ +# ListSonicallySimilarResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ListTopUsersMediaContainer.md b/docs/Models/Requests/ListTopUsersMediaContainer.md new file mode 100644 index 0000000..58e40bc --- /dev/null +++ b/docs/Models/Requests/ListTopUsersMediaContainer.md @@ -0,0 +1,17 @@ +# ListTopUsersMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Account` | List<[Account](../../Models/Requests/Account.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ListTopUsersRequest.md b/docs/Models/Requests/ListTopUsersRequest.md new file mode 100644 index 0000000..513f239 --- /dev/null +++ b/docs/Models/Requests/ListTopUsersRequest.md @@ -0,0 +1,19 @@ +# ListTopUsersRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/ListTopUsersResponse.md b/docs/Models/Requests/ListTopUsersResponse.md new file mode 100644 index 0000000..d1d24b2 --- /dev/null +++ b/docs/Models/Requests/ListTopUsersResponse.md @@ -0,0 +1,11 @@ +# ListTopUsersResponse + + +## 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` | [ListTopUsersResponseBody](../../Models/Requests/ListTopUsersResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ListTopUsersResponseBody.md b/docs/Models/Requests/ListTopUsersResponseBody.md new file mode 100644 index 0000000..aea6897 --- /dev/null +++ b/docs/Models/Requests/ListTopUsersResponseBody.md @@ -0,0 +1,10 @@ +# ListTopUsersResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `MediaContainer` | [ListTopUsersMediaContainer](../../Models/Requests/ListTopUsersMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Location.md b/docs/Models/Requests/Location.md index d8aa98a..19265cf 100644 --- a/docs/Models/Requests/Location.md +++ b/docs/Models/Requests/Location.md @@ -1,10 +1,12 @@ # Location -The folder path for the media item. +Network type of the client, can be used to help determine target bitrate. -## Fields +## Values -| Field | Type | Required | Description | Example | -| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | -| `Path` | *string* | :heavy_check_mark: | N/A | /TV Shows/Clarkson's Farm | \ No newline at end of file +| Name | Value | +| ---------- | ---------- | +| `Lan` | lan | +| `Wan` | wan | +| `Cellular` | cellular | \ No newline at end of file diff --git a/docs/Models/Requests/LogLineRequest.md b/docs/Models/Requests/LogLineRequest.md deleted file mode 100644 index 16d5414..0000000 --- a/docs/Models/Requests/LogLineRequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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. | Test log message | -| `Source` | *string* | :heavy_check_mark: | a string indicating the source of the message. | Postman | \ No newline at end of file diff --git a/docs/Models/Requests/LogLineResponse.md b/docs/Models/Requests/LogLineResponse.md deleted file mode 100644 index 0f0c908..0000000 --- a/docs/Models/Requests/LogLineResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/LogMultiLineResponse.md b/docs/Models/Requests/LogMultiLineResponse.md deleted file mode 100644 index e300197..0000000 --- a/docs/Models/Requests/LogMultiLineResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/MailingListStatus.md b/docs/Models/Requests/MailingListStatus.md deleted file mode 100644 index 9b13c47..0000000 --- a/docs/Models/Requests/MailingListStatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# MailingListStatus - -Your current mailing list status (active or unsubscribed) - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `Active` | active | -| `Unsubscribed` | unsubscribed | \ No newline at end of file diff --git a/docs/Models/Requests/MakeDecisionRequest.md b/docs/Models/Requests/MakeDecisionRequest.md new file mode 100644 index 0000000..bb2c4b1 --- /dev/null +++ b/docs/Models/Requests/MakeDecisionRequest.md @@ -0,0 +1,49 @@ +# MakeDecisionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `TranscodeType` | [TranscodeType](../../Models/Components/TranscodeType.md) | :heavy_check_mark: | Type of transcode media | | +| `TranscodeSessionId` | *string* | :heavy_minus_sign: | Transcode session UUID | | +| `AdvancedSubtitles` | [Models.Components.AdvancedSubtitles](../../Models/Components/AdvancedSubtitles.md) | :heavy_minus_sign: | Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
| burn | +| `AudioBoost` | *long* | :heavy_minus_sign: | Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) | 50 | +| `AudioChannelCount` | *long* | :heavy_minus_sign: | Target video number of audio channels. | 5 | +| `AutoAdjustQuality` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports ABR. | 1 | +| `AutoAdjustSubtitle` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates if the server should adjust subtitles based on Voice Activity Data. | 1 | +| `DirectPlay` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports direct playing the indicated content. | 1 | +| `DirectStream` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the video of the indicated content. | 1 | +| `DirectStreamAudio` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the audio of the indicated content. | 1 | +| `DisableResolutionRotation` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates if resolution should be adjusted for orientation. | 1 | +| `HasMDE` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 | 1 | +| `Location` | [Models.Requests.Location](../../Models/Requests/Location.md) | :heavy_minus_sign: | Network type of the client, can be used to help determine target bitrate. | wan | +| `MediaBufferSize` | *long* | :heavy_minus_sign: | Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. | 102400 | +| `MediaIndex` | *long* | :heavy_minus_sign: | Index of the media to transcode. -1 or not specified indicates let the server choose. | 0 | +| `MusicBitrate` | *long* | :heavy_minus_sign: | Target bitrate for audio only files (in kbps, used to transcode). | 5000 | +| `Offset` | *double* | :heavy_minus_sign: | Offset from the start of the media (in seconds). | 90.5 | +| `PartIndex` | *long* | :heavy_minus_sign: | Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode | 0 | +| `Path` | *string* | :heavy_minus_sign: | Internal PMS path of the media to transcode. | /library/metadata/151671 | +| `PeakBitrate` | *long* | :heavy_minus_sign: | Maximum bitrate (in kbps) to use in ABR. | 12000 | +| `PhotoResolution` | *string* | :heavy_minus_sign: | Target photo resolution. | 1080x1080 | +| `Protocol` | [Models.Requests.Protocol](../../Models/Requests/Protocol.md) | :heavy_minus_sign: | Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
| dash | +| `SecondsPerSegment` | *long* | :heavy_minus_sign: | Number of seconds to include in each transcoded segment | 5 | +| `SubtitleSize` | *long* | :heavy_minus_sign: | Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) | 50 | +| `Subtitles` | [Models.Requests.Subtitles](../../Models/Requests/Subtitles.md) | :heavy_minus_sign: | Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
| Burn | +| `VideoBitrate` | *long* | :heavy_minus_sign: | Target video bitrate (in kbps). | 12000 | +| `VideoQuality` | *long* | :heavy_minus_sign: | Target photo quality. | 50 | +| `VideoResolution` | *string* | :heavy_minus_sign: | Target maximum video resolution. | 1080x1080 | +| `XPlexClientProfileExtra` | *string* | :heavy_minus_sign: | See [Profile Augmentations](#section/API-Info/Profile-Augmentations) . | add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash) | +| `XPlexClientProfileName` | *string* | :heavy_minus_sign: | Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. | generic | +| `XPlexSessionIdentifier` | *string* | :heavy_minus_sign: | Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) | | \ No newline at end of file diff --git a/docs/Models/Requests/MakeDecisionResponse.md b/docs/Models/Requests/MakeDecisionResponse.md new file mode 100644 index 0000000..8fa5664 --- /dev/null +++ b/docs/Models/Requests/MakeDecisionResponse.md @@ -0,0 +1,11 @@ +# MakeDecisionResponse + + +## 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 | +| `MediaContainerWithDecision` | [MediaContainerWithDecision](../../Models/Components/MediaContainerWithDecision.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/MarkPlayedRequest.md b/docs/Models/Requests/MarkPlayedRequest.md index cf766c8..5772dd7 100644 --- a/docs/Models/Requests/MarkPlayedRequest.md +++ b/docs/Models/Requests/MarkPlayedRequest.md @@ -3,6 +3,19 @@ ## 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 +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Identifier` | *string* | :heavy_check_mark: | The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library` | | +| `Key` | *string* | :heavy_minus_sign: | The key of the item to rate. This is the `ratingKey` found in metadata items | | +| `Uri` | *string* | :heavy_minus_sign: | The URI of the item to mark as played. See intro for description of the URIs | | \ No newline at end of file diff --git a/docs/Models/Requests/MarkUnplayedRequest.md b/docs/Models/Requests/MarkUnplayedRequest.md deleted file mode 100644 index e1ed9c8..0000000 --- a/docs/Models/Requests/MarkUnplayedRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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 deleted file mode 100644 index 7fc73c7..0000000 --- a/docs/Models/Requests/MarkUnplayedResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Marker.md b/docs/Models/Requests/Marker.md deleted file mode 100644 index 888fa84..0000000 --- a/docs/Models/Requests/Marker.md +++ /dev/null @@ -1,15 +0,0 @@ -# Marker - -The final status of the marker - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | N/A | 306970 | -| `Type` | *string* | :heavy_check_mark: | N/A | credits | -| `StartTimeOffset` | *long* | :heavy_check_mark: | N/A | 4176050 | -| `EndTimeOffset` | *long* | :heavy_check_mark: | N/A | 4393389 | -| `Final` | *bool* | :heavy_minus_sign: | N/A | true | -| `Attributes` | [Attributes](../../Models/Requests/Attributes.md) | :heavy_minus_sign: | Attributes associated with the marker. | | \ No newline at end of file diff --git a/docs/Models/Requests/MatchItemRequest.md b/docs/Models/Requests/MatchItemRequest.md new file mode 100644 index 0000000..5489252 --- /dev/null +++ b/docs/Models/Requests/MatchItemRequest.md @@ -0,0 +1,22 @@ +# MatchItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Guid` | *string* | :heavy_minus_sign: | N/A | | +| `Name` | *string* | :heavy_minus_sign: | N/A | | +| `Year` | *long* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/MatchItemResponse.md b/docs/Models/Requests/MatchItemResponse.md new file mode 100644 index 0000000..dd63985 --- /dev/null +++ b/docs/Models/Requests/MatchItemResponse.md @@ -0,0 +1,10 @@ +# MatchItemResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Media.md b/docs/Models/Requests/Media.md deleted file mode 100644 index e945cc0..0000000 --- a/docs/Models/Requests/Media.md +++ /dev/null @@ -1,26 +0,0 @@ -# Media - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `Duration` | *int* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | -| `Bitrate` | *int* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | -| `Width` | *int* | :heavy_minus_sign: | Video width in pixels. | 3840 | -| `Height` | *int* | :heavy_minus_sign: | Video height in pixels. | 1602 | -| `AspectRatio` | *float* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | -| `AudioChannels` | *int* | :heavy_minus_sign: | Number of audio channels. | 6 | -| `DisplayOffset` | *int* | :heavy_minus_sign: | N/A | 50 | -| `AudioCodec` | *string* | :heavy_minus_sign: | Audio codec used. | eac3 | -| `VideoCodec` | *string* | :heavy_minus_sign: | Video codec used. | hevc | -| `VideoResolution` | *string* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | -| `Container` | *string* | :heavy_minus_sign: | File container type. | mkv | -| `VideoFrameRate` | *string* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | -| `VideoProfile` | *string* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `HasVoiceActivity` | *bool* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | -| `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `OptimizedForStreaming` | [OptimizedForStreaming](../../Models/Requests/OptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `Part` | List<[Part](../../Models/Requests/Part.md)> | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/Models/Requests/MediaContainer.md b/docs/Models/Requests/MediaContainer.md index c02cbe0..536cc4e 100644 --- a/docs/Models/Requests/MediaContainer.md +++ b/docs/Models/Requests/MediaContainer.md @@ -1,58 +1,67 @@ # MediaContainer +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | -| `Size` | *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 +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| | +| `Size` | *long* | :heavy_minus_sign: | N/A | | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| | +| `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` | *long* | :heavy_minus_sign: | N/A | 7 | +| `MachineIdentifier` | *object* | :heavy_minus_sign: | N/A | 0123456789abcdef0123456789abcdef012345678 | +| `MediaProviders` | *bool* | :heavy_minus_sign: | N/A | | +| `Multiuser` | *bool* | :heavy_minus_sign: | N/A | | +| `MusicAnalysis` | *long* | :heavy_minus_sign: | N/A | 2 | +| `MyPlex` | *bool* | :heavy_minus_sign: | N/A | | +| `MyPlexMappingState` | *object* | :heavy_minus_sign: | N/A | mapped | +| `MyPlexSigninState` | *object* | :heavy_minus_sign: | N/A | ok | +| `MyPlexSubscription` | *bool* | :heavy_minus_sign: | N/A | | +| `MyPlexUsername` | *string* | :heavy_minus_sign: | N/A | | +| `OfflineTranscode` | *object* | :heavy_minus_sign: | N/A | 1 | +| `OwnerFeatures` | *string* | :heavy_minus_sign: | A comma-separated list of features which are enabled for the server owner | | +| `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` | *long* | :heavy_minus_sign: | N/A | | +| `StreamingBrainVersion` | *long* | :heavy_minus_sign: | N/A | | +| `Sync` | *bool* | :heavy_minus_sign: | N/A | | +| `TranscoderActiveVideoSessions` | *long* | :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` | *object* | :heavy_minus_sign: | The suggested video quality bitrates to present to the user | | +| `TranscoderVideoQualities` | *string* | :heavy_minus_sign: | N/A | | +| `TranscoderVideoResolutions` | *object* | :heavy_minus_sign: | The suggested video resolutions to the above quality bitrates | | +| `UpdatedAt` | *long* | :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 | | +| `Bandwidths` | [Bandwidths](../../Models/Requests/Bandwidths.md) | :heavy_minus_sign: | A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth | | +| `TerminationCode` | *long* | :heavy_minus_sign: | A code describing why the session was terminated by the server. | | +| `TerminationText` | *string* | :heavy_minus_sign: | A user friendly and localized text describing why the session was terminated by the server. | | \ No newline at end of file diff --git a/docs/Models/Requests/MediaGrabber.md b/docs/Models/Requests/MediaGrabber.md new file mode 100644 index 0000000..5a45546 --- /dev/null +++ b/docs/Models/Requests/MediaGrabber.md @@ -0,0 +1,10 @@ +# MediaGrabber + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Protocol` | *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/MediaProvider.md b/docs/Models/Requests/MediaProvider.md deleted file mode 100644 index 20d2684..0000000 --- a/docs/Models/Requests/MediaProvider.md +++ /dev/null @@ -1,12 +0,0 @@ -# MediaProvider - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | -| `Identifier` | *string* | :heavy_minus_sign: | N/A | -| `Title` | *string* | :heavy_minus_sign: | N/A | -| `Types` | *string* | :heavy_minus_sign: | N/A | -| `Protocols` | *string* | :heavy_minus_sign: | N/A | -| `Feature` | List<[Feature](../../Models/Requests/Feature.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/MediaReviewsVisibility.md b/docs/Models/Requests/MediaReviewsVisibility.md deleted file mode 100644 index b36e802..0000000 --- a/docs/Models/Requests/MediaReviewsVisibility.md +++ /dev/null @@ -1,11 +0,0 @@ -# MediaReviewsVisibility - -Whether or not the account has media reviews visibility enabled - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/MediaSettings.md b/docs/Models/Requests/MediaSettings.md new file mode 100644 index 0000000..2aa50c5 --- /dev/null +++ b/docs/Models/Requests/MediaSettings.md @@ -0,0 +1,27 @@ +# MediaSettings + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `AdvancedSubtitles` | [Models.Requests.AdvancedSubtitles](../../Models/Requests/AdvancedSubtitles.md) | :heavy_minus_sign: | N/A | +| `AudioBoost` | *long* | :heavy_minus_sign: | N/A | +| `AudioChannelCount` | *long* | :heavy_minus_sign: | N/A | +| `AutoAdjustQuality` | *bool* | :heavy_minus_sign: | N/A | +| `AutoAdjustSubtitle` | *bool* | :heavy_minus_sign: | N/A | +| `DirectPlay` | *bool* | :heavy_minus_sign: | N/A | +| `DirectStream` | *bool* | :heavy_minus_sign: | N/A | +| `DirectStreamAudio` | *bool* | :heavy_minus_sign: | N/A | +| `DisableResolutionRotation` | *bool* | :heavy_minus_sign: | N/A | +| `MaxVideoBitrate` | *long* | :heavy_minus_sign: | N/A | +| `MusicBitrate` | *long* | :heavy_minus_sign: | N/A | +| `PeakBitrate` | *long* | :heavy_minus_sign: | N/A | +| `PhotoQuality` | *long* | :heavy_minus_sign: | N/A | +| `PhotoResolution` | *string* | :heavy_minus_sign: | N/A | +| `SecondsPerSegment` | *long* | :heavy_minus_sign: | N/A | +| `Subtitles` | [GetPlaylistGeneratorSubtitles](../../Models/Requests/GetPlaylistGeneratorSubtitles.md) | :heavy_minus_sign: | N/A | +| `SubtitleSize` | *long* | :heavy_minus_sign: | N/A | +| `VideoBitrate` | *long* | :heavy_minus_sign: | N/A | +| `VideoQuality` | *long* | :heavy_minus_sign: | N/A | +| `VideoResolution` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/MediaSubscription.md b/docs/Models/Requests/MediaSubscription.md new file mode 100644 index 0000000..7c751a3 --- /dev/null +++ b/docs/Models/Requests/MediaSubscription.md @@ -0,0 +1,28 @@ +# MediaSubscription + +A media subscription contains a representation of metadata desired to be recorded + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `Title` | *string* | :heavy_minus_sign: | The title of this subscription type | This Episode | +| `Type` | *long* | :heavy_minus_sign: | Metadata type number | | +| `AiringsType` | *string* | :heavy_minus_sign: | N/A | | +| `CreatedAt` | *long* | :heavy_minus_sign: | N/A | | +| `Directory` | Dictionary | :heavy_minus_sign: | Media Matching Hints | | +| `DurationTotal` | *long* | :heavy_minus_sign: | Only included if `includeStorage` is specified | | +| `Key` | *string* | :heavy_minus_sign: | N/A | | +| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | N/A | | +| `LocationPath` | *string* | :heavy_minus_sign: | N/A | | +| `MediaGrabOperation` | List<[MediaGrabOperation](../../Models/Components/MediaGrabOperation.md)> | :heavy_minus_sign: | N/A | | +| `Playlist` | Dictionary | :heavy_minus_sign: | Media Matching Hints | | +| `Setting` | List<[Setting](../../Models/Components/Setting.md)> | :heavy_minus_sign: | N/A | | +| `StorageTotal` | *long* | :heavy_minus_sign: | Only included if `includeStorage` is specified | | +| `TargetLibrarySectionID` | *long* | :heavy_minus_sign: | Where this subscription will record to | | +| `TargetSectionLocationID` | *long* | :heavy_minus_sign: | The library section location id for where the item is to be recorded | | +| `Video` | Dictionary | :heavy_minus_sign: | Media Matching Hints | | +| `Parameters` | *string* | :heavy_minus_sign: | Parameter string for creating this subscription | | +| `Selected` | *bool* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/MergeItemsRequest.md b/docs/Models/Requests/MergeItemsRequest.md new file mode 100644 index 0000000..933842f --- /dev/null +++ b/docs/Models/Requests/MergeItemsRequest.md @@ -0,0 +1,20 @@ +# MergeItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `IdsPathParameter` | *string* | :heavy_check_mark: | N/A | | +| `IdsQueryParameter` | List<*string*> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/MergeItemsResponse.md b/docs/Models/Requests/MergeItemsResponse.md new file mode 100644 index 0000000..c8c6b5e --- /dev/null +++ b/docs/Models/Requests/MergeItemsResponse.md @@ -0,0 +1,10 @@ +# MergeItemsResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Meta.md b/docs/Models/Requests/Meta.md deleted file mode 100644 index c6f895c..0000000 --- a/docs/Models/Requests/Meta.md +++ /dev/null @@ -1,12 +0,0 @@ -# Meta - -The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `Type` | List<[GetRecentlyAddedType](../../Models/Requests/GetRecentlyAddedType.md)> | :heavy_minus_sign: | N/A | -| `FieldType` | List<[GetRecentlyAddedFieldType](../../Models/Requests/GetRecentlyAddedFieldType.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 index 53f0d89..3750562 100644 --- a/docs/Models/Requests/Metadata.md +++ b/docs/Models/Requests/Metadata.md @@ -1,42 +1,85 @@ # Metadata +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `Art` | *string* | :heavy_minus_sign: | N/A | -| `Guid` | *string* | :heavy_minus_sign: | N/A | -| `Key` | *string* | :heavy_minus_sign: | N/A | -| `RatingKey` | *string* | :heavy_minus_sign: | N/A | -| `Studio` | *string* | :heavy_minus_sign: | N/A | -| `Tagline` | *string* | :heavy_minus_sign: | N/A | -| `Type` | *string* | :heavy_minus_sign: | N/A | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | -| `AddedAt` | *int* | :heavy_minus_sign: | N/A | -| `Duration` | *int* | :heavy_minus_sign: | N/A | -| `PublicPagesURL` | *string* | :heavy_minus_sign: | N/A | -| `Slug` | *string* | :heavy_minus_sign: | N/A | -| `UserState` | *bool* | :heavy_minus_sign: | N/A | -| `Title` | *string* | :heavy_minus_sign: | N/A | -| `ContentRating` | *string* | :heavy_minus_sign: | N/A | -| `OriginallyAvailableAt` | [LocalDate](https://nodatime.org/3.1.x/api/NodaTime.LocalDate.html) | :heavy_minus_sign: | N/A | -| `Year` | *int* | :heavy_minus_sign: | N/A | -| `Image` | List<[Image](../../Models/Requests/Image.md)> | :heavy_minus_sign: | N/A | -| `Banner` | *string* | :heavy_minus_sign: | N/A | -| `Rating` | *double* | :heavy_minus_sign: | N/A | -| `ExpiresAt` | *int* | :heavy_minus_sign: | N/A | -| `OriginalTitle` | *string* | :heavy_minus_sign: | N/A | -| `AudienceRating` | *double* | :heavy_minus_sign: | N/A | -| `AudienceRatingImage` | *string* | :heavy_minus_sign: | N/A | -| `RatingImage` | *string* | :heavy_minus_sign: | N/A | -| `ImdbRatingCount` | *int* | :heavy_minus_sign: | N/A | -| `Subtype` | *string* | :heavy_minus_sign: | N/A | -| `Theme` | *string* | :heavy_minus_sign: | N/A | -| `LeafCount` | *int* | :heavy_minus_sign: | N/A | -| `ChildCount` | *int* | :heavy_minus_sign: | N/A | -| `IsContinuingSeries` | *bool* | :heavy_minus_sign: | N/A | -| `SkipChildren` | *bool* | :heavy_minus_sign: | N/A | -| `AvailabilityId` | *string* | :heavy_minus_sign: | N/A | -| `StreamingMediaId` | *string* | :heavy_minus_sign: | N/A | -| `PlayableKey` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Player` | [Player](../../Models/Components/Player.md) | :heavy_minus_sign: | Information about the player being used for playback | +| `Session` | [Session](../../Models/Components/Session.md) | :heavy_minus_sign: | Information about the playback session | +| `User` | [User](../../Models/Components/User.md) | :heavy_minus_sign: | The user playing the content | +| `Title` | *object* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `Type` | *object* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `AbsoluteIndex` | *long* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `AddedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `Art` | *object* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `AudienceRating` | *double* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `AudienceRatingImage` | *object* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `Autotag` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Banner` | *object* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `ChapterSource` | *object* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `Composite` | *object* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `ContentRating` | *object* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `Country` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Director` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Duration` | *long* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `Filter` | List<[Filter](../../Models/Components/Filter.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Genre` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `GrandparentArt` | *string* | :heavy_minus_sign: | The `art` of the grandparent | +| `GrandparentHero` | *string* | :heavy_minus_sign: | The `hero` of the grandparent | +| `GrandparentKey` | *string* | :heavy_minus_sign: | The `key` of the grandparent | +| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `GrandparentTheme` | *string* | :heavy_minus_sign: | The `theme` of the grandparent | +| `GrandparentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `GrandparentTitle` | *string* | :heavy_minus_sign: | The `title` of the grandparent | +| `Guid` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Hero` | *object* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `Image` | List<[Image](../../Models/Components/Image.md)> | :heavy_minus_sign: | N/A | +| `Index` | *long* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `Key` | *object* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `LastViewedAt` | *long* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `LeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `Media` | List<[Media](../../Models/Components/Media.md)> | :heavy_minus_sign: | N/A | +| `OriginallyAvailableAt` | *object* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `OriginalTitle` | *object* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `ParentHero` | *string* | :heavy_minus_sign: | The `hero` of the parent | +| `ParentIndex` | *long* | :heavy_minus_sign: | The `index` of the parent | +| `ParentKey` | *string* | :heavy_minus_sign: | The `key` of the parent | +| `ParentRatingKey` | *string* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `ParentThumb` | *string* | :heavy_minus_sign: | The `thumb` of the parent | +| `ParentTitle` | *string* | :heavy_minus_sign: | The `title` of the parent | +| `PrimaryExtraKey` | *object* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `Prompt` | *string* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `Rating` | *double* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `RatingArray` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `RatingCount` | *long* | :heavy_minus_sign: | Number of ratings under this metadata | +| `RatingImage` | *object* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `RatingKey` | *object* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `Role` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Search` | *bool* | :heavy_minus_sign: | Indicates this is a search directory | +| `Secondary` | *bool* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `SkipChildren` | *bool* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `SkipParent` | *bool* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `Sort` | List<[Sort](../../Models/Components/Sort.md)> | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `Studio` | *object* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `Subtype` | *object* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `Summary` | *object* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `Tagline` | *object* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `Theme` | *object* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `Thumb` | *object* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `TitleSort` | *object* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `UpdatedAt` | *long* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `UserRating` | *double* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `ViewCount` | *long* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `ViewedLeafCount` | *long* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `ViewOffset` | *long* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `Writer` | List<[Tag](../../Models/Components/Tag.md)> | :heavy_minus_sign: | N/A | +| `Year` | *long* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `AdditionalProperties` | Dictionary | :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 deleted file mode 100644 index cb991b5..0000000 --- a/docs/Models/Requests/MinSize.md +++ /dev/null @@ -1,11 +0,0 @@ -# MinSize - -images are always scaled proportionally. A value of '1' in minSize will make the smaller native dimension the dimension resized against. - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/ModifyDeviceMediaContainer.md b/docs/Models/Requests/ModifyDeviceMediaContainer.md new file mode 100644 index 0000000..6a1cc37 --- /dev/null +++ b/docs/Models/Requests/ModifyDeviceMediaContainer.md @@ -0,0 +1,18 @@ +# ModifyDeviceMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Message` | *string* | :heavy_minus_sign: | N/A | +| `Status` | *long* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ModifyDeviceRequest.md b/docs/Models/Requests/ModifyDeviceRequest.md new file mode 100644 index 0000000..61f5269 --- /dev/null +++ b/docs/Models/Requests/ModifyDeviceRequest.md @@ -0,0 +1,20 @@ +# ModifyDeviceRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DeviceId` | *long* | :heavy_check_mark: | The ID of the device. | | +| `Enabled` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether to enable the device | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/ModifyDeviceResponse.md b/docs/Models/Requests/ModifyDeviceResponse.md new file mode 100644 index 0000000..f3220ba --- /dev/null +++ b/docs/Models/Requests/ModifyDeviceResponse.md @@ -0,0 +1,12 @@ +# ModifyDeviceResponse + + +## 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` | [ModifyDeviceResponseBody](../../Models/Requests/ModifyDeviceResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ModifyDeviceResponseBody.md b/docs/Models/Requests/ModifyDeviceResponseBody.md new file mode 100644 index 0000000..671fc1a --- /dev/null +++ b/docs/Models/Requests/ModifyDeviceResponseBody.md @@ -0,0 +1,10 @@ +# ModifyDeviceResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `MediaContainer` | [ModifyDeviceMediaContainer](../../Models/Requests/ModifyDeviceMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/MoveCollectionItemRequest.md b/docs/Models/Requests/MoveCollectionItemRequest.md new file mode 100644 index 0000000..63af5c2 --- /dev/null +++ b/docs/Models/Requests/MoveCollectionItemRequest.md @@ -0,0 +1,21 @@ +# MoveCollectionItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `CollectionId` | *long* | :heavy_check_mark: | The collection id | | +| `ItemId` | *long* | :heavy_check_mark: | The item to move | | +| `After` | *long* | :heavy_minus_sign: | The item to move this item after. If not provided, this item will be moved to the beginning | | \ No newline at end of file diff --git a/docs/Models/Requests/MoveCollectionItemResponse.md b/docs/Models/Requests/MoveCollectionItemResponse.md new file mode 100644 index 0000000..9c8f3ac --- /dev/null +++ b/docs/Models/Requests/MoveCollectionItemResponse.md @@ -0,0 +1,11 @@ +# MoveCollectionItemResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/MoveHubRequest.md b/docs/Models/Requests/MoveHubRequest.md new file mode 100644 index 0000000..d198304 --- /dev/null +++ b/docs/Models/Requests/MoveHubRequest.md @@ -0,0 +1,21 @@ +# MoveHubRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | The section ID for the hubs to reorder | | +| `Identifier` | *string* | :heavy_check_mark: | The identifier of the hub to move | | +| `After` | *string* | :heavy_minus_sign: | The identifier of the hub to order this hub after (or empty/missing to put this hub first) | | \ No newline at end of file diff --git a/docs/Models/Requests/MoveHubResponse.md b/docs/Models/Requests/MoveHubResponse.md new file mode 100644 index 0000000..4fd41ef --- /dev/null +++ b/docs/Models/Requests/MoveHubResponse.md @@ -0,0 +1,12 @@ +# MoveHubResponse + + +## 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 | +| `GetResponses200` | [GetResponses200](../../Models/Components/GetResponses200.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/MovePlayQueueItemRequest.md b/docs/Models/Requests/MovePlayQueueItemRequest.md new file mode 100644 index 0000000..d05d87e --- /dev/null +++ b/docs/Models/Requests/MovePlayQueueItemRequest.md @@ -0,0 +1,21 @@ +# MovePlayQueueItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlayQueueId` | *long* | :heavy_check_mark: | The ID of the play queue. | | +| `PlayQueueItemId` | *long* | :heavy_check_mark: | The play queue item ID to delete. | | +| `After` | *long* | :heavy_minus_sign: | The play queue item ID to insert the new item after. If not present, moves to the beginning. | | \ No newline at end of file diff --git a/docs/Models/Requests/MovePlayQueueItemResponse.md b/docs/Models/Requests/MovePlayQueueItemResponse.md new file mode 100644 index 0000000..c8bb954 --- /dev/null +++ b/docs/Models/Requests/MovePlayQueueItemResponse.md @@ -0,0 +1,11 @@ +# MovePlayQueueItemResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/MovePlaylistItemRequest.md b/docs/Models/Requests/MovePlaylistItemRequest.md new file mode 100644 index 0000000..f13b880 --- /dev/null +++ b/docs/Models/Requests/MovePlaylistItemRequest.md @@ -0,0 +1,21 @@ +# MovePlaylistItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistId` | *long* | :heavy_check_mark: | The ID of the playlist | | +| `PlaylistItemId` | *long* | :heavy_check_mark: | The playlist item ID to move. | | +| `After` | *long* | :heavy_minus_sign: | The playlist item ID to insert the new item after. If not provided, item is moved to beginning of playlist | | \ No newline at end of file diff --git a/docs/Models/Requests/MovePlaylistItemResponse.md b/docs/Models/Requests/MovePlaylistItemResponse.md new file mode 100644 index 0000000..adb99dc --- /dev/null +++ b/docs/Models/Requests/MovePlaylistItemResponse.md @@ -0,0 +1,11 @@ +# MovePlaylistItemResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/MyPlex.md b/docs/Models/Requests/MyPlex.md deleted file mode 100644 index 849c8de..0000000 --- a/docs/Models/Requests/MyPlex.md +++ /dev/null @@ -1,19 +0,0 @@ -# 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/One.md b/docs/Models/Requests/One.md deleted file mode 100644 index d2f212e..0000000 --- a/docs/Models/Requests/One.md +++ /dev/null @@ -1,9 +0,0 @@ -# One - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/OnlyTransient.md b/docs/Models/Requests/OnlyTransient.md deleted file mode 100644 index 763848f..0000000 --- a/docs/Models/Requests/OnlyTransient.md +++ /dev/null @@ -1,11 +0,0 @@ -# OnlyTransient - -Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Operator.md b/docs/Models/Requests/Operator.md deleted file mode 100644 index 59acf7e..0000000 --- a/docs/Models/Requests/Operator.md +++ /dev/null @@ -1,9 +0,0 @@ -# Operator - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Key` | *string* | :heavy_check_mark: | N/A | = | -| `Title` | *string* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/Models/Requests/OptimizeDatabaseRequest.md b/docs/Models/Requests/OptimizeDatabaseRequest.md new file mode 100644 index 0000000..38ab512 --- /dev/null +++ b/docs/Models/Requests/OptimizeDatabaseRequest.md @@ -0,0 +1,19 @@ +# OptimizeDatabaseRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Async` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | If set, don't wait for completion but return an activity | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/OptimizeDatabaseResponse.md b/docs/Models/Requests/OptimizeDatabaseResponse.md new file mode 100644 index 0000000..3a9db75 --- /dev/null +++ b/docs/Models/Requests/OptimizeDatabaseResponse.md @@ -0,0 +1,10 @@ +# OptimizeDatabaseResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/OptimizedForStreaming.md b/docs/Models/Requests/OptimizedForStreaming.md deleted file mode 100644 index 0226023..0000000 --- a/docs/Models/Requests/OptimizedForStreaming.md +++ /dev/null @@ -1,18 +0,0 @@ -# OptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### One - -```csharp -OptimizedForStreaming.CreateOne(/* values here */); -``` - -### Boolean - -```csharp -OptimizedForStreaming.CreateBoolean(/* values here */); -``` diff --git a/docs/Models/Requests/OptimizedForStreaming1.md b/docs/Models/Requests/OptimizedForStreaming1.md deleted file mode 100644 index 80b4911..0000000 --- a/docs/Models/Requests/OptimizedForStreaming1.md +++ /dev/null @@ -1,9 +0,0 @@ -# OptimizedForStreaming1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Owned.md b/docs/Models/Requests/Owned.md deleted file mode 100644 index 6f7fa48..0000000 --- a/docs/Models/Requests/Owned.md +++ /dev/null @@ -1,11 +0,0 @@ -# Owned - -Indicates if the user owns the server. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Params.md b/docs/Models/Requests/Params.md new file mode 100644 index 0000000..b26379e --- /dev/null +++ b/docs/Models/Requests/Params.md @@ -0,0 +1,12 @@ +# Params + +Subscription parameters. + - `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into + - `source`: Required for downloads to indicate the source of the downloaded content. + + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/Part.md b/docs/Models/Requests/Part.md deleted file mode 100644 index 2d70180..0000000 --- a/docs/Models/Requests/Part.md +++ /dev/null @@ -1,23 +0,0 @@ -# Part - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -| `Accessible` | *bool* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `Exists` | *bool* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `Id` | *long* | :heavy_check_mark: | Unique part identifier. | 418385 | -| `Key` | *string* | :heavy_check_mark: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | -| `Indexes` | *string* | :heavy_minus_sign: | N/A | sd | -| `Duration` | *int* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | -| `File` | *string* | :heavy_check_mark: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | -| `Size` | *long* | :heavy_check_mark: | File size in bytes. | 30649952104 | -| `PacketLength` | *int* | :heavy_minus_sign: | N/A | 188 | -| `Container` | *string* | :heavy_minus_sign: | Container format of the part. | mkv | -| `VideoProfile` | *string* | :heavy_minus_sign: | Video profile for the part. | main 10 | -| `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `OptimizedForStreaming` | [GetRecentlyAddedOptimizedForStreaming](../../Models/Requests/GetRecentlyAddedOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `HasThumbnail` | [HasThumbnail](../../Models/Requests/HasThumbnail.md) | :heavy_minus_sign: | N/A | 1 | -| `Stream` | List<[Stream](../../Models/Requests/Stream.md)> | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/Models/Requests/PastSubscription.md b/docs/Models/Requests/PastSubscription.md deleted file mode 100644 index 07fa2c4..0000000 --- a/docs/Models/Requests/PastSubscription.md +++ /dev/null @@ -1,22 +0,0 @@ -# PastSubscription - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `Id` | *string* | :heavy_check_mark: | N/A | | -| `Mode` | *string* | :heavy_check_mark: | N/A | | -| `RenewsAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | -| `EndsAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | -| `Canceled` | *bool* | :heavy_minus_sign: | N/A | false | -| `GracePeriod` | *bool* | :heavy_minus_sign: | N/A | false | -| `OnHold` | *bool* | :heavy_minus_sign: | N/A | false | -| `CanReactivate` | *bool* | :heavy_minus_sign: | N/A | false | -| `CanUpgrade` | *bool* | :heavy_minus_sign: | N/A | false | -| `CanDowngrade` | *bool* | :heavy_minus_sign: | N/A | false | -| `CanConvert` | *bool* | :heavy_minus_sign: | N/A | false | -| `Type` | *string* | :heavy_check_mark: | N/A | plexpass | -| `Transfer` | *string* | :heavy_check_mark: | N/A | | -| `State` | [PostUsersSignInDataState](../../Models/Requests/PostUsersSignInDataState.md) | :heavy_check_mark: | N/A | ended | -| `Billing` | [Billing](../../Models/Requests/Billing.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/PathParamElement.md b/docs/Models/Requests/PathParamElement.md new file mode 100644 index 0000000..38bee65 --- /dev/null +++ b/docs/Models/Requests/PathParamElement.md @@ -0,0 +1,13 @@ +# PathParamElement + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Thumb` | thumb | +| `Art` | art | +| `ClearLogo` | clearLogo | +| `Banner` | banner | +| `Poster` | poster | +| `Theme` | theme | \ No newline at end of file diff --git a/docs/Models/Requests/PathParamIndex.md b/docs/Models/Requests/PathParamIndex.md new file mode 100644 index 0000000..7f51799 --- /dev/null +++ b/docs/Models/Requests/PathParamIndex.md @@ -0,0 +1,10 @@ +# PathParamIndex + +The type of index to grab. + + +## Values + +| Name | Value | +| ----- | ----- | +| `Sd` | sd | \ No newline at end of file diff --git a/docs/Models/Requests/PathParamTask.md b/docs/Models/Requests/PathParamTask.md new file mode 100644 index 0000000..1b38099 --- /dev/null +++ b/docs/Models/Requests/PathParamTask.md @@ -0,0 +1,31 @@ +# PathParamTask + +The task name + + +## Values + +| Name | Value | +| ---------------------------------- | ---------------------------------- | +| `AutomaticUpdates` | AutomaticUpdates | +| `BackupDatabase` | BackupDatabase | +| `ButlerTaskGenerateAdMarkers` | ButlerTaskGenerateAdMarkers | +| `ButlerTaskGenerateCreditsMarkers` | ButlerTaskGenerateCreditsMarkers | +| `ButlerTaskGenerateIntroMarkers` | ButlerTaskGenerateIntroMarkers | +| `ButlerTaskGenerateVoiceActivity` | ButlerTaskGenerateVoiceActivity | +| `CleanOldBundles` | CleanOldBundles | +| `CleanOldCacheFiles` | CleanOldCacheFiles | +| `DeepMediaAnalysis` | DeepMediaAnalysis | +| `GarbageCollectBlobs` | GarbageCollectBlobs | +| `GarbageCollectLibraryMedia` | GarbageCollectLibraryMedia | +| `GenerateBlurHashes` | GenerateBlurHashes | +| `GenerateChapterThumbs` | GenerateChapterThumbs | +| `GenerateMediaIndexFiles` | GenerateMediaIndexFiles | +| `LoudnessAnalysis` | LoudnessAnalysis | +| `MusicAnalysis` | MusicAnalysis | +| `OptimizeDatabase` | OptimizeDatabase | +| `RefreshEpgGuides` | RefreshEpgGuides | +| `RefreshLibraries` | RefreshLibraries | +| `RefreshLocalMedia` | RefreshLocalMedia | +| `RefreshPeriodicMetadata` | RefreshPeriodicMetadata | +| `UpgradeMediaAnalysis` | UpgradeMediaAnalysis | \ No newline at end of file diff --git a/docs/Models/Requests/PathParamTaskName.md b/docs/Models/Requests/PathParamTaskName.md deleted file mode 100644 index 650e15c..0000000 --- a/docs/Models/Requests/PathParamTaskName.md +++ /dev/null @@ -1,23 +0,0 @@ -# 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/Pending.md b/docs/Models/Requests/Pending.md deleted file mode 100644 index 5388510..0000000 --- a/docs/Models/Requests/Pending.md +++ /dev/null @@ -1,11 +0,0 @@ -# Pending - -Indicates if the server is pending approval. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/PerformSearchRequest.md b/docs/Models/Requests/PerformSearchRequest.md deleted file mode 100644 index d46f56f..0000000 --- a/docs/Models/Requests/PerformSearchRequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 deleted file mode 100644 index b464bb9..0000000 --- a/docs/Models/Requests/PerformSearchResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/PerformVoiceSearchRequest.md b/docs/Models/Requests/PerformVoiceSearchRequest.md deleted file mode 100644 index b378ecd..0000000 --- a/docs/Models/Requests/PerformVoiceSearchRequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 deleted file mode 100644 index d7a8716..0000000 --- a/docs/Models/Requests/PerformVoiceSearchResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/PlayQueueGenerator.md b/docs/Models/Requests/PlayQueueGenerator.md new file mode 100644 index 0000000..a68b4b4 --- /dev/null +++ b/docs/Models/Requests/PlayQueueGenerator.md @@ -0,0 +1,14 @@ +# PlayQueueGenerator + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `ChangedAt` | *long* | :heavy_minus_sign: | N/A | +| `CreatedAt` | *long* | :heavy_minus_sign: | N/A | +| `Id` | *long* | :heavy_minus_sign: | N/A | +| `PlaylistID` | *long* | :heavy_minus_sign: | N/A | +| `Type` | [GetPlaylistGeneratorsType](../../Models/Requests/GetPlaylistGeneratorsType.md) | :heavy_minus_sign: | The type of playlist generator.

- -1: A smart playlist generator
- 42: A optimized version generator
| +| `UpdatedAt` | *long* | :heavy_minus_sign: | N/A | +| `Uri` | *string* | :heavy_minus_sign: | The URI indicating the search for this generator | \ No newline at end of file diff --git a/docs/Models/Requests/Player.md b/docs/Models/Requests/Player.md deleted file mode 100644 index b3f32f7..0000000 --- a/docs/Models/Requests/Player.md +++ /dev/null @@ -1,22 +0,0 @@ -# Player - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `Address` | *string* | :heavy_minus_sign: | N/A | 10.10.10.171 | -| `MachineIdentifier` | *string* | :heavy_minus_sign: | N/A | 3tsdzir85m2onc3qyr255aq1 | -| `Model` | *string* | :heavy_minus_sign: | N/A | standalone | -| `Platform` | *string* | :heavy_minus_sign: | N/A | windows | -| `PlatformVersion` | *string* | :heavy_minus_sign: | N/A | 10.0.22621 | -| `Product` | *string* | :heavy_minus_sign: | N/A | Plex for Windows | -| `Profile` | *string* | :heavy_minus_sign: | N/A | Plex Desktop | -| `RemotePublicAddress` | *string* | :heavy_minus_sign: | N/A | 68.248.140.20 | -| `State` | *string* | :heavy_minus_sign: | N/A | playing | -| `Title` | *string* | :heavy_minus_sign: | N/A | DESKTOP-BL80MTD | -| `Version` | *string* | :heavy_minus_sign: | N/A | 1.85.0.4071-21128b56 | -| `Local` | *bool* | :heavy_minus_sign: | N/A | true | -| `Relayed` | *bool* | :heavy_minus_sign: | N/A | false | -| `Secure` | *bool* | :heavy_minus_sign: | N/A | true | -| `UserID` | *int* | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/PlaylistType.md b/docs/Models/Requests/PlaylistType.md index c09c1e5..289c3ec 100644 --- a/docs/Models/Requests/PlaylistType.md +++ b/docs/Models/Requests/PlaylistType.md @@ -1,6 +1,6 @@ # PlaylistType -limit to a type of playlist. +Limit to a type of playlist ## Values diff --git a/docs/Models/Requests/PlexDevice.md b/docs/Models/Requests/PlexDevice.md deleted file mode 100644 index ce74b53..0000000 --- a/docs/Models/Requests/PlexDevice.md +++ /dev/null @@ -1,31 +0,0 @@ -# PlexDevice - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `Name` | *string* | :heavy_check_mark: | N/A | | -| `Product` | *string* | :heavy_check_mark: | N/A | | -| `ProductVersion` | *string* | :heavy_check_mark: | N/A | | -| `Platform` | *string* | :heavy_check_mark: | N/A | | -| `PlatformVersion` | *string* | :heavy_check_mark: | N/A | | -| `Device` | *string* | :heavy_check_mark: | N/A | | -| `ClientIdentifier` | *string* | :heavy_check_mark: | N/A | | -| `CreatedAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_check_mark: | N/A | 2019-06-24T11:38:02Z | -| `LastSeenAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_check_mark: | N/A | 2019-06-24T11:38:02Z | -| `Provides` | *string* | :heavy_check_mark: | N/A | | -| `OwnerId` | *long* | :heavy_check_mark: | ownerId is null when the device is owned by the token used to send the request | | -| `SourceTitle` | *string* | :heavy_check_mark: | N/A | | -| `PublicAddress` | *string* | :heavy_check_mark: | N/A | | -| `AccessToken` | *string* | :heavy_check_mark: | N/A | | -| `Owned` | *bool* | :heavy_check_mark: | N/A | | -| `Home` | *bool* | :heavy_check_mark: | N/A | | -| `Synced` | *bool* | :heavy_check_mark: | N/A | | -| `Relay` | *bool* | :heavy_check_mark: | N/A | | -| `Presence` | *bool* | :heavy_check_mark: | N/A | | -| `HttpsRequired` | *bool* | :heavy_check_mark: | N/A | | -| `PublicAddressMatches` | *bool* | :heavy_check_mark: | N/A | | -| `DnsRebindingProtection` | *bool* | :heavy_check_mark: | N/A | | -| `NatLoopbackSupported` | *bool* | :heavy_check_mark: | N/A | | -| `Connections` | List<[Connections](../../Models/Requests/Connections.md)> | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/Policy.md b/docs/Models/Requests/Policy.md new file mode 100644 index 0000000..b4b45a3 --- /dev/null +++ b/docs/Models/Requests/Policy.md @@ -0,0 +1,10 @@ +# Policy + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `Scope` | [GetPlaylistGeneratorScope](../../Models/Requests/GetPlaylistGeneratorScope.md) | :heavy_minus_sign: | N/A | +| `Unwatched` | *bool* | :heavy_minus_sign: | True if only unwatched items are optimized | +| `Value` | *long* | :heavy_minus_sign: | If the scope is count, the number of items to optimize | \ No newline at end of file diff --git a/docs/Models/Requests/PostMediaArtsRequest.md b/docs/Models/Requests/PostMediaArtsRequest.md deleted file mode 100644 index 93a15da..0000000 --- a/docs/Models/Requests/PostMediaArtsRequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# PostMediaArtsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `RatingKey` | *long* | :heavy_check_mark: | the id of the library item to return the posters of. | 2268 | -| `Url` | *string* | :heavy_minus_sign: | The URL of the image, if uploading a remote image | https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b | -| `RequestBody` | *byte[]* | :heavy_minus_sign: | The contents of the image, if uploading a local file | | \ No newline at end of file diff --git a/docs/Models/Requests/PostMediaArtsResponse.md b/docs/Models/Requests/PostMediaArtsResponse.md deleted file mode 100644 index db680d6..0000000 --- a/docs/Models/Requests/PostMediaArtsResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# PostMediaArtsResponse - - -## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/PostMediaPosterRequest.md b/docs/Models/Requests/PostMediaPosterRequest.md deleted file mode 100644 index 880bd92..0000000 --- a/docs/Models/Requests/PostMediaPosterRequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# PostMediaPosterRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `RatingKey` | *long* | :heavy_check_mark: | the id of the library item to return the posters of. | 2268 | -| `Url` | *string* | :heavy_minus_sign: | The URL of the image, if uploading a remote image | https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b | -| `RequestBody` | *byte[]* | :heavy_minus_sign: | The contents of the image, if uploading a local file | | \ No newline at end of file diff --git a/docs/Models/Requests/PostMediaPosterResponse.md b/docs/Models/Requests/PostMediaPosterResponse.md deleted file mode 100644 index b27d0f6..0000000 --- a/docs/Models/Requests/PostMediaPosterResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# PostMediaPosterResponse - - -## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataAuthenticationResponseStatus.md b/docs/Models/Requests/PostUsersSignInDataAuthenticationResponseStatus.md deleted file mode 100644 index cad1ab8..0000000 --- a/docs/Models/Requests/PostUsersSignInDataAuthenticationResponseStatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataAuthenticationResponseStatus - -String representation of subscriptionActive - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `Inactive` | Inactive | -| `Active` | Active | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataAuthenticationStatus.md b/docs/Models/Requests/PostUsersSignInDataAuthenticationStatus.md deleted file mode 100644 index 67f6e0c..0000000 --- a/docs/Models/Requests/PostUsersSignInDataAuthenticationStatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataAuthenticationStatus - -String representation of subscriptionActive - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `Inactive` | Inactive | -| `Active` | Active | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataAuthenticationSubscription.md b/docs/Models/Requests/PostUsersSignInDataAuthenticationSubscription.md deleted file mode 100644 index 1751827..0000000 --- a/docs/Models/Requests/PostUsersSignInDataAuthenticationSubscription.md +++ /dev/null @@ -1,13 +0,0 @@ -# PostUsersSignInDataAuthenticationSubscription - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | -| `Features` | List<*string*> | :heavy_minus_sign: | List of features allowed on your Plex Pass subscription | | -| `Active` | *bool* | :heavy_minus_sign: | If the account's Plex Pass subscription is active | true | -| `SubscribedAt` | *string* | :heavy_minus_sign: | Date the account subscribed to Plex Pass | 2021-04-12T18:21:12Z | -| `Status` | [PostUsersSignInDataAuthenticationResponseStatus](../../Models/Requests/PostUsersSignInDataAuthenticationResponseStatus.md) | :heavy_minus_sign: | String representation of subscriptionActive | Inactive | -| `PaymentService` | *string* | :heavy_minus_sign: | Payment service used for your Plex Pass subscription | | -| `Plan` | *string* | :heavy_minus_sign: | Name of Plex Pass subscription plan | | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataAutoSelectSubtitle.md b/docs/Models/Requests/PostUsersSignInDataAutoSelectSubtitle.md deleted file mode 100644 index a1932db..0000000 --- a/docs/Models/Requests/PostUsersSignInDataAutoSelectSubtitle.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataAutoSelectSubtitle - -The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled) - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataDefaultSubtitleAccessibility.md b/docs/Models/Requests/PostUsersSignInDataDefaultSubtitleAccessibility.md deleted file mode 100644 index 254dd69..0000000 --- a/docs/Models/Requests/PostUsersSignInDataDefaultSubtitleAccessibility.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataDefaultSubtitleAccessibility - -The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles) - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataDefaultSubtitleForced.md b/docs/Models/Requests/PostUsersSignInDataDefaultSubtitleForced.md deleted file mode 100644 index df66898..0000000 --- a/docs/Models/Requests/PostUsersSignInDataDefaultSubtitleForced.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataDefaultSubtitleForced - -The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles) - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataMailingListStatus.md b/docs/Models/Requests/PostUsersSignInDataMailingListStatus.md deleted file mode 100644 index d969cd9..0000000 --- a/docs/Models/Requests/PostUsersSignInDataMailingListStatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataMailingListStatus - -Your current mailing list status (active or unsubscribed) - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `Active` | active | -| `Unsubscribed` | unsubscribed | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataMediaReviewsVisibility.md b/docs/Models/Requests/PostUsersSignInDataMediaReviewsVisibility.md deleted file mode 100644 index 234a440..0000000 --- a/docs/Models/Requests/PostUsersSignInDataMediaReviewsVisibility.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataMediaReviewsVisibility - -Whether or not the account has media reviews visibility enabled - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataRequest.md b/docs/Models/Requests/PostUsersSignInDataRequest.md deleted file mode 100644 index 1971235..0000000 --- a/docs/Models/Requests/PostUsersSignInDataRequest.md +++ /dev/null @@ -1,13 +0,0 @@ -# PostUsersSignInDataRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `ClientName` | *string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku | -| `DeviceNickname` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `ClientVersion` | *string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 | -| `Platform` | *string* | :heavy_minus_sign: | The platform of the client application. | Roku | -| `RequestBody` | [PostUsersSignInDataRequestBody](../../Models/Requests/PostUsersSignInDataRequestBody.md) | :heavy_minus_sign: | Login credentials | | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataRequestBody.md b/docs/Models/Requests/PostUsersSignInDataRequestBody.md deleted file mode 100644 index cc21d2d..0000000 --- a/docs/Models/Requests/PostUsersSignInDataRequestBody.md +++ /dev/null @@ -1,13 +0,0 @@ -# PostUsersSignInDataRequestBody - -Login credentials - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Login` | *string* | :heavy_check_mark: | N/A | username@email.com | -| `Password` | *string* | :heavy_check_mark: | N/A | password123 | -| `RememberMe` | *bool* | :heavy_minus_sign: | N/A | | -| `VerificationCode` | *string* | :heavy_minus_sign: | N/A | 123456 | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataResponse.md b/docs/Models/Requests/PostUsersSignInDataResponse.md deleted file mode 100644 index 5e700a7..0000000 --- a/docs/Models/Requests/PostUsersSignInDataResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataResponse - - -## 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 | -| `UserPlexAccount` | [PostUsersSignInDataUserPlexAccount](../../Models/Requests/PostUsersSignInDataUserPlexAccount.md) | :heavy_minus_sign: | Returns the user account data with a valid auth token | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataServices.md b/docs/Models/Requests/PostUsersSignInDataServices.md deleted file mode 100644 index dd84dbf..0000000 --- a/docs/Models/Requests/PostUsersSignInDataServices.md +++ /dev/null @@ -1,12 +0,0 @@ -# PostUsersSignInDataServices - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| `Identifier` | *string* | :heavy_check_mark: | N/A | metadata-dev | -| `Endpoint` | *string* | :heavy_check_mark: | N/A | https://epg.provider.plex.tv | -| `Token` | *string* | :heavy_check_mark: | N/A | DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv | -| `Secret` | *string* | :heavy_check_mark: | N/A | | -| `Status` | [PostUsersSignInDataStatus](../../Models/Requests/PostUsersSignInDataStatus.md) | :heavy_check_mark: | N/A | online | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataState.md b/docs/Models/Requests/PostUsersSignInDataState.md deleted file mode 100644 index 3801e7b..0000000 --- a/docs/Models/Requests/PostUsersSignInDataState.md +++ /dev/null @@ -1,8 +0,0 @@ -# PostUsersSignInDataState - - -## Values - -| Name | Value | -| ------- | ------- | -| `Ended` | ended | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataStatus.md b/docs/Models/Requests/PostUsersSignInDataStatus.md deleted file mode 100644 index d7c49a1..0000000 --- a/docs/Models/Requests/PostUsersSignInDataStatus.md +++ /dev/null @@ -1,9 +0,0 @@ -# PostUsersSignInDataStatus - - -## Values - -| Name | Value | -| --------- | --------- | -| `Online` | online | -| `Offline` | offline | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataSubscription.md b/docs/Models/Requests/PostUsersSignInDataSubscription.md deleted file mode 100644 index 4d39570..0000000 --- a/docs/Models/Requests/PostUsersSignInDataSubscription.md +++ /dev/null @@ -1,15 +0,0 @@ -# PostUsersSignInDataSubscription - -If the account’s Plex Pass subscription is active - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| `Features` | List<*string*> | :heavy_minus_sign: | List of features allowed on your Plex Pass subscription | | -| `Active` | *bool* | :heavy_minus_sign: | If the account's Plex Pass subscription is active | true | -| `SubscribedAt` | *string* | :heavy_minus_sign: | Date the account subscribed to Plex Pass | 2021-04-12T18:21:12Z | -| `Status` | [PostUsersSignInDataAuthenticationStatus](../../Models/Requests/PostUsersSignInDataAuthenticationStatus.md) | :heavy_minus_sign: | String representation of subscriptionActive | Inactive | -| `PaymentService` | *string* | :heavy_minus_sign: | Payment service used for your Plex Pass subscription | | -| `Plan` | *string* | :heavy_minus_sign: | Name of Plex Pass subscription plan | | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataUserPlexAccount.md b/docs/Models/Requests/PostUsersSignInDataUserPlexAccount.md deleted file mode 100644 index f2c96b9..0000000 --- a/docs/Models/Requests/PostUsersSignInDataUserPlexAccount.md +++ /dev/null @@ -1,52 +0,0 @@ -# PostUsersSignInDataUserPlexAccount - -Returns the user account data with a valid auth token - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `AdsConsent` | *bool* | :heavy_check_mark: | Unknown | | -| `AdsConsentReminderAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | -| `AdsConsentSetAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | -| `Anonymous` | *bool* | :heavy_minus_sign: | Unknown | | -| `AuthToken` | *string* | :heavy_check_mark: | The account token | CxoUzBTSV5hsxjTpFKaf | -| `BackupCodesCreated` | *bool* | :heavy_minus_sign: | If the two-factor authentication backup codes have been created | | -| `Confirmed` | *bool* | :heavy_minus_sign: | If the account has been confirmed | | -| `Country` | *string* | :heavy_check_mark: | The account country | US | -| `Email` | *string* | :heavy_check_mark: | The account email address | username@email.com | -| `EmailOnlyAuth` | *bool* | :heavy_minus_sign: | If login with email only is enabled | | -| `ExperimentalFeatures` | *bool* | :heavy_minus_sign: | If experimental features are enabled | | -| `FriendlyName` | *string* | :heavy_check_mark: | Your account full name | friendlyUsername | -| `Entitlements` | List<*string*> | :heavy_check_mark: | List of devices your allowed to use with this account | | -| `Guest` | *bool* | :heavy_minus_sign: | If the account is a Plex Home guest user | | -| `HasPassword` | *bool* | :heavy_minus_sign: | If the account has a password | | -| `Home` | *bool* | :heavy_minus_sign: | If the account is a Plex Home user | | -| `HomeAdmin` | *bool* | :heavy_minus_sign: | If the account is the Plex Home admin | | -| `HomeSize` | *int* | :heavy_check_mark: | The number of accounts in the Plex Home | 1 | -| `Id` | *int* | :heavy_check_mark: | The Plex account ID | 13692262 | -| `JoinedAt` | *long* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `Locale` | *string* | :heavy_check_mark: | The account locale | | -| `MailingListActive` | *bool* | :heavy_minus_sign: | If you are subscribed to the Plex newsletter | | -| `MailingListStatus` | [PostUsersSignInDataMailingListStatus](../../Models/Requests/PostUsersSignInDataMailingListStatus.md) | :heavy_check_mark: | Your current mailing list status (active or unsubscribed) | active | -| `MaxHomeSize` | *int* | :heavy_check_mark: | The maximum number of accounts allowed in the Plex Home | 15 | -| ~~`Pin`~~ | *string* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

[Might be removed] The hashed Plex Home PIN | | -| `Profile` | [PostUsersSignInDataUserProfile](../../Models/Requests/PostUsersSignInDataUserProfile.md) | :heavy_check_mark: | N/A | | -| `Protected` | *bool* | :heavy_minus_sign: | If the account has a Plex Home PIN enabled | | -| `RememberExpiresAt` | *long* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `Restricted` | *bool* | :heavy_minus_sign: | If the account is a Plex Home managed user | | -| `Roles` | List<*string*> | :heavy_minus_sign: | [Might be removed] List of account roles. Plexpass membership listed here | | -| `ScrobbleTypes` | *string* | :heavy_check_mark: | Unknown | | -| `Services` | List<[PostUsersSignInDataServices](../../Models/Requests/PostUsersSignInDataServices.md)> | :heavy_check_mark: | N/A | | -| `Subscription` | [PostUsersSignInDataSubscription](../../Models/Requests/PostUsersSignInDataSubscription.md) | :heavy_check_mark: | If the account’s Plex Pass subscription is active | | -| `SubscriptionDescription` | *string* | :heavy_check_mark: | Description of the Plex Pass subscription | | -| `Subscriptions` | List<[PostUsersSignInDataAuthenticationSubscription](../../Models/Requests/PostUsersSignInDataAuthenticationSubscription.md)> | :heavy_minus_sign: | N/A | | -| `Thumb` | *string* | :heavy_check_mark: | URL of the account thumbnail | https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101 | -| `Title` | *string* | :heavy_check_mark: | The title of the account (username or friendly name) | UsernameTitle | -| `TwoFactorEnabled` | *bool* | :heavy_minus_sign: | If two-factor authentication is enabled | | -| `Username` | *string* | :heavy_check_mark: | The account username | Username | -| `Uuid` | *string* | :heavy_check_mark: | The account UUID | dae343c1f45beb4f | -| `AttributionPartner` | *string* | :heavy_check_mark: | N/A | | -| `PastSubscriptions` | List<[PastSubscription](../../Models/Requests/PastSubscription.md)> | :heavy_check_mark: | N/A | | -| `Trials` | List<[Trials](../../Models/Requests/Trials.md)> | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataUserProfile.md b/docs/Models/Requests/PostUsersSignInDataUserProfile.md deleted file mode 100644 index 76c761a..0000000 --- a/docs/Models/Requests/PostUsersSignInDataUserProfile.md +++ /dev/null @@ -1,15 +0,0 @@ -# PostUsersSignInDataUserProfile - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | -| `AutoSelectAudio` | *bool* | :heavy_minus_sign: | If the account has automatically select audio and subtitle tracks enabled | true | -| `DefaultAudioLanguage` | *string* | :heavy_check_mark: | The preferred audio language for the account | ja | -| `DefaultSubtitleLanguage` | *string* | :heavy_check_mark: | The preferred subtitle language for the account | en | -| `AutoSelectSubtitle` | [PostUsersSignInDataAutoSelectSubtitle](../../Models/Requests/PostUsersSignInDataAutoSelectSubtitle.md) | :heavy_minus_sign: | N/A | 1 | -| `DefaultSubtitleAccessibility` | [PostUsersSignInDataDefaultSubtitleAccessibility](../../Models/Requests/PostUsersSignInDataDefaultSubtitleAccessibility.md) | :heavy_minus_sign: | N/A | 1 | -| `DefaultSubtitleForced` | [PostUsersSignInDataDefaultSubtitleForced](../../Models/Requests/PostUsersSignInDataDefaultSubtitleForced.md) | :heavy_minus_sign: | N/A | 1 | -| `WatchedIndicator` | [PostUsersSignInDataWatchedIndicator](../../Models/Requests/PostUsersSignInDataWatchedIndicator.md) | :heavy_minus_sign: | N/A | 1 | -| `MediaReviewsVisibility` | [PostUsersSignInDataMediaReviewsVisibility](../../Models/Requests/PostUsersSignInDataMediaReviewsVisibility.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/PostUsersSignInDataWatchedIndicator.md b/docs/Models/Requests/PostUsersSignInDataWatchedIndicator.md deleted file mode 100644 index fa6d450..0000000 --- a/docs/Models/Requests/PostUsersSignInDataWatchedIndicator.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataWatchedIndicator - -Whether or not media watched indicators are enabled (little orange dot on media) - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Prefs.md b/docs/Models/Requests/Prefs.md new file mode 100644 index 0000000..0da5d3f --- /dev/null +++ b/docs/Models/Requests/Prefs.md @@ -0,0 +1,7 @@ +# Prefs + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/ProcessSubscriptionsResponse.md b/docs/Models/Requests/ProcessSubscriptionsResponse.md new file mode 100644 index 0000000..304b516 --- /dev/null +++ b/docs/Models/Requests/ProcessSubscriptionsResponse.md @@ -0,0 +1,11 @@ +# ProcessSubscriptionsResponse + + +## 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 | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ProcessingState.md b/docs/Models/Requests/ProcessingState.md new file mode 100644 index 0000000..c01efe3 --- /dev/null +++ b/docs/Models/Requests/ProcessingState.md @@ -0,0 +1,15 @@ +# ProcessingState + +The state of processing if this generator is part of an optimizer playlist + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Processed` | processed | +| `Completed` | completed | +| `Tombstoned` | tombstoned | +| `Disabled` | disabled | +| `Error` | error | +| `Pending` | pending | \ No newline at end of file diff --git a/docs/Models/Requests/ProcessingStateContext.md b/docs/Models/Requests/ProcessingStateContext.md new file mode 100644 index 0000000..7322b5d --- /dev/null +++ b/docs/Models/Requests/ProcessingStateContext.md @@ -0,0 +1,21 @@ +# ProcessingStateContext + +The error which could have occurred (or `good`) + + +## Values + +| Name | Value | +| ------------------------- | ------------------------- | +| `Good` | good | +| `SourceFileUnavailable` | sourceFileUnavailable | +| `SourceFileMetadataError` | sourceFileMetadataError | +| `ClientProfileError` | clientProfileError | +| `IoError` | ioError | +| `TranscoderError` | transcoderError | +| `UnknownError` | unknownError | +| `MediaAnalysisError` | mediaAnalysisError | +| `DownloadFailed` | downloadFailed | +| `AccessDenied` | accessDenied | +| `CannotTranscode` | cannotTranscode | +| `CodecInstallError` | codecInstallError | \ No newline at end of file diff --git a/docs/Models/Requests/Producer.md b/docs/Models/Requests/Producer.md deleted file mode 100644 index 6833152..0000000 --- a/docs/Models/Requests/Producer.md +++ /dev/null @@ -1,12 +0,0 @@ -# Producer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `Id` | *int* | :heavy_check_mark: | Unique identifier for the producer. | 126522 | -| `Filter` | *string* | :heavy_check_mark: | The filter string used to query this producer. | producer=126522 | -| `Tag` | *string* | :heavy_check_mark: | The name of the producer | Amelia Knapp | -| `TagKey` | *string* | :heavy_check_mark: | A 24-character hexadecimal unique key associated with the producer's tag, used for internal identification.
| 5d77683d85719b001f3a535e | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the producer. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/Protected.md b/docs/Models/Requests/Protected.md deleted file mode 100644 index 5e37e85..0000000 --- a/docs/Models/Requests/Protected.md +++ /dev/null @@ -1,11 +0,0 @@ -# Protected - -Indicates whether the account is protected. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Protocol.md b/docs/Models/Requests/Protocol.md index 41a611c..903f74f 100644 --- a/docs/Models/Requests/Protocol.md +++ b/docs/Models/Requests/Protocol.md @@ -1,11 +1,13 @@ # Protocol -The protocol used for the connection (http, https, etc) +Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + ## Values -| Name | Value | -| ------- | ------- | -| `Http` | http | -| `Https` | https | \ No newline at end of file +| Name | Value | +| ------ | ------ | +| `Http` | http | +| `Hls` | hls | +| `Dash` | dash | \ No newline at end of file diff --git a/docs/Models/Requests/Provider.md b/docs/Models/Requests/Provider.md deleted file mode 100644 index fb9b455..0000000 --- a/docs/Models/Requests/Provider.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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/QueryParamArgs.md b/docs/Models/Requests/QueryParamArgs.md new file mode 100644 index 0000000..65f0d63 --- /dev/null +++ b/docs/Models/Requests/QueryParamArgs.md @@ -0,0 +1,7 @@ +# QueryParamArgs + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamAttributes.md b/docs/Models/Requests/QueryParamAttributes.md new file mode 100644 index 0000000..a41b227 --- /dev/null +++ b/docs/Models/Requests/QueryParamAttributes.md @@ -0,0 +1,9 @@ +# QueryParamAttributes + +The attributes to assign to this marker + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamFilter.md b/docs/Models/Requests/QueryParamFilter.md deleted file mode 100644 index 7167549..0000000 --- a/docs/Models/Requests/QueryParamFilter.md +++ /dev/null @@ -1,11 +0,0 @@ -# QueryParamFilter - -Filters content by field and direction/equality -(Unknown if viewedAt is the only supported column) - - - -## Fields - -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamForce.md b/docs/Models/Requests/QueryParamForce.md deleted file mode 100644 index 0a8f8c4..0000000 --- a/docs/Models/Requests/QueryParamForce.md +++ /dev/null @@ -1,15 +0,0 @@ -# QueryParamForce - -Force overwriting of duplicate playlists. -By default, a playlist file uploaded with the same path will overwrite the existing playlist. -The `force` argument is used to disable overwriting. -If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded. - - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamIncludeCollections.md b/docs/Models/Requests/QueryParamIncludeCollections.md deleted file mode 100644 index 8c4c18f..0000000 --- a/docs/Models/Requests/QueryParamIncludeCollections.md +++ /dev/null @@ -1,9 +0,0 @@ -# QueryParamIncludeCollections - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamIncludeExternalMedia.md b/docs/Models/Requests/QueryParamIncludeExternalMedia.md deleted file mode 100644 index c70dd45..0000000 --- a/docs/Models/Requests/QueryParamIncludeExternalMedia.md +++ /dev/null @@ -1,9 +0,0 @@ -# QueryParamIncludeExternalMedia - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamIncludeGuids.md b/docs/Models/Requests/QueryParamIncludeGuids.md deleted file mode 100644 index db71b5d..0000000 --- a/docs/Models/Requests/QueryParamIncludeGuids.md +++ /dev/null @@ -1,12 +0,0 @@ -# QueryParamIncludeGuids - -Adds the Guid object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamIncludeMeta.md b/docs/Models/Requests/QueryParamIncludeMeta.md deleted file mode 100644 index 85296cc..0000000 --- a/docs/Models/Requests/QueryParamIncludeMeta.md +++ /dev/null @@ -1,12 +0,0 @@ -# QueryParamIncludeMeta - -Adds the Meta object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamLocation.md b/docs/Models/Requests/QueryParamLocation.md new file mode 100644 index 0000000..b63f129 --- /dev/null +++ b/docs/Models/Requests/QueryParamLocation.md @@ -0,0 +1,12 @@ +# QueryParamLocation + +Network type of the client, can be used to help determine target bitrate. + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `Lan` | lan | +| `Wan` | wan | +| `Cellular` | cellular | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamOnlyTransient.md b/docs/Models/Requests/QueryParamOnlyTransient.md deleted file mode 100644 index 6ae6613..0000000 --- a/docs/Models/Requests/QueryParamOnlyTransient.md +++ /dev/null @@ -1,11 +0,0 @@ -# QueryParamOnlyTransient - -Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamPrefs.md b/docs/Models/Requests/QueryParamPrefs.md new file mode 100644 index 0000000..cbf9b54 --- /dev/null +++ b/docs/Models/Requests/QueryParamPrefs.md @@ -0,0 +1,9 @@ +# QueryParamPrefs + +The preferences for this section + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamProtocol.md b/docs/Models/Requests/QueryParamProtocol.md new file mode 100644 index 0000000..1eeb58c --- /dev/null +++ b/docs/Models/Requests/QueryParamProtocol.md @@ -0,0 +1,13 @@ +# QueryParamProtocol + +Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + + + +## Values + +| Name | Value | +| ------ | ------ | +| `Http` | http | +| `Hls` | hls | +| `Dash` | dash | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamSmart.md b/docs/Models/Requests/QueryParamSmart.md deleted file mode 100644 index 00f49fb..0000000 --- a/docs/Models/Requests/QueryParamSmart.md +++ /dev/null @@ -1,11 +0,0 @@ -# QueryParamSmart - -type of playlists to return (default is all). - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamSubtitles.md b/docs/Models/Requests/QueryParamSubtitles.md new file mode 100644 index 0000000..cca69e7 --- /dev/null +++ b/docs/Models/Requests/QueryParamSubtitles.md @@ -0,0 +1,17 @@ +# QueryParamSubtitles + +Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Auto` | auto | +| `Burn` | burn | +| `None` | none | +| `Sidecar` | sidecar | +| `Embedded` | embedded | +| `Segmented` | segmented | +| `Unknown` | unknown | \ No newline at end of file diff --git a/docs/Models/Requests/QueryParamType.md b/docs/Models/Requests/QueryParamType.md index 6a256b3..c3dae6a 100644 --- a/docs/Models/Requests/QueryParamType.md +++ b/docs/Models/Requests/QueryParamType.md @@ -1,24 +1,10 @@ # QueryParamType -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - +The value `delegation` is the only supported `type` parameter. ## Values | Name | Value | | ------------ | ------------ | -| `Movie` | 1 | -| `TvShow` | 2 | -| `Season` | 3 | -| `Episode` | 4 | -| `Artist` | 5 | -| `Album` | 6 | -| `Track` | 7 | -| `PhotoAlbum` | 8 | -| `Photo` | 9 | \ No newline at end of file +| `Delegation` | delegation | \ No newline at end of file diff --git a/docs/Models/Requests/Rating.md b/docs/Models/Requests/Rating.md deleted file mode 100644 index 2cc60b3..0000000 --- a/docs/Models/Requests/Rating.md +++ /dev/null @@ -1,12 +0,0 @@ -# Rating - -The type of rating, for example 'audience' or 'critic'. - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `Image` | *string* | :heavy_check_mark: | The URL for the rating image, for example from IMDb. | imdb://image.rating | -| `Value` | *float* | :heavy_check_mark: | N/A | 5.1 | -| `Type` | *string* | :heavy_check_mark: | N/A | audience | \ No newline at end of file diff --git a/docs/Models/Requests/Ratings.md b/docs/Models/Requests/Ratings.md deleted file mode 100644 index b8e5725..0000000 --- a/docs/Models/Requests/Ratings.md +++ /dev/null @@ -1,10 +0,0 @@ -# Ratings - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `Image` | *string* | :heavy_check_mark: | The image or reference for the rating. | imdb://image.rating | -| `Value` | *float* | :heavy_check_mark: | The rating value. | 9 | -| `Type` | *string* | :heavy_check_mark: | The type of rating (e.g., audience, critic). | audience | \ No newline at end of file diff --git a/docs/Models/Requests/RecommendationsVisibility.md b/docs/Models/Requests/RecommendationsVisibility.md new file mode 100644 index 0000000..ba55fb1 --- /dev/null +++ b/docs/Models/Requests/RecommendationsVisibility.md @@ -0,0 +1,18 @@ +# RecommendationsVisibility + +The visibility of this hub in recommendations: + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + + +## Values + +| Name | Value | +| -------- | -------- | +| `All` | all | +| `None` | none | +| `Admin` | admin | +| `Shared` | shared | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshItemsMetadataRequest.md b/docs/Models/Requests/RefreshItemsMetadataRequest.md new file mode 100644 index 0000000..b65942a --- /dev/null +++ b/docs/Models/Requests/RefreshItemsMetadataRequest.md @@ -0,0 +1,21 @@ +# RefreshItemsMetadataRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Agent` | *string* | :heavy_minus_sign: | N/A | | +| `MarkUpdated` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshItemsMetadataResponse.md b/docs/Models/Requests/RefreshItemsMetadataResponse.md new file mode 100644 index 0000000..3a389f7 --- /dev/null +++ b/docs/Models/Requests/RefreshItemsMetadataResponse.md @@ -0,0 +1,10 @@ +# RefreshItemsMetadataResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshPlaylistRequest.md b/docs/Models/Requests/RefreshPlaylistRequest.md new file mode 100644 index 0000000..b972fad --- /dev/null +++ b/docs/Models/Requests/RefreshPlaylistRequest.md @@ -0,0 +1,22 @@ +# RefreshPlaylistRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistId` | *long* | :heavy_check_mark: | The ID of the playlist | | +| `GeneratorId` | *long* | :heavy_check_mark: | The generator item ID to act on | | +| `MetadataId` | *long* | :heavy_check_mark: | The metadata item ID to act on | | +| `Action` | [Action](../../Models/Requests/Action.md) | :heavy_check_mark: | The action to perform for this item on this optimizer queue | | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshPlaylistResponse.md b/docs/Models/Requests/RefreshPlaylistResponse.md new file mode 100644 index 0000000..87112fa --- /dev/null +++ b/docs/Models/Requests/RefreshPlaylistResponse.md @@ -0,0 +1,10 @@ +# RefreshPlaylistResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshProvidersResponse.md b/docs/Models/Requests/RefreshProvidersResponse.md new file mode 100644 index 0000000..ca95c2c --- /dev/null +++ b/docs/Models/Requests/RefreshProvidersResponse.md @@ -0,0 +1,10 @@ +# RefreshProvidersResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshSectionRequest.md b/docs/Models/Requests/RefreshSectionRequest.md new file mode 100644 index 0000000..0122832 --- /dev/null +++ b/docs/Models/Requests/RefreshSectionRequest.md @@ -0,0 +1,21 @@ +# RefreshSectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | +| `Force` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether the update of metadata and items should be performed even if modification dates indicate the items have not change | 1 | +| `Path` | *string* | :heavy_minus_sign: | Restrict refresh to the specified path | | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshSectionResponse.md b/docs/Models/Requests/RefreshSectionResponse.md new file mode 100644 index 0000000..b3366ff --- /dev/null +++ b/docs/Models/Requests/RefreshSectionResponse.md @@ -0,0 +1,10 @@ +# RefreshSectionResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshSectionsMetadataRequest.md b/docs/Models/Requests/RefreshSectionsMetadataRequest.md new file mode 100644 index 0000000..bb526aa --- /dev/null +++ b/docs/Models/Requests/RefreshSectionsMetadataRequest.md @@ -0,0 +1,19 @@ +# RefreshSectionsMetadataRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Force` | *bool* | :heavy_minus_sign: | Force refresh of metadata | | \ No newline at end of file diff --git a/docs/Models/Requests/RefreshSectionsMetadataResponse.md b/docs/Models/Requests/RefreshSectionsMetadataResponse.md new file mode 100644 index 0000000..25726db --- /dev/null +++ b/docs/Models/Requests/RefreshSectionsMetadataResponse.md @@ -0,0 +1,10 @@ +# RefreshSectionsMetadataResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Release.md b/docs/Models/Requests/Release.md index 7ccd0cf..427b47d 100644 --- a/docs/Models/Requests/Release.md +++ b/docs/Models/Requests/Release.md @@ -3,11 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Key` | *string* | :heavy_minus_sign: | N/A | https://plex.tv/updater/releases/5136 | -| `Version` | *string* | :heavy_minus_sign: | N/A | 1.40.0.7775-456fbaf97 | -| `Added` | *string* | :heavy_minus_sign: | N/A | (PLEASE NOTE) This version makes changes to the database which will make it compatible only with server versions 1.31.2 or higher (released March 14). You will not be able to use your database on Plex Media Server versions lower than this after this update. Please also be patient when updating to this version if you have a very large database and allow the upgrade process to finish.
(Collections) Items added to a collection from the item context menu will now lock the collection field on the items (#12793)
(Music) Store track genres and add filtering options (#14653)
(Music) Support ID3v2.4 null-separated tags for genres and release type (#14653)
(View History) No longer create a view history entry for items marked as played (#10888)
(Web) Updated to 4.118.0 | -| `Fixed` | *string* | :heavy_minus_sign: | N/A | (Agents) Changing a 'Other Videos' type library to the modern movie agent would fail (#14483)
(Agents) It is possible that agents are not initialised during startup on rare occasions (#14654)
(Agents) Remove the legacy OpenSubtitles agent which is no longer supported upstream (#14667)
(Collection) Server could become unresponsive when collection membership changes (#14612)
(DVR) Previously watched recordings could be deleted without being watched again (#13779)
(Libraries) When performing fix match on items from certain music libraries the language would default to Arabic (#14501)
(Library) The Content Rating not equal to None filter does not work (#14620)
(Search) Album search results could contain all the album's tracks too (#14486)
(Subtitles) In some circumstances, sidecar subtitles can show up for media when they're no longer available (#14674)
(Transcoder) HW encoding would fail on devices with no rate control (#14222)
(Transcoder) Software transcoding on Ubuntu could cause unexpected behavior (#14605) | -| `DownloadURL` | *string* | :heavy_minus_sign: | N/A | https://plex.tv/downloads/latest/5?channel=8&build=linux-x86_64&distro=redhat&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx | -| `State` | *string* | :heavy_minus_sign: | N/A | notify | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `Added` | *string* | :heavy_minus_sign: | A list of what has been added in this version | +| `DownloadURL` | *string* | :heavy_minus_sign: | The URL of where this update is available | +| `Fixed` | *string* | :heavy_minus_sign: | A list of what has been fixed in this version | +| `Key` | *string* | :heavy_minus_sign: | The URL key of the update | +| `State` | [GetUpdatesStatusState](../../Models/Requests/GetUpdatesStatusState.md) | :heavy_minus_sign: | The status of this update.

- available - This release is available
- downloading - This release is downloading
- downloaded - This release has been downloaded
- installing - This release is installing
- tonight - This release will be installed tonight
- skipped - This release has been skipped
- error - This release has an error
- notify - This release is only notifying it is available (typically because it cannot be installed on this setup)
- done - This release is complete
| +| `Version` | *string* | :heavy_minus_sign: | The version available | \ No newline at end of file diff --git a/docs/Models/Requests/ReloadGuideRequest.md b/docs/Models/Requests/ReloadGuideRequest.md new file mode 100644 index 0000000..2d92cbe --- /dev/null +++ b/docs/Models/Requests/ReloadGuideRequest.md @@ -0,0 +1,19 @@ +# ReloadGuideRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DvrId` | *long* | :heavy_check_mark: | The ID of the DVR. | | \ No newline at end of file diff --git a/docs/Models/Requests/ReloadGuideResponse.md b/docs/Models/Requests/ReloadGuideResponse.md new file mode 100644 index 0000000..dfc1ff9 --- /dev/null +++ b/docs/Models/Requests/ReloadGuideResponse.md @@ -0,0 +1,11 @@ +# ReloadGuideResponse + + +## 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 | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/RemoveDeviceFromDVRDVR.md b/docs/Models/Requests/RemoveDeviceFromDVRDVR.md new file mode 100644 index 0000000..ca1ba01 --- /dev/null +++ b/docs/Models/Requests/RemoveDeviceFromDVRDVR.md @@ -0,0 +1,12 @@ +# RemoveDeviceFromDVRDVR + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Device` | List<[Models.Components.Device](../../Models/Components/Device.md)> | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Language` | *string* | :heavy_minus_sign: | N/A | +| `Lineup` | *string* | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/RemoveDeviceFromDVRDVRsMediaContainer.md b/docs/Models/Requests/RemoveDeviceFromDVRDVRsMediaContainer.md new file mode 100644 index 0000000..3896770 --- /dev/null +++ b/docs/Models/Requests/RemoveDeviceFromDVRDVRsMediaContainer.md @@ -0,0 +1,17 @@ +# RemoveDeviceFromDVRDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Status` | *long* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/Models/Requests/RemoveDeviceFromDVRMediaContainer.md b/docs/Models/Requests/RemoveDeviceFromDVRMediaContainer.md new file mode 100644 index 0000000..4ffff96 --- /dev/null +++ b/docs/Models/Requests/RemoveDeviceFromDVRMediaContainer.md @@ -0,0 +1,9 @@ +# RemoveDeviceFromDVRMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [RemoveDeviceFromDVRDVRsMediaContainer](../../Models/Requests/RemoveDeviceFromDVRDVRsMediaContainer.md) | :heavy_minus_sign: | N/A | +| `Dvr` | List<[RemoveDeviceFromDVRDVR](../../Models/Requests/RemoveDeviceFromDVRDVR.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/RemoveDeviceFromDVRRequest.md b/docs/Models/Requests/RemoveDeviceFromDVRRequest.md new file mode 100644 index 0000000..1a32421 --- /dev/null +++ b/docs/Models/Requests/RemoveDeviceFromDVRRequest.md @@ -0,0 +1,20 @@ +# RemoveDeviceFromDVRRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DvrId` | *long* | :heavy_check_mark: | The ID of the DVR. | | +| `DeviceId` | *long* | :heavy_check_mark: | The ID of the device to add. | | \ No newline at end of file diff --git a/docs/Models/Requests/RemoveDeviceFromDVRResponse.md b/docs/Models/Requests/RemoveDeviceFromDVRResponse.md new file mode 100644 index 0000000..e1b3759 --- /dev/null +++ b/docs/Models/Requests/RemoveDeviceFromDVRResponse.md @@ -0,0 +1,12 @@ +# RemoveDeviceFromDVRResponse + + +## 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` | [RemoveDeviceFromDVRResponseBody](../../Models/Requests/RemoveDeviceFromDVRResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/RemoveDeviceFromDVRResponseBody.md b/docs/Models/Requests/RemoveDeviceFromDVRResponseBody.md new file mode 100644 index 0000000..f9c7c51 --- /dev/null +++ b/docs/Models/Requests/RemoveDeviceFromDVRResponseBody.md @@ -0,0 +1,10 @@ +# RemoveDeviceFromDVRResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `MediaContainer` | [RemoveDeviceFromDVRMediaContainer](../../Models/Requests/RemoveDeviceFromDVRMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/RemoveDeviceMediaContainer.md b/docs/Models/Requests/RemoveDeviceMediaContainer.md new file mode 100644 index 0000000..a24aca6 --- /dev/null +++ b/docs/Models/Requests/RemoveDeviceMediaContainer.md @@ -0,0 +1,18 @@ +# RemoveDeviceMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Message` | *string* | :heavy_minus_sign: | N/A | +| `Status` | *long* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/RemoveDeviceRequest.md b/docs/Models/Requests/RemoveDeviceRequest.md new file mode 100644 index 0000000..47dd19e --- /dev/null +++ b/docs/Models/Requests/RemoveDeviceRequest.md @@ -0,0 +1,19 @@ +# RemoveDeviceRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DeviceId` | *long* | :heavy_check_mark: | The ID of the device. | | \ No newline at end of file diff --git a/docs/Models/Requests/RemoveDeviceResponse.md b/docs/Models/Requests/RemoveDeviceResponse.md new file mode 100644 index 0000000..1408ec4 --- /dev/null +++ b/docs/Models/Requests/RemoveDeviceResponse.md @@ -0,0 +1,12 @@ +# RemoveDeviceResponse + + +## 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` | [RemoveDeviceResponseBody](../../Models/Requests/RemoveDeviceResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/RemoveDeviceResponseBody.md b/docs/Models/Requests/RemoveDeviceResponseBody.md new file mode 100644 index 0000000..78f9628 --- /dev/null +++ b/docs/Models/Requests/RemoveDeviceResponseBody.md @@ -0,0 +1,10 @@ +# RemoveDeviceResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `MediaContainer` | [RemoveDeviceMediaContainer](../../Models/Requests/RemoveDeviceMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/RemoveDownloadQueueItemsRequest.md b/docs/Models/Requests/RemoveDownloadQueueItemsRequest.md new file mode 100644 index 0000000..c3c0af4 --- /dev/null +++ b/docs/Models/Requests/RemoveDownloadQueueItemsRequest.md @@ -0,0 +1,20 @@ +# RemoveDownloadQueueItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `QueueId` | *long* | :heavy_check_mark: | The queue id | | +| `ItemId` | List<*long*> | :heavy_check_mark: | The item id | [
32,
345,
23
] | \ No newline at end of file diff --git a/docs/Models/Requests/RemoveDownloadQueueItemsResponse.md b/docs/Models/Requests/RemoveDownloadQueueItemsResponse.md new file mode 100644 index 0000000..61f3d85 --- /dev/null +++ b/docs/Models/Requests/RemoveDownloadQueueItemsResponse.md @@ -0,0 +1,10 @@ +# RemoveDownloadQueueItemsResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/ReorderSubscriptionRequest.md b/docs/Models/Requests/ReorderSubscriptionRequest.md new file mode 100644 index 0000000..3ad3ef0 --- /dev/null +++ b/docs/Models/Requests/ReorderSubscriptionRequest.md @@ -0,0 +1,20 @@ +# ReorderSubscriptionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SubscriptionId` | *long* | :heavy_check_mark: | N/A | | +| `After` | *long* | :heavy_minus_sign: | The subscription to move this sub after. If missing will insert at the beginning of the list | | \ No newline at end of file diff --git a/docs/Models/Requests/ReorderSubscriptionResponse.md b/docs/Models/Requests/ReorderSubscriptionResponse.md new file mode 100644 index 0000000..4941551 --- /dev/null +++ b/docs/Models/Requests/ReorderSubscriptionResponse.md @@ -0,0 +1,11 @@ +# ReorderSubscriptionResponse + + +## 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 | +| `MediaContainerWithSubscription` | [MediaContainerWithSubscription](../../Models/Components/MediaContainerWithSubscription.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ReportRequest.md b/docs/Models/Requests/ReportRequest.md new file mode 100644 index 0000000..56e9c75 --- /dev/null +++ b/docs/Models/Requests/ReportRequest.md @@ -0,0 +1,33 @@ +# ReportRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Key` | *string* | :heavy_minus_sign: | The details key for the item. | /foo | +| `RatingKey` | *string* | :heavy_minus_sign: | The rating key attribute for the item. | xyz | +| `State` | [State](../../Models/Requests/State.md) | :heavy_minus_sign: | The current state of the media. | playing | +| `PlayQueueItemID` | *string* | :heavy_minus_sign: | If playing media from a play queue, the play queue's ID. | 123 | +| `Time` | *long* | :heavy_minus_sign: | The current time offset of playback in ms. | 0 | +| `Duration` | *long* | :heavy_minus_sign: | The total duration of the item in ms. | 10000 | +| `Continuing` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | When state is `stopped`, a flag indicating whether or not the client is going to continue playing anothe item. | 1 | +| `Updated` | *long* | :heavy_minus_sign: | Used when a sync client comes online and is syncing media timelines, holds the time at which the playback state was last updated. | 14200000 | +| `Offline` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Also used by sync clients, used to indicate that a timeline is being synced from being offline, as opposed to being "live". | 1 | +| `TimeToFirstFrame` | *long* | :heavy_minus_sign: | Time in seconds till first frame is displayed. Sent only on the first playing timeline request. | 1000 | +| `TimeStalled` | *long* | :heavy_minus_sign: | Time in seconds spent buffering since last request. | 1000 | +| `Bandwidth` | *long* | :heavy_minus_sign: | Bandwidth in kbps as estimated by the client. | 100 | +| `BufferedTime` | *long* | :heavy_minus_sign: | Amount of time in seconds buffered by client. Omit if computed by `bufferedSize` below. | 100 | +| `BufferedSize` | *long* | :heavy_minus_sign: | Size in kilobytes of data buffered by client. Omit if computed by `bufferedTime` above | 1024 | +| `XPlexSessionIdentifier` | *string* | :heavy_minus_sign: | Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) | | \ No newline at end of file diff --git a/docs/Models/Requests/ReportResponse.md b/docs/Models/Requests/ReportResponse.md new file mode 100644 index 0000000..1d482aa --- /dev/null +++ b/docs/Models/Requests/ReportResponse.md @@ -0,0 +1,11 @@ +# ReportResponse + + +## 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` | [ReportResponseBody](../../Models/Requests/ReportResponseBody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ReportResponseBody.md b/docs/Models/Requests/ReportResponseBody.md new file mode 100644 index 0000000..e0209a8 --- /dev/null +++ b/docs/Models/Requests/ReportResponseBody.md @@ -0,0 +1,10 @@ +# ReportResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `MediaContainer` | [Models.Requests.MediaContainer](../../Models/Requests/MediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/ResetPlayQueueRequest.md b/docs/Models/Requests/ResetPlayQueueRequest.md new file mode 100644 index 0000000..e10958f --- /dev/null +++ b/docs/Models/Requests/ResetPlayQueueRequest.md @@ -0,0 +1,19 @@ +# ResetPlayQueueRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlayQueueId` | *long* | :heavy_check_mark: | The ID of the play queue. | | \ No newline at end of file diff --git a/docs/Models/Requests/ResetPlayQueueResponse.md b/docs/Models/Requests/ResetPlayQueueResponse.md new file mode 100644 index 0000000..b766567 --- /dev/null +++ b/docs/Models/Requests/ResetPlayQueueResponse.md @@ -0,0 +1,11 @@ +# ResetPlayQueueResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/ResetSectionDefaultsRequest.md b/docs/Models/Requests/ResetSectionDefaultsRequest.md new file mode 100644 index 0000000..7dab806 --- /dev/null +++ b/docs/Models/Requests/ResetSectionDefaultsRequest.md @@ -0,0 +1,19 @@ +# ResetSectionDefaultsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | The section ID for the hubs to reorder | | \ No newline at end of file diff --git a/docs/Models/Requests/ResetSectionDefaultsResponse.md b/docs/Models/Requests/ResetSectionDefaultsResponse.md new file mode 100644 index 0000000..9628e55 --- /dev/null +++ b/docs/Models/Requests/ResetSectionDefaultsResponse.md @@ -0,0 +1,10 @@ +# ResetSectionDefaultsResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/ResponseBody.md b/docs/Models/Requests/ResponseBody.md deleted file mode 100644 index 224469e..0000000 --- a/docs/Models/Requests/ResponseBody.md +++ /dev/null @@ -1,13 +0,0 @@ -# ResponseBody - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `Identifier` | *string* | :heavy_check_mark: | N/A | tv.plex.sonos | -| `BaseURL` | *string* | :heavy_check_mark: | N/A | https://sonos.plex.tv | -| `Title` | *string* | :heavy_check_mark: | N/A | Sonos | -| `LinkURL` | *string* | :heavy_check_mark: | N/A | https://sonos.plex.tv/link | -| `Provides` | *string* | :heavy_check_mark: | N/A | client,player | -| `Token` | *string* | :heavy_check_mark: | The plex authtoken used to identify with | | \ No newline at end of file diff --git a/docs/Models/Requests/RestartProcessingDownloadQueueItemsRequest.md b/docs/Models/Requests/RestartProcessingDownloadQueueItemsRequest.md new file mode 100644 index 0000000..f0577bf --- /dev/null +++ b/docs/Models/Requests/RestartProcessingDownloadQueueItemsRequest.md @@ -0,0 +1,20 @@ +# RestartProcessingDownloadQueueItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `QueueId` | *long* | :heavy_check_mark: | The queue id | | +| `ItemId` | List<*long*> | :heavy_check_mark: | The item ids | [
32,
345,
23
] | \ No newline at end of file diff --git a/docs/Models/Requests/RestartProcessingDownloadQueueItemsResponse.md b/docs/Models/Requests/RestartProcessingDownloadQueueItemsResponse.md new file mode 100644 index 0000000..a6ea884 --- /dev/null +++ b/docs/Models/Requests/RestartProcessingDownloadQueueItemsResponse.md @@ -0,0 +1,10 @@ +# RestartProcessingDownloadQueueItemsResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Restricted.md b/docs/Models/Requests/Restricted.md deleted file mode 100644 index bbbb366..0000000 --- a/docs/Models/Requests/Restricted.md +++ /dev/null @@ -1,11 +0,0 @@ -# Restricted - -Indicates if the user has restricted access. - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Role.md b/docs/Models/Requests/Role.md deleted file mode 100644 index 45a4ede..0000000 --- a/docs/Models/Requests/Role.md +++ /dev/null @@ -1,13 +0,0 @@ -# Role - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | The unique identifier for the role.
NOTE: This is different for each Plex server and is not globally unique.
| 126522 | -| `Filter` | *string* | :heavy_check_mark: | The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. | actor=126522 | -| `Tag` | *string* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | -| `TagKey` | *string* | :heavy_check_mark: | A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification.
NOTE: This is globally unique across all Plex Servers.
| 5d77683d85719b001f3a535e | -| `RoleValue` | *string* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/ScanRequest.md b/docs/Models/Requests/ScanRequest.md new file mode 100644 index 0000000..9dd9525 --- /dev/null +++ b/docs/Models/Requests/ScanRequest.md @@ -0,0 +1,20 @@ +# ScanRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DeviceId` | *long* | :heavy_check_mark: | The ID of the device. | | +| `Source` | *string* | :heavy_minus_sign: | A valid source for the scan | Cable | \ No newline at end of file diff --git a/docs/Models/Requests/ScanResponse.md b/docs/Models/Requests/ScanResponse.md new file mode 100644 index 0000000..fcffbe8 --- /dev/null +++ b/docs/Models/Requests/ScanResponse.md @@ -0,0 +1,12 @@ +# ScanResponse + + +## 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 | +| `MediaContainerWithDevice` | [MediaContainerWithDevice](../../Models/Components/MediaContainerWithDevice.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Scope.md b/docs/Models/Requests/Scope.md index ac7b0f1..05d8574 100644 --- a/docs/Models/Requests/Scope.md +++ b/docs/Models/Requests/Scope.md @@ -1,6 +1,6 @@ # Scope -`all` - This is the only supported `scope` parameter. +The value `all` is the only supported `scope` parameter. ## Values diff --git a/docs/Models/Requests/SearchHubsMediaContainer.md b/docs/Models/Requests/SearchHubsMediaContainer.md new file mode 100644 index 0000000..0007528 --- /dev/null +++ b/docs/Models/Requests/SearchHubsMediaContainer.md @@ -0,0 +1,17 @@ +# SearchHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Hub` | List<[Models.Components.Hub](../../Models/Components/Hub.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SearchHubsRequest.md b/docs/Models/Requests/SearchHubsRequest.md new file mode 100644 index 0000000..695f629 --- /dev/null +++ b/docs/Models/Requests/SearchHubsRequest.md @@ -0,0 +1,21 @@ +# SearchHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Query` | *string* | :heavy_check_mark: | The query term | | +| `SectionId` | *long* | :heavy_minus_sign: | This gives context to the search, and can result in re-ordering of search result hubs. | 1 | +| `Limit` | *long* | :heavy_minus_sign: | The number of items to return per hub. 3 if not specified | | \ No newline at end of file diff --git a/docs/Models/Requests/SearchHubsResponse.md b/docs/Models/Requests/SearchHubsResponse.md new file mode 100644 index 0000000..0b822fa --- /dev/null +++ b/docs/Models/Requests/SearchHubsResponse.md @@ -0,0 +1,12 @@ +# SearchHubsResponse + + +## 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` | [SearchHubsResponseBody](../../Models/Requests/SearchHubsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SearchHubsResponseBody.md b/docs/Models/Requests/SearchHubsResponseBody.md new file mode 100644 index 0000000..f138ead --- /dev/null +++ b/docs/Models/Requests/SearchHubsResponseBody.md @@ -0,0 +1,10 @@ +# SearchHubsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `MediaContainer` | [SearchHubsMediaContainer](../../Models/Requests/SearchHubsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SearchResult.md b/docs/Models/Requests/SearchResult.md deleted file mode 100644 index d2ebc37..0000000 --- a/docs/Models/Requests/SearchResult.md +++ /dev/null @@ -1,10 +0,0 @@ -# SearchResult - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `Score` | *float* | :heavy_check_mark: | The score of the search result, typically a float value between 0 and 1. | 0.92 | -| `Directory` | [GetSearchAllLibrariesDirectory](../../Models/Requests/GetSearchAllLibrariesDirectory.md) | :heavy_minus_sign: | N/A | | -| `Metadata` | [GetSearchAllLibrariesMetadata](../../Models/Requests/GetSearchAllLibrariesMetadata.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/SearchTypes.md b/docs/Models/Requests/SearchTypes.md deleted file mode 100644 index 365669a..0000000 --- a/docs/Models/Requests/SearchTypes.md +++ /dev/null @@ -1,12 +0,0 @@ -# SearchTypes - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `Movies` | movies | -| `Music` | music | -| `OtherVideos` | otherVideos | -| `People` | people | -| `Tv` | tv | \ No newline at end of file diff --git a/docs/Models/Requests/Server.md b/docs/Models/Requests/Server.md deleted file mode 100644 index 198ee75..0000000 --- a/docs/Models/Requests/Server.md +++ /dev/null @@ -1,18 +0,0 @@ -# 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/Services.md b/docs/Models/Requests/Services.md deleted file mode 100644 index c23e85b..0000000 --- a/docs/Models/Requests/Services.md +++ /dev/null @@ -1,12 +0,0 @@ -# Services - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `Identifier` | *string* | :heavy_check_mark: | N/A | metadata-dev | -| `Endpoint` | *string* | :heavy_check_mark: | N/A | https://epg.provider.plex.tv | -| `Token` | *string* | :heavy_check_mark: | N/A | DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv | -| `Secret` | *string* | :heavy_check_mark: | N/A | | -| `Status` | [GetTokenDetailsStatus](../../Models/Requests/GetTokenDetailsStatus.md) | :heavy_check_mark: | N/A | online | \ No newline at end of file diff --git a/docs/Models/Requests/Session.md b/docs/Models/Requests/Session.md deleted file mode 100644 index ce1ac4a..0000000 --- a/docs/Models/Requests/Session.md +++ /dev/null @@ -1,10 +0,0 @@ -# Session - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `Id` | *string* | :heavy_minus_sign: | N/A | 93h7e00ncblxncqw9lkfaoxi | -| `Bandwidth` | *int* | :heavy_minus_sign: | N/A | 1050 | -| `Location` | *string* | :heavy_minus_sign: | N/A | lan | \ No newline at end of file diff --git a/docs/Models/Requests/SetChannelmapRequest.md b/docs/Models/Requests/SetChannelmapRequest.md new file mode 100644 index 0000000..b38edc5 --- /dev/null +++ b/docs/Models/Requests/SetChannelmapRequest.md @@ -0,0 +1,22 @@ +# SetChannelmapRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DeviceId` | *long* | :heavy_check_mark: | The ID of the device. | | +| `ChannelMapping` | [Models.Requests.ChannelMapping](../../Models/Requests/ChannelMapping.md) | :heavy_minus_sign: | The mapping of changes, passed as a map of device channel to lineup VCN. | {
"46.3": 2,
"48.9": 4
} | +| `ChannelMappingByKey` | [ChannelMappingByKey](../../Models/Requests/ChannelMappingByKey.md) | :heavy_minus_sign: | The mapping of changes, passed as a map of device channel to lineup key. | {
"46.3": "5cc83d73af4a72001e9b16d7-5cab3c634df507001fefcad0",
"48.9": "5cc83d73af4a72001e9b16d7-5cab3c63ec158a001d32db8d"
} | +| `ChannelsEnabled` | List<*string*> | :heavy_minus_sign: | The channels which are enabled. | 46.1,44.1,45.1 | \ No newline at end of file diff --git a/docs/Models/Requests/SetChannelmapResponse.md b/docs/Models/Requests/SetChannelmapResponse.md new file mode 100644 index 0000000..c4f260f --- /dev/null +++ b/docs/Models/Requests/SetChannelmapResponse.md @@ -0,0 +1,11 @@ +# SetChannelmapResponse + + +## 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 | +| `MediaContainerWithDevice` | [MediaContainerWithDevice](../../Models/Components/MediaContainerWithDevice.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/SetDVRPreferencesDVR.md b/docs/Models/Requests/SetDVRPreferencesDVR.md new file mode 100644 index 0000000..958a2c2 --- /dev/null +++ b/docs/Models/Requests/SetDVRPreferencesDVR.md @@ -0,0 +1,12 @@ +# SetDVRPreferencesDVR + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `Device` | List<[Models.Components.Device](../../Models/Components/Device.md)> | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Language` | *string* | :heavy_minus_sign: | N/A | +| `Lineup` | *string* | :heavy_minus_sign: | N/A | +| `Uuid` | *string* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SetDVRPreferencesDVRsMediaContainer.md b/docs/Models/Requests/SetDVRPreferencesDVRsMediaContainer.md new file mode 100644 index 0000000..2e89a2b --- /dev/null +++ b/docs/Models/Requests/SetDVRPreferencesDVRsMediaContainer.md @@ -0,0 +1,17 @@ +# SetDVRPreferencesDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Status` | *long* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/Models/Requests/SetDVRPreferencesMediaContainer.md b/docs/Models/Requests/SetDVRPreferencesMediaContainer.md new file mode 100644 index 0000000..aa83113 --- /dev/null +++ b/docs/Models/Requests/SetDVRPreferencesMediaContainer.md @@ -0,0 +1,9 @@ +# SetDVRPreferencesMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [SetDVRPreferencesDVRsMediaContainer](../../Models/Requests/SetDVRPreferencesDVRsMediaContainer.md) | :heavy_minus_sign: | N/A | +| `Dvr` | List<[SetDVRPreferencesDVR](../../Models/Requests/SetDVRPreferencesDVR.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SetDVRPreferencesRequest.md b/docs/Models/Requests/SetDVRPreferencesRequest.md new file mode 100644 index 0000000..389e07f --- /dev/null +++ b/docs/Models/Requests/SetDVRPreferencesRequest.md @@ -0,0 +1,20 @@ +# SetDVRPreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DvrId` | *long* | :heavy_check_mark: | The ID of the DVR. | | +| `Name` | *string* | :heavy_minus_sign: | Set the `name` preference to the provided value | | \ No newline at end of file diff --git a/docs/Models/Requests/SetDVRPreferencesResponse.md b/docs/Models/Requests/SetDVRPreferencesResponse.md new file mode 100644 index 0000000..42b9402 --- /dev/null +++ b/docs/Models/Requests/SetDVRPreferencesResponse.md @@ -0,0 +1,12 @@ +# SetDVRPreferencesResponse + + +## 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` | [SetDVRPreferencesResponseBody](../../Models/Requests/SetDVRPreferencesResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SetDVRPreferencesResponseBody.md b/docs/Models/Requests/SetDVRPreferencesResponseBody.md new file mode 100644 index 0000000..9c65cbb --- /dev/null +++ b/docs/Models/Requests/SetDVRPreferencesResponseBody.md @@ -0,0 +1,10 @@ +# SetDVRPreferencesResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `MediaContainer` | [SetDVRPreferencesMediaContainer](../../Models/Requests/SetDVRPreferencesMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SetDevicePreferencesRequest.md b/docs/Models/Requests/SetDevicePreferencesRequest.md new file mode 100644 index 0000000..deb21ca --- /dev/null +++ b/docs/Models/Requests/SetDevicePreferencesRequest.md @@ -0,0 +1,20 @@ +# SetDevicePreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DeviceId` | *long* | :heavy_check_mark: | The ID of the device. | | +| `Name` | *string* | :heavy_minus_sign: | The preference names and values. | | \ No newline at end of file diff --git a/docs/Models/Requests/SetDevicePreferencesResponse.md b/docs/Models/Requests/SetDevicePreferencesResponse.md new file mode 100644 index 0000000..fb9b568 --- /dev/null +++ b/docs/Models/Requests/SetDevicePreferencesResponse.md @@ -0,0 +1,10 @@ +# SetDevicePreferencesResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/SetItemArtworkRequest.md b/docs/Models/Requests/SetItemArtworkRequest.md new file mode 100644 index 0000000..73bc4d4 --- /dev/null +++ b/docs/Models/Requests/SetItemArtworkRequest.md @@ -0,0 +1,21 @@ +# SetItemArtworkRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Element` | [Element](../../Models/Requests/Element.md) | :heavy_check_mark: | N/A | | +| `Url` | *string* | :heavy_minus_sign: | The url of the new asset. If not provided, the binary of the asset must be provided in the post body. | | \ No newline at end of file diff --git a/docs/Models/Requests/SetItemArtworkResponse.md b/docs/Models/Requests/SetItemArtworkResponse.md new file mode 100644 index 0000000..118be16 --- /dev/null +++ b/docs/Models/Requests/SetItemArtworkResponse.md @@ -0,0 +1,10 @@ +# SetItemArtworkResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/SetItemPreferencesRequest.md b/docs/Models/Requests/SetItemPreferencesRequest.md new file mode 100644 index 0000000..7584828 --- /dev/null +++ b/docs/Models/Requests/SetItemPreferencesRequest.md @@ -0,0 +1,20 @@ +# SetItemPreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Args` | [QueryParamArgs](../../Models/Requests/QueryParamArgs.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/SetItemPreferencesResponse.md b/docs/Models/Requests/SetItemPreferencesResponse.md new file mode 100644 index 0000000..22d7d1d --- /dev/null +++ b/docs/Models/Requests/SetItemPreferencesResponse.md @@ -0,0 +1,10 @@ +# SetItemPreferencesResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/SetPreferencesRequest.md b/docs/Models/Requests/SetPreferencesRequest.md new file mode 100644 index 0000000..afc2ff9 --- /dev/null +++ b/docs/Models/Requests/SetPreferencesRequest.md @@ -0,0 +1,19 @@ +# SetPreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Prefs` | [Prefs](../../Models/Requests/Prefs.md) | :heavy_check_mark: | N/A | {
"FriendlyName": "My Server",
"ScheduledLibraryUpdateInterval": 3600,
"sendCrashReports": 1
} | \ No newline at end of file diff --git a/docs/Models/Requests/SetPreferencesResponse.md b/docs/Models/Requests/SetPreferencesResponse.md new file mode 100644 index 0000000..6598a64 --- /dev/null +++ b/docs/Models/Requests/SetPreferencesResponse.md @@ -0,0 +1,10 @@ +# SetPreferencesResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/SetRatingRequest.md b/docs/Models/Requests/SetRatingRequest.md new file mode 100644 index 0000000..3495325 --- /dev/null +++ b/docs/Models/Requests/SetRatingRequest.md @@ -0,0 +1,22 @@ +# SetRatingRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Identifier` | *string* | :heavy_check_mark: | The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library` | | +| `Key` | *string* | :heavy_check_mark: | The key of the item to rate. This is the `ratingKey` found in metadata items | | +| `Rating` | *double* | :heavy_check_mark: | The rating to give the item. | | +| `RatedAt` | *long* | :heavy_minus_sign: | The time when the rating occurred. If not present, interpreted as now. | | \ No newline at end of file diff --git a/docs/Models/Requests/SetRatingResponse.md b/docs/Models/Requests/SetRatingResponse.md new file mode 100644 index 0000000..785c49d --- /dev/null +++ b/docs/Models/Requests/SetRatingResponse.md @@ -0,0 +1,10 @@ +# SetRatingResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/SetSectionPreferencesQueryParamPrefs.md b/docs/Models/Requests/SetSectionPreferencesQueryParamPrefs.md new file mode 100644 index 0000000..e70d4d6 --- /dev/null +++ b/docs/Models/Requests/SetSectionPreferencesQueryParamPrefs.md @@ -0,0 +1,7 @@ +# SetSectionPreferencesQueryParamPrefs + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/SetSectionPreferencesRequest.md b/docs/Models/Requests/SetSectionPreferencesRequest.md new file mode 100644 index 0000000..0d1ce0d --- /dev/null +++ b/docs/Models/Requests/SetSectionPreferencesRequest.md @@ -0,0 +1,20 @@ +# SetSectionPreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | +| `Prefs` | [SetSectionPreferencesQueryParamPrefs](../../Models/Requests/SetSectionPreferencesQueryParamPrefs.md) | :heavy_check_mark: | N/A | {
"enableCinemaTrailers": 1,
"hidden": 0
} | \ No newline at end of file diff --git a/docs/Models/Requests/SetSectionPreferencesResponse.md b/docs/Models/Requests/SetSectionPreferencesResponse.md new file mode 100644 index 0000000..69ad7d2 --- /dev/null +++ b/docs/Models/Requests/SetSectionPreferencesResponse.md @@ -0,0 +1,10 @@ +# SetSectionPreferencesResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/SetStreamOffsetRequest.md b/docs/Models/Requests/SetStreamOffsetRequest.md new file mode 100644 index 0000000..e6a39a3 --- /dev/null +++ b/docs/Models/Requests/SetStreamOffsetRequest.md @@ -0,0 +1,21 @@ +# SetStreamOffsetRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `StreamId` | *long* | :heavy_check_mark: | The id of the stream | | +| `Ext` | *string* | :heavy_check_mark: | This is not a part of this endpoint but documented here to satisfy OpenAPI | | +| `Offset` | *long* | :heavy_minus_sign: | The offest in ms | | \ No newline at end of file diff --git a/docs/Models/Requests/SetStreamOffsetResponse.md b/docs/Models/Requests/SetStreamOffsetResponse.md new file mode 100644 index 0000000..5c1550b --- /dev/null +++ b/docs/Models/Requests/SetStreamOffsetResponse.md @@ -0,0 +1,10 @@ +# SetStreamOffsetResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/SetStreamSelectionRequest.md b/docs/Models/Requests/SetStreamSelectionRequest.md new file mode 100644 index 0000000..84c23ad --- /dev/null +++ b/docs/Models/Requests/SetStreamSelectionRequest.md @@ -0,0 +1,22 @@ +# SetStreamSelectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PartId` | *long* | :heavy_check_mark: | The id of the part to select streams on | | +| `AudioStreamID` | *long* | :heavy_minus_sign: | The id of the audio stream to select in this part | | +| `SubtitleStreamID` | *long* | :heavy_minus_sign: | The id of the subtitle stream to select in this part. Specify 0 to select no subtitle | | +| `AllParts` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Perform the same for all parts of this media selecting similar streams in each | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/SetStreamSelectionResponse.md b/docs/Models/Requests/SetStreamSelectionResponse.md new file mode 100644 index 0000000..0f879c3 --- /dev/null +++ b/docs/Models/Requests/SetStreamSelectionResponse.md @@ -0,0 +1,10 @@ +# SetStreamSelectionResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Setting.md b/docs/Models/Requests/Setting.md deleted file mode 100644 index b9cad0d..0000000 --- a/docs/Models/Requests/Setting.md +++ /dev/null @@ -1,17 +0,0 @@ -# Setting - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------- | ----------------------- | ----------------------- | ----------------------- | ----------------------- | -| `Id` | *string* | :heavy_minus_sign: | N/A | EnableDatabaseTrace | -| `Label` | *string* | :heavy_minus_sign: | N/A | | -| `Summary` | *string* | :heavy_minus_sign: | N/A | | -| `Type` | *string* | :heavy_minus_sign: | N/A | bool | -| `Default` | *bool* | :heavy_minus_sign: | N/A | false | -| `Value` | *bool* | :heavy_minus_sign: | N/A | false | -| `Hidden` | *bool* | :heavy_minus_sign: | N/A | true | -| `Advanced` | *bool* | :heavy_minus_sign: | N/A | false | -| `Group` | *string* | :heavy_minus_sign: | N/A | | -| `EnumValues` | *string* | :heavy_minus_sign: | N/A | 1:admin only\|2:everyone | \ No newline at end of file diff --git a/docs/Models/Requests/SharedServers.md b/docs/Models/Requests/SharedServers.md deleted file mode 100644 index d787f3b..0000000 --- a/docs/Models/Requests/SharedServers.md +++ /dev/null @@ -1,7 +0,0 @@ -# SharedServers - - -## Fields - -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/SharedSources.md b/docs/Models/Requests/SharedSources.md deleted file mode 100644 index ca74299..0000000 --- a/docs/Models/Requests/SharedSources.md +++ /dev/null @@ -1,7 +0,0 @@ -# SharedSources - - -## Fields - -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/ShowOrdering.md b/docs/Models/Requests/ShowOrdering.md deleted file mode 100644 index 2965ddf..0000000 --- a/docs/Models/Requests/ShowOrdering.md +++ /dev/null @@ -1,21 +0,0 @@ -# ShowOrdering - -Setting that indicates the episode ordering for the show. -Options: - - None = Library default - - tmdbAiring = The Movie Database (Aired) - - aired = TheTVDB (Aired) - - dvd = TheTVDB (DVD) - - absolute = TheTVDB (Absolute) - - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `None` | None | -| `TmdbAiring` | tmdbAiring | -| `TvdbAired` | aired | -| `TvdbDvd` | dvd | -| `TvdbAbsolute` | absolute | \ No newline at end of file diff --git a/docs/Models/Requests/ShuffleRequest.md b/docs/Models/Requests/ShuffleRequest.md new file mode 100644 index 0000000..dfcfa09 --- /dev/null +++ b/docs/Models/Requests/ShuffleRequest.md @@ -0,0 +1,19 @@ +# ShuffleRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlayQueueId` | *long* | :heavy_check_mark: | The ID of the play queue. | | \ No newline at end of file diff --git a/docs/Models/Requests/ShuffleResponse.md b/docs/Models/Requests/ShuffleResponse.md new file mode 100644 index 0000000..d8532ed --- /dev/null +++ b/docs/Models/Requests/ShuffleResponse.md @@ -0,0 +1,11 @@ +# ShuffleResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/Similar.md b/docs/Models/Requests/Similar.md deleted file mode 100644 index a0683b4..0000000 --- a/docs/Models/Requests/Similar.md +++ /dev/null @@ -1,12 +0,0 @@ -# Similar - -The display tag for the similar item, typically the title. - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------- | --------------------- | --------------------- | --------------------- | --------------------- | -| `Id` | *int* | :heavy_check_mark: | N/A | 259 | -| `Filter` | *string* | :heavy_check_mark: | N/A | similar=259 | -| `Tag` | *string* | :heavy_check_mark: | N/A | Criss Angel Mindfreak | \ No newline at end of file diff --git a/docs/Models/Requests/Skip.md b/docs/Models/Requests/Skip.md deleted file mode 100644 index 83cdee9..0000000 --- a/docs/Models/Requests/Skip.md +++ /dev/null @@ -1,11 +0,0 @@ -# Skip - -Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`. - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Smart.md b/docs/Models/Requests/Smart.md deleted file mode 100644 index 9be1798..0000000 --- a/docs/Models/Requests/Smart.md +++ /dev/null @@ -1,11 +0,0 @@ -# Smart - -whether the playlist is smart or not - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Sort.md b/docs/Models/Requests/Sort.md deleted file mode 100644 index 788f54d..0000000 --- a/docs/Models/Requests/Sort.md +++ /dev/null @@ -1,15 +0,0 @@ -# Sort - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| `Default` | *string* | :heavy_minus_sign: | N/A | asc | -| `Active` | *bool* | :heavy_minus_sign: | N/A | false | -| `ActiveDirection` | [ActiveDirection](../../Models/Requests/ActiveDirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `DefaultDirection` | [DefaultDirection](../../Models/Requests/DefaultDirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `DescKey` | *string* | :heavy_minus_sign: | N/A | titleSort:desc | -| `FirstCharacterKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | -| `Key` | *string* | :heavy_check_mark: | N/A | titleSort | -| `Title` | *string* | :heavy_check_mark: | N/A | Title | \ No newline at end of file diff --git a/docs/Models/Requests/SplitItemRequest.md b/docs/Models/Requests/SplitItemRequest.md new file mode 100644 index 0000000..bbe66c9 --- /dev/null +++ b/docs/Models/Requests/SplitItemRequest.md @@ -0,0 +1,19 @@ +# SplitItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/SplitItemResponse.md b/docs/Models/Requests/SplitItemResponse.md new file mode 100644 index 0000000..f4fa06e --- /dev/null +++ b/docs/Models/Requests/SplitItemResponse.md @@ -0,0 +1,10 @@ +# SplitItemResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/StartAllTasksResponse.md b/docs/Models/Requests/StartAllTasksResponse.md deleted file mode 100644 index eda0e0b..0000000 --- a/docs/Models/Requests/StartAllTasksResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/StartAnalysisRequest.md b/docs/Models/Requests/StartAnalysisRequest.md new file mode 100644 index 0000000..9c03224 --- /dev/null +++ b/docs/Models/Requests/StartAnalysisRequest.md @@ -0,0 +1,19 @@ +# StartAnalysisRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/Models/Requests/StartAnalysisResponse.md b/docs/Models/Requests/StartAnalysisResponse.md new file mode 100644 index 0000000..151846a --- /dev/null +++ b/docs/Models/Requests/StartAnalysisResponse.md @@ -0,0 +1,10 @@ +# StartAnalysisResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/StartBifGenerationRequest.md b/docs/Models/Requests/StartBifGenerationRequest.md new file mode 100644 index 0000000..2820d88 --- /dev/null +++ b/docs/Models/Requests/StartBifGenerationRequest.md @@ -0,0 +1,20 @@ +# StartBifGenerationRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Force` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/StartBifGenerationResponse.md b/docs/Models/Requests/StartBifGenerationResponse.md new file mode 100644 index 0000000..d256512 --- /dev/null +++ b/docs/Models/Requests/StartBifGenerationResponse.md @@ -0,0 +1,10 @@ +# StartBifGenerationResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/StartTaskRequest.md b/docs/Models/Requests/StartTaskRequest.md index 1367e00..a65507c 100644 --- a/docs/Models/Requests/StartTaskRequest.md +++ b/docs/Models/Requests/StartTaskRequest.md @@ -3,6 +3,17 @@ ## 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 +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Task` | [PathParamTask](../../Models/Requests/PathParamTask.md) | :heavy_check_mark: | The task name | | \ No newline at end of file diff --git a/docs/Models/Requests/StartTasksResponse.md b/docs/Models/Requests/StartTasksResponse.md new file mode 100644 index 0000000..debc4a4 --- /dev/null +++ b/docs/Models/Requests/StartTasksResponse.md @@ -0,0 +1,10 @@ +# StartTasksResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/StartTranscodeSessionQueryParamLocation.md b/docs/Models/Requests/StartTranscodeSessionQueryParamLocation.md new file mode 100644 index 0000000..4be0735 --- /dev/null +++ b/docs/Models/Requests/StartTranscodeSessionQueryParamLocation.md @@ -0,0 +1,12 @@ +# StartTranscodeSessionQueryParamLocation + +Network type of the client, can be used to help determine target bitrate. + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `Lan` | lan | +| `Wan` | wan | +| `Cellular` | cellular | \ No newline at end of file diff --git a/docs/Models/Requests/StartTranscodeSessionQueryParamProtocol.md b/docs/Models/Requests/StartTranscodeSessionQueryParamProtocol.md new file mode 100644 index 0000000..8b79afe --- /dev/null +++ b/docs/Models/Requests/StartTranscodeSessionQueryParamProtocol.md @@ -0,0 +1,13 @@ +# StartTranscodeSessionQueryParamProtocol + +Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + + + +## Values + +| Name | Value | +| ------ | ------ | +| `Http` | http | +| `Hls` | hls | +| `Dash` | dash | \ No newline at end of file diff --git a/docs/Models/Requests/StartTranscodeSessionQueryParamSubtitles.md b/docs/Models/Requests/StartTranscodeSessionQueryParamSubtitles.md new file mode 100644 index 0000000..f560e31 --- /dev/null +++ b/docs/Models/Requests/StartTranscodeSessionQueryParamSubtitles.md @@ -0,0 +1,17 @@ +# StartTranscodeSessionQueryParamSubtitles + +Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Auto` | auto | +| `Burn` | burn | +| `None` | none | +| `Sidecar` | sidecar | +| `Embedded` | embedded | +| `Segmented` | segmented | +| `Unknown` | unknown | \ No newline at end of file diff --git a/docs/Models/Requests/StartTranscodeSessionRequest.md b/docs/Models/Requests/StartTranscodeSessionRequest.md new file mode 100644 index 0000000..a4f4bd9 --- /dev/null +++ b/docs/Models/Requests/StartTranscodeSessionRequest.md @@ -0,0 +1,50 @@ +# StartTranscodeSessionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `TranscodeType` | [TranscodeType](../../Models/Components/TranscodeType.md) | :heavy_check_mark: | Type of transcode media | | +| `TranscodeSessionId` | *string* | :heavy_minus_sign: | Transcode session UUID | | +| `Extension` | [Extension](../../Models/Requests/Extension.md) | :heavy_check_mark: | Extension
| | +| `AdvancedSubtitles` | [Models.Components.AdvancedSubtitles](../../Models/Components/AdvancedSubtitles.md) | :heavy_minus_sign: | Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
| burn | +| `AudioBoost` | *long* | :heavy_minus_sign: | Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) | 50 | +| `AudioChannelCount` | *long* | :heavy_minus_sign: | Target video number of audio channels. | 5 | +| `AutoAdjustQuality` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports ABR. | 1 | +| `AutoAdjustSubtitle` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates if the server should adjust subtitles based on Voice Activity Data. | 1 | +| `DirectPlay` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports direct playing the indicated content. | 1 | +| `DirectStream` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the video of the indicated content. | 1 | +| `DirectStreamAudio` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the audio of the indicated content. | 1 | +| `DisableResolutionRotation` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates if resolution should be adjusted for orientation. | 1 | +| `HasMDE` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 | 1 | +| `Location` | [StartTranscodeSessionQueryParamLocation](../../Models/Requests/StartTranscodeSessionQueryParamLocation.md) | :heavy_minus_sign: | Network type of the client, can be used to help determine target bitrate. | wan | +| `MediaBufferSize` | *long* | :heavy_minus_sign: | Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. | 102400 | +| `MediaIndex` | *long* | :heavy_minus_sign: | Index of the media to transcode. -1 or not specified indicates let the server choose. | 0 | +| `MusicBitrate` | *long* | :heavy_minus_sign: | Target bitrate for audio only files (in kbps, used to transcode). | 5000 | +| `Offset` | *double* | :heavy_minus_sign: | Offset from the start of the media (in seconds). | 90.5 | +| `PartIndex` | *long* | :heavy_minus_sign: | Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode | 0 | +| `Path` | *string* | :heavy_minus_sign: | Internal PMS path of the media to transcode. | /library/metadata/151671 | +| `PeakBitrate` | *long* | :heavy_minus_sign: | Maximum bitrate (in kbps) to use in ABR. | 12000 | +| `PhotoResolution` | *string* | :heavy_minus_sign: | Target photo resolution. | 1080x1080 | +| `Protocol` | [StartTranscodeSessionQueryParamProtocol](../../Models/Requests/StartTranscodeSessionQueryParamProtocol.md) | :heavy_minus_sign: | Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
| dash | +| `SecondsPerSegment` | *long* | :heavy_minus_sign: | Number of seconds to include in each transcoded segment | 5 | +| `SubtitleSize` | *long* | :heavy_minus_sign: | Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) | 50 | +| `Subtitles` | [StartTranscodeSessionQueryParamSubtitles](../../Models/Requests/StartTranscodeSessionQueryParamSubtitles.md) | :heavy_minus_sign: | Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
| Burn | +| `VideoBitrate` | *long* | :heavy_minus_sign: | Target video bitrate (in kbps). | 12000 | +| `VideoQuality` | *long* | :heavy_minus_sign: | Target photo quality. | 50 | +| `VideoResolution` | *string* | :heavy_minus_sign: | Target maximum video resolution. | 1080x1080 | +| `XPlexClientProfileExtra` | *string* | :heavy_minus_sign: | See [Profile Augmentations](#section/API-Info/Profile-Augmentations) . | add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash) | +| `XPlexClientProfileName` | *string* | :heavy_minus_sign: | Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. | generic | +| `XPlexSessionIdentifier` | *string* | :heavy_minus_sign: | Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) | | \ No newline at end of file diff --git a/docs/Models/Requests/StartTranscodeSessionResponse.md b/docs/Models/Requests/StartTranscodeSessionResponse.md new file mode 100644 index 0000000..726211e --- /dev/null +++ b/docs/Models/Requests/StartTranscodeSessionResponse.md @@ -0,0 +1,11 @@ +# StartTranscodeSessionResponse + + +## 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 | +| `Bytes` | *byte[]* | :heavy_minus_sign: | MPD file (see ISO/IEC 23009-1:2022), m3u8 file (see RFC 8216), or binary http stream | \ No newline at end of file diff --git a/docs/Models/Requests/StartUniversalTranscodeRequest.md b/docs/Models/Requests/StartUniversalTranscodeRequest.md deleted file mode 100644 index d6970c4..0000000 --- a/docs/Models/Requests/StartUniversalTranscodeRequest.md +++ /dev/null @@ -1,23 +0,0 @@ -# StartUniversalTranscodeRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | -| `HasMDE` | *double* | :heavy_check_mark: | Whether the media item has MDE | 1 | -| `Path` | *string* | :heavy_check_mark: | The path to the media item to transcode | /library/metadata/23409 | -| `MediaIndex` | *double* | :heavy_check_mark: | The index of the media item to transcode | 0 | -| `PartIndex` | *double* | :heavy_check_mark: | The index of the part to transcode | 0 | -| `Protocol` | *string* | :heavy_check_mark: | The protocol to use for the transcode session | hls | -| `FastSeek` | *double* | :heavy_minus_sign: | Whether to use fast seek or not | 0 | -| `DirectPlay` | *double* | :heavy_minus_sign: | Whether to use direct play or not | 0 | -| `DirectStream` | *double* | :heavy_minus_sign: | Whether to use direct stream or not | 0 | -| `SubtitleSize` | *double* | :heavy_minus_sign: | The size of the subtitles | 100 | -| `Subtites` | *string* | :heavy_minus_sign: | The subtitles | burn | -| `AudioBoost` | *double* | :heavy_minus_sign: | The audio boost | 100 | -| `Location` | *string* | :heavy_minus_sign: | The location of the transcode session | lan | -| `MediaBufferSize` | *double* | :heavy_minus_sign: | The size of the media buffer | 102400 | -| `Session` | *string* | :heavy_minus_sign: | The session ID | zvcage8b7rkioqcm8f4uns4c | -| `AddDebugOverlay` | *double* | :heavy_minus_sign: | Whether to add a debug overlay or not | 0 | -| `AutoAdjustQuality` | *double* | :heavy_minus_sign: | Whether to auto adjust quality or not | 0 | \ No newline at end of file diff --git a/docs/Models/Requests/StartUniversalTranscodeResponse.md b/docs/Models/Requests/StartUniversalTranscodeResponse.md deleted file mode 100644 index 97ead62..0000000 --- a/docs/Models/Requests/StartUniversalTranscodeResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/State.md b/docs/Models/Requests/State.md index 52d6ca4..746b059 100644 --- a/docs/Models/Requests/State.md +++ b/docs/Models/Requests/State.md @@ -1,12 +1,13 @@ # State -The state of the media item +The current state of the media. ## Values -| Name | Value | -| --------- | --------- | -| `Playing` | playing | -| `Paused` | paused | -| `Stopped` | stopped | \ No newline at end of file +| Name | Value | +| ----------- | ----------- | +| `Stopped` | stopped | +| `Buffering` | buffering | +| `Playing` | playing | +| `Paused` | paused | \ No newline at end of file diff --git a/docs/Models/Requests/StatisticsBandwidth.md b/docs/Models/Requests/StatisticsBandwidth.md deleted file mode 100644 index fd87269..0000000 --- a/docs/Models/Requests/StatisticsBandwidth.md +++ /dev/null @@ -1,13 +0,0 @@ -# StatisticsBandwidth - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `AccountID` | *int* | :heavy_minus_sign: | N/A | 238960586 | -| `DeviceID` | *int* | :heavy_minus_sign: | N/A | 208 | -| `Timespan` | *long* | :heavy_minus_sign: | N/A | 6 | -| `At` | *int* | :heavy_minus_sign: | N/A | 1718387650 | -| `Lan` | *bool* | :heavy_minus_sign: | N/A | true | -| `Bytes` | *long* | :heavy_minus_sign: | N/A | 22 | \ No newline at end of file diff --git a/docs/Models/Requests/StatisticsMedia.md b/docs/Models/Requests/StatisticsMedia.md deleted file mode 100644 index 8b41309..0000000 --- a/docs/Models/Requests/StatisticsMedia.md +++ /dev/null @@ -1,14 +0,0 @@ -# StatisticsMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `AccountID` | *int* | :heavy_minus_sign: | N/A | 1 | -| `DeviceID` | *int* | :heavy_minus_sign: | N/A | 13 | -| `Timespan` | *int* | :heavy_minus_sign: | N/A | 4 | -| `At` | *int* | :heavy_minus_sign: | N/A | 1707141600 | -| `MetadataType` | *int* | :heavy_minus_sign: | N/A | 4 | -| `Count` | *int* | :heavy_minus_sign: | N/A | 1 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 1555 | \ No newline at end of file diff --git a/docs/Models/Requests/StatisticsResources.md b/docs/Models/Requests/StatisticsResources.md deleted file mode 100644 index c167536..0000000 --- a/docs/Models/Requests/StatisticsResources.md +++ /dev/null @@ -1,13 +0,0 @@ -# StatisticsResources - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------- | -------------------------- | -------------------------- | -------------------------- | -------------------------- | -| `Timespan` | *long* | :heavy_minus_sign: | N/A | 6 | -| `At` | *long* | :heavy_minus_sign: | N/A | 1718384427 | -| `HostCpuUtilization` | *float* | :heavy_minus_sign: | N/A | 1.276 | -| `ProcessCpuUtilization` | *float* | :heavy_minus_sign: | N/A | 0.025 | -| `HostMemoryUtilization` | *float* | :heavy_minus_sign: | N/A | 17.026 | -| `ProcessMemoryUtilization` | *float* | :heavy_minus_sign: | N/A | 0.493 | \ No newline at end of file diff --git a/docs/Models/Requests/Status.md b/docs/Models/Requests/Status.md index c89cdaf..6bb8750 100644 --- a/docs/Models/Requests/Status.md +++ b/docs/Models/Requests/Status.md @@ -1,10 +1,20 @@ # Status -Current friend request status +The state of this queue + - deciding: At least one item is still being decided + - waiting: At least one item is waiting for transcode and none are currently transcoding + - processing: At least one item is being transcoded + - done: All items are available (or potentially expired) + - error: At least one item has encountered an error + ## Values -| Name | Value | -| ---------- | ---------- | -| `Accepted` | accepted | \ No newline at end of file +| Name | Value | +| ------------ | ------------ | +| `Deciding` | deciding | +| `Waiting` | waiting | +| `Processing` | processing | +| `Done` | done | +| `Error` | error | \ No newline at end of file diff --git a/docs/Models/Requests/StopAllRefreshesResponse.md b/docs/Models/Requests/StopAllRefreshesResponse.md new file mode 100644 index 0000000..2f9da23 --- /dev/null +++ b/docs/Models/Requests/StopAllRefreshesResponse.md @@ -0,0 +1,11 @@ +# StopAllRefreshesResponse + + +## 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 | +| `RequestHandlerSlashGetResponses200` | [RequestHandlerSlashGetResponses200](../../Models/Components/RequestHandlerSlashGetResponses200.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/StopAllTasksResponse.md b/docs/Models/Requests/StopAllTasksResponse.md deleted file mode 100644 index 5b97c8f..0000000 --- a/docs/Models/Requests/StopAllTasksResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/StopDVRReloadRequest.md b/docs/Models/Requests/StopDVRReloadRequest.md new file mode 100644 index 0000000..3a839da --- /dev/null +++ b/docs/Models/Requests/StopDVRReloadRequest.md @@ -0,0 +1,19 @@ +# StopDVRReloadRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DvrId` | *long* | :heavy_check_mark: | The ID of the DVR. | | \ No newline at end of file diff --git a/docs/Models/Requests/StopDVRReloadResponse.md b/docs/Models/Requests/StopDVRReloadResponse.md new file mode 100644 index 0000000..3be08b8 --- /dev/null +++ b/docs/Models/Requests/StopDVRReloadResponse.md @@ -0,0 +1,10 @@ +# StopDVRReloadResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/StopScanRequest.md b/docs/Models/Requests/StopScanRequest.md new file mode 100644 index 0000000..9ab5567 --- /dev/null +++ b/docs/Models/Requests/StopScanRequest.md @@ -0,0 +1,19 @@ +# StopScanRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DeviceId` | *long* | :heavy_check_mark: | The ID of the device. | | \ No newline at end of file diff --git a/docs/Models/Requests/StopScanResponse.md b/docs/Models/Requests/StopScanResponse.md new file mode 100644 index 0000000..aba0eef --- /dev/null +++ b/docs/Models/Requests/StopScanResponse.md @@ -0,0 +1,11 @@ +# StopScanResponse + + +## 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 | +| `MediaContainerWithDevice` | [MediaContainerWithDevice](../../Models/Components/MediaContainerWithDevice.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/StopTaskRequest.md b/docs/Models/Requests/StopTaskRequest.md index 3abde2f..66f8be5 100644 --- a/docs/Models/Requests/StopTaskRequest.md +++ b/docs/Models/Requests/StopTaskRequest.md @@ -3,6 +3,17 @@ ## 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 +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Task` | [Task](../../Models/Requests/Task.md) | :heavy_check_mark: | The task name | | \ No newline at end of file diff --git a/docs/Models/Requests/StopTasksResponse.md b/docs/Models/Requests/StopTasksResponse.md new file mode 100644 index 0000000..0c0abaf --- /dev/null +++ b/docs/Models/Requests/StopTasksResponse.md @@ -0,0 +1,10 @@ +# StopTasksResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/StopTranscodeSessionRequest.md b/docs/Models/Requests/StopTranscodeSessionRequest.md deleted file mode 100644 index d694f48..0000000 --- a/docs/Models/Requests/StopTranscodeSessionRequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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 deleted file mode 100644 index 2277524..0000000 --- a/docs/Models/Requests/StopTranscodeSessionResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Stream.md b/docs/Models/Requests/Stream.md deleted file mode 100644 index 739e042..0000000 --- a/docs/Models/Requests/Stream.md +++ /dev/null @@ -1,58 +0,0 @@ -# Stream - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | Unique stream identifier. | 1002625 | -| `StreamType` | *long* | :heavy_check_mark: | Stream type:
- VIDEO = 1
- AUDIO = 2
- SUBTITLE = 3
| | -| `Format` | *string* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | -| `Default` | *bool* | :heavy_minus_sign: | Indicates if this stream is default. | true | -| `Codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | -| `Index` | *int* | :heavy_minus_sign: | Index of the stream. | 0 | -| `Bitrate` | *int* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | -| `Language` | *string* | :heavy_minus_sign: | Language of the stream. | English | -| `LanguageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | -| `LanguageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | -| `HeaderCompression` | *bool* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | -| `DOVIBLCompatID` | *int* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | -| `DOVIBLPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | -| `DOVIELPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | -| `DOVILevel` | *int* | :heavy_minus_sign: | Dolby Vision level. | 6 | -| `DOVIPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | -| `DOVIProfile` | *int* | :heavy_minus_sign: | Dolby Vision profile. | 8 | -| `DOVIRPUPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | -| `DOVIVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | -| `BitDepth` | *int* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | -| `ChromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | -| `ChromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | -| `CodedHeight` | *int* | :heavy_minus_sign: | Coded video height. | 1608 | -| `CodedWidth` | *int* | :heavy_minus_sign: | Coded video width. | 3840 | -| `ClosedCaptions` | *bool* | :heavy_minus_sign: | N/A | true | -| `ColorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | -| `ColorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | -| `ColorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | -| `ColorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | -| `FrameRate` | *float* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | -| `Key` | *string* | :heavy_minus_sign: | Key to access this stream part. | /library/streams/216389 | -| `Height` | *int* | :heavy_minus_sign: | Height of the video stream. | 1602 | -| `Level` | *int* | :heavy_minus_sign: | Video level. | 150 | -| `Original` | *bool* | :heavy_minus_sign: | Indicates if this is the original stream. | true | -| `HasScalingMatrix` | *bool* | :heavy_minus_sign: | N/A | false | -| `Profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | -| `ScanType` | *string* | :heavy_minus_sign: | N/A | progressive | -| `EmbeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | -| `RefFrames` | *int* | :heavy_minus_sign: | Number of reference frames. | 1 | -| `Width` | *int* | :heavy_minus_sign: | Width of the video stream. | 3840 | -| `DisplayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `ExtendedDisplayTitle` | *string* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `Selected` | *bool* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | -| `Forced` | *bool* | :heavy_minus_sign: | N/A | true | -| `Channels` | *int* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | -| `AudioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | -| `SamplingRate` | *int* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | -| `CanAutoSync` | *bool* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | -| `HearingImpaired` | *bool* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | -| `Dub` | *bool* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | -| `Title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/Models/Requests/Subscription.md b/docs/Models/Requests/Subscription.md deleted file mode 100644 index 7e2a3f0..0000000 --- a/docs/Models/Requests/Subscription.md +++ /dev/null @@ -1,15 +0,0 @@ -# Subscription - -If the account’s Plex Pass subscription is active - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| `Features` | List<*string*> | :heavy_minus_sign: | List of features allowed on your Plex Pass subscription | | -| `Active` | *bool* | :heavy_minus_sign: | If the account's Plex Pass subscription is active | true | -| `SubscribedAt` | *string* | :heavy_minus_sign: | Date the account subscribed to Plex Pass | 2021-04-12T18:21:12Z | -| `Status` | [GetTokenDetailsAuthenticationStatus](../../Models/Requests/GetTokenDetailsAuthenticationStatus.md) | :heavy_minus_sign: | String representation of subscriptionActive | Inactive | -| `PaymentService` | *string* | :heavy_minus_sign: | Payment service used for your Plex Pass subscription | | -| `Plan` | *string* | :heavy_minus_sign: | Name of Plex Pass subscription plan | | \ No newline at end of file diff --git a/docs/Models/Requests/SubscriptionTemplate.md b/docs/Models/Requests/SubscriptionTemplate.md new file mode 100644 index 0000000..9b8a267 --- /dev/null +++ b/docs/Models/Requests/SubscriptionTemplate.md @@ -0,0 +1,8 @@ +# SubscriptionTemplate + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `MediaSubscription` | List<[Models.Requests.MediaSubscription](../../Models/Requests/MediaSubscription.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Subtitles.md b/docs/Models/Requests/Subtitles.md new file mode 100644 index 0000000..a2c95ca --- /dev/null +++ b/docs/Models/Requests/Subtitles.md @@ -0,0 +1,17 @@ +# Subtitles + +Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Auto` | auto | +| `Burn` | burn | +| `None` | none | +| `Sidecar` | sidecar | +| `Embedded` | embedded | +| `Segmented` | segmented | +| `Unknown` | unknown | \ No newline at end of file diff --git a/docs/Models/Requests/Tag.md b/docs/Models/Requests/Tag.md deleted file mode 100644 index 5bbdca0..0000000 --- a/docs/Models/Requests/Tag.md +++ /dev/null @@ -1,25 +0,0 @@ -# Tag - -A key representing a specific tag within the section. - - -## Values - -| Name | Value | -| ---------------- | ---------------- | -| `Unwatched` | unwatched | -| `Newest` | newest | -| `RecentlyAdded` | recentlyAdded | -| `RecentlyViewed` | recentlyViewed | -| `OnDeck` | onDeck | -| `Collection` | collection | -| `Edition` | edition | -| `Year` | year | -| `Decade` | decade | -| `Director` | director | -| `ContentRating` | contentRating | -| `Rating` | rating | -| `Resolution` | resolution | -| `FirstCharacter` | firstCharacter | -| `Folder` | folder | -| `Albums` | albums | \ No newline at end of file diff --git a/docs/Models/Requests/Task.md b/docs/Models/Requests/Task.md new file mode 100644 index 0000000..3a1b6fc --- /dev/null +++ b/docs/Models/Requests/Task.md @@ -0,0 +1,31 @@ +# Task + +The task name + + +## Values + +| Name | Value | +| ---------------------------------- | ---------------------------------- | +| `AutomaticUpdates` | AutomaticUpdates | +| `BackupDatabase` | BackupDatabase | +| `ButlerTaskGenerateAdMarkers` | ButlerTaskGenerateAdMarkers | +| `ButlerTaskGenerateCreditsMarkers` | ButlerTaskGenerateCreditsMarkers | +| `ButlerTaskGenerateIntroMarkers` | ButlerTaskGenerateIntroMarkers | +| `ButlerTaskGenerateVoiceActivity` | ButlerTaskGenerateVoiceActivity | +| `CleanOldBundles` | CleanOldBundles | +| `CleanOldCacheFiles` | CleanOldCacheFiles | +| `DeepMediaAnalysis` | DeepMediaAnalysis | +| `GarbageCollectBlobs` | GarbageCollectBlobs | +| `GarbageCollectLibraryMedia` | GarbageCollectLibraryMedia | +| `GenerateBlurHashes` | GenerateBlurHashes | +| `GenerateChapterThumbs` | GenerateChapterThumbs | +| `GenerateMediaIndexFiles` | GenerateMediaIndexFiles | +| `LoudnessAnalysis` | LoudnessAnalysis | +| `MusicAnalysis` | MusicAnalysis | +| `OptimizeDatabase` | OptimizeDatabase | +| `RefreshEpgGuides` | RefreshEpgGuides | +| `RefreshLibraries` | RefreshLibraries | +| `RefreshLocalMedia` | RefreshLocalMedia | +| `RefreshPeriodicMetadata` | RefreshPeriodicMetadata | +| `UpgradeMediaAnalysis` | UpgradeMediaAnalysis | \ No newline at end of file diff --git a/docs/Models/Requests/TaskName.md b/docs/Models/Requests/TaskName.md deleted file mode 100644 index bdefa9d..0000000 --- a/docs/Models/Requests/TaskName.md +++ /dev/null @@ -1,23 +0,0 @@ -# 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/TerminateSessionRequest.md b/docs/Models/Requests/TerminateSessionRequest.md new file mode 100644 index 0000000..6956094 --- /dev/null +++ b/docs/Models/Requests/TerminateSessionRequest.md @@ -0,0 +1,20 @@ +# TerminateSessionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SessionId` | *string* | :heavy_check_mark: | The session id (found in the `Session` element in [/status/sessions](#tag/Status/operation/statusGetSlash)) | cdefghijklmnopqrstuvwxyz | +| `Reason` | *string* | :heavy_minus_sign: | The reason to give to the user (typically displayed in the client) | Stop Playing | \ No newline at end of file diff --git a/docs/Models/Requests/TerminateSessionResponse.md b/docs/Models/Requests/TerminateSessionResponse.md new file mode 100644 index 0000000..b2ab173 --- /dev/null +++ b/docs/Models/Requests/TerminateSessionResponse.md @@ -0,0 +1,10 @@ +# TerminateSessionResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Tonight.md b/docs/Models/Requests/Tonight.md deleted file mode 100644 index 1404bfb..0000000 --- a/docs/Models/Requests/Tonight.md +++ /dev/null @@ -1,11 +0,0 @@ -# Tonight - -Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Transcode.md b/docs/Models/Requests/Transcode.md new file mode 100644 index 0000000..94ea9d9 --- /dev/null +++ b/docs/Models/Requests/Transcode.md @@ -0,0 +1,9 @@ +# Transcode + +The transcode session object which is not yet documented otherwise it'd be a $ref here. + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/TranscodeImageRequest.md b/docs/Models/Requests/TranscodeImageRequest.md new file mode 100644 index 0000000..163c508 --- /dev/null +++ b/docs/Models/Requests/TranscodeImageRequest.md @@ -0,0 +1,32 @@ +# TranscodeImageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Url` | *string* | :heavy_minus_sign: | The source URL for the image to transcode. Note, if this URL requires a token such as `X-Plex-Token`, it should be given as a query parameter to this url. | /library/metadata/265/thumb/1715112705 | +| `Format` | [Models.Requests.Format](../../Models/Requests/Format.md) | :heavy_minus_sign: | The output format for the image; defaults to jpg | | +| `Width` | *long* | :heavy_minus_sign: | The desired width of the output image | | +| `Height` | *long* | :heavy_minus_sign: | The desired height of the output image | | +| `Quality` | *long* | :heavy_minus_sign: | The desired quality of the output. -1 means the highest quality. Defaults to -1 | | +| `Background` | *string* | :heavy_minus_sign: | The background color to apply before painting the image. Only really applicable if image has transparency. Defaults to none | #ff5522 | +| `Upscale` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates if image should be upscaled to the desired width/height. Defaults to false | 1 | +| `MinSize` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates if image should be scaled to fit the smaller dimension. By default (false) the image is scaled to fit within the width/height specified but if this parameter is true, it will allow overflowing one dimension to fit the other. Essentially it is making the width/height minimum sizes of the image or sizing the image to fill the entire width/height even if it overflows one dimension. | 1 | +| `Rotate` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Obey the rotation values specified in EXIF data. Defaults to true. | 1 | +| `Blur` | *long* | :heavy_minus_sign: | Apply a blur to the image, Defaults to 0 (none) | | +| `Saturation` | *long* | :heavy_minus_sign: | Scale the image saturation by the specified percentage. Defaults to 100 | | +| `Opacity` | *long* | :heavy_minus_sign: | Render the image at the specified opacity percentage. Defaults to 100 | | +| `ChromaSubsampling` | [ChromaSubsampling](../../Models/Requests/ChromaSubsampling.md) | :heavy_minus_sign: | Use the specified chroma subsambling.
- 0: 411
- 1: 420
- 2: 422
- 3: 444
Defaults to 3 (444) | | +| `BlendColor` | *string* | :heavy_minus_sign: | The color to blend with the image. Defaults to none | #ff5522 | \ No newline at end of file diff --git a/docs/Models/Requests/TranscodeImageResponse.md b/docs/Models/Requests/TranscodeImageResponse.md new file mode 100644 index 0000000..7a0b5f9 --- /dev/null +++ b/docs/Models/Requests/TranscodeImageResponse.md @@ -0,0 +1,13 @@ +# TranscodeImageResponse + + +## 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 | +| `TwoHundredImageJpegBytes` | *byte[]* | :heavy_minus_sign: | The resulting image | +| `TwoHundredImagePngBytes` | *byte[]* | :heavy_minus_sign: | The resulting image | +| `TwoHundredImageXPortablePixmapBytes` | *byte[]* | :heavy_minus_sign: | The resulting image | \ No newline at end of file diff --git a/docs/Models/Requests/TranscodeJob.md b/docs/Models/Requests/TranscodeJob.md new file mode 100644 index 0000000..e73abde --- /dev/null +++ b/docs/Models/Requests/TranscodeJob.md @@ -0,0 +1,18 @@ +# TranscodeJob + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `GeneratorID` | *long* | :heavy_minus_sign: | N/A | +| `Key` | *string* | :heavy_minus_sign: | N/A | +| `Progress` | *double* | :heavy_minus_sign: | N/A | +| `RatingKey` | *string* | :heavy_minus_sign: | N/A | +| `Remaining` | *long* | :heavy_minus_sign: | The number of seconds remaining in this job | +| `Size` | *long* | :heavy_minus_sign: | The size of the result so far | +| `Speed` | *double* | :heavy_minus_sign: | The speed of the transcode; 1.0 means real-time | +| `TargetTagID` | *long* | :heavy_minus_sign: | The tag associated with the job. This could be the tag containing the optimizer settings. | +| `Thumb` | *string* | :heavy_minus_sign: | N/A | +| `Title` | *string* | :heavy_minus_sign: | N/A | +| `Type` | [GetBackgroundTasksType](../../Models/Requests/GetBackgroundTasksType.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/TranscodeSession.md b/docs/Models/Requests/TranscodeSession.md deleted file mode 100644 index 994bd49..0000000 --- a/docs/Models/Requests/TranscodeSession.md +++ /dev/null @@ -1,31 +0,0 @@ -# TranscodeSession - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `Key` | *string* | :heavy_minus_sign: | N/A | vv3i2q2lax92qlzul1hbd4bx | -| `Throttled` | *bool* | :heavy_minus_sign: | N/A | false | -| `Complete` | *bool* | :heavy_minus_sign: | N/A | false | -| `Progress` | *double* | :heavy_minus_sign: | N/A | 1.7999999523162842 | -| `Size` | *int* | :heavy_minus_sign: | N/A | -22 | -| `Speed` | *double* | :heavy_minus_sign: | N/A | 25.100000381469727 | -| `Error` | *bool* | :heavy_minus_sign: | N/A | false | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 1445695 | -| `Remaining` | *int* | :heavy_minus_sign: | N/A | 53 | -| `Context` | *string* | :heavy_minus_sign: | N/A | streaming | -| `SourceVideoCodec` | *string* | :heavy_minus_sign: | N/A | h264 | -| `SourceAudioCodec` | *string* | :heavy_minus_sign: | N/A | aac | -| `VideoDecision` | *string* | :heavy_minus_sign: | N/A | transcode | -| `AudioDecision` | *string* | :heavy_minus_sign: | N/A | transcode | -| `SubtitleDecision` | *string* | :heavy_minus_sign: | N/A | burn | -| `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` | *int* | :heavy_minus_sign: | N/A | 1 | -| `TranscodeHwRequested` | *bool* | :heavy_minus_sign: | N/A | true | -| `TimeStamp` | *double* | :heavy_minus_sign: | N/A | 1.7058958054919229e+09 | -| `MaxOffsetAvailable` | *double* | :heavy_minus_sign: | N/A | 29.53 | -| `MinOffsetAvailable` | *double* | :heavy_minus_sign: | N/A | 3.003000020980835 | \ No newline at end of file diff --git a/docs/Models/Requests/TranscodeSubtitlesRequest.md b/docs/Models/Requests/TranscodeSubtitlesRequest.md new file mode 100644 index 0000000..bf18560 --- /dev/null +++ b/docs/Models/Requests/TranscodeSubtitlesRequest.md @@ -0,0 +1,49 @@ +# TranscodeSubtitlesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `TranscodeType` | [TranscodeType](../../Models/Components/TranscodeType.md) | :heavy_check_mark: | Type of transcode media | | +| `TranscodeSessionId` | *string* | :heavy_minus_sign: | Transcode session UUID | | +| `AdvancedSubtitles` | [Models.Components.AdvancedSubtitles](../../Models/Components/AdvancedSubtitles.md) | :heavy_minus_sign: | Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
| burn | +| `AudioBoost` | *long* | :heavy_minus_sign: | Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) | 50 | +| `AudioChannelCount` | *long* | :heavy_minus_sign: | Target video number of audio channels. | 5 | +| `AutoAdjustQuality` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports ABR. | 1 | +| `AutoAdjustSubtitle` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates if the server should adjust subtitles based on Voice Activity Data. | 1 | +| `DirectPlay` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports direct playing the indicated content. | 1 | +| `DirectStream` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the video of the indicated content. | 1 | +| `DirectStreamAudio` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the audio of the indicated content. | 1 | +| `DisableResolutionRotation` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Indicates if resolution should be adjusted for orientation. | 1 | +| `HasMDE` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 | 1 | +| `Location` | [QueryParamLocation](../../Models/Requests/QueryParamLocation.md) | :heavy_minus_sign: | Network type of the client, can be used to help determine target bitrate. | wan | +| `MediaBufferSize` | *long* | :heavy_minus_sign: | Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. | 102400 | +| `MediaIndex` | *long* | :heavy_minus_sign: | Index of the media to transcode. -1 or not specified indicates let the server choose. | 0 | +| `MusicBitrate` | *long* | :heavy_minus_sign: | Target bitrate for audio only files (in kbps, used to transcode). | 5000 | +| `Offset` | *double* | :heavy_minus_sign: | Offset from the start of the media (in seconds). | 90.5 | +| `PartIndex` | *long* | :heavy_minus_sign: | Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode | 0 | +| `Path` | *string* | :heavy_minus_sign: | Internal PMS path of the media to transcode. | /library/metadata/151671 | +| `PeakBitrate` | *long* | :heavy_minus_sign: | Maximum bitrate (in kbps) to use in ABR. | 12000 | +| `PhotoResolution` | *string* | :heavy_minus_sign: | Target photo resolution. | 1080x1080 | +| `Protocol` | [QueryParamProtocol](../../Models/Requests/QueryParamProtocol.md) | :heavy_minus_sign: | Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
| dash | +| `SecondsPerSegment` | *long* | :heavy_minus_sign: | Number of seconds to include in each transcoded segment | 5 | +| `SubtitleSize` | *long* | :heavy_minus_sign: | Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) | 50 | +| `Subtitles` | [QueryParamSubtitles](../../Models/Requests/QueryParamSubtitles.md) | :heavy_minus_sign: | Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
| Burn | +| `VideoBitrate` | *long* | :heavy_minus_sign: | Target video bitrate (in kbps). | 12000 | +| `VideoQuality` | *long* | :heavy_minus_sign: | Target photo quality. | 50 | +| `VideoResolution` | *string* | :heavy_minus_sign: | Target maximum video resolution. | 1080x1080 | +| `XPlexClientProfileExtra` | *string* | :heavy_minus_sign: | See [Profile Augmentations](#section/API-Info/Profile-Augmentations) . | add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash) | +| `XPlexClientProfileName` | *string* | :heavy_minus_sign: | Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. | generic | +| `XPlexSessionIdentifier` | *string* | :heavy_minus_sign: | Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) | | \ No newline at end of file diff --git a/docs/Models/Requests/TranscodeSubtitlesResponse.md b/docs/Models/Requests/TranscodeSubtitlesResponse.md new file mode 100644 index 0000000..ace2f5b --- /dev/null +++ b/docs/Models/Requests/TranscodeSubtitlesResponse.md @@ -0,0 +1,10 @@ +# TranscodeSubtitlesResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Trials.md b/docs/Models/Requests/Trials.md deleted file mode 100644 index 1b9b77d..0000000 --- a/docs/Models/Requests/Trials.md +++ /dev/null @@ -1,7 +0,0 @@ -# Trials - - -## Fields - -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Requests/TriggerFallbackRequest.md b/docs/Models/Requests/TriggerFallbackRequest.md new file mode 100644 index 0000000..f79e2db --- /dev/null +++ b/docs/Models/Requests/TriggerFallbackRequest.md @@ -0,0 +1,20 @@ +# TriggerFallbackRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `TranscodeType` | [TranscodeType](../../Models/Components/TranscodeType.md) | :heavy_check_mark: | Type of transcode media | | +| `TranscodeSessionId` | *string* | :heavy_minus_sign: | Transcode session UUID | | \ No newline at end of file diff --git a/docs/Models/Requests/TriggerFallbackResponse.md b/docs/Models/Requests/TriggerFallbackResponse.md new file mode 100644 index 0000000..bc00526 --- /dev/null +++ b/docs/Models/Requests/TriggerFallbackResponse.md @@ -0,0 +1,10 @@ +# TriggerFallbackResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/TuneChannelRequest.md b/docs/Models/Requests/TuneChannelRequest.md new file mode 100644 index 0000000..f2ed433 --- /dev/null +++ b/docs/Models/Requests/TuneChannelRequest.md @@ -0,0 +1,20 @@ +# TuneChannelRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `DvrId` | *long* | :heavy_check_mark: | The ID of the DVR. | | +| `Channel` | *string* | :heavy_check_mark: | The channel ID to tune | 2.1 | \ No newline at end of file diff --git a/docs/Models/Requests/TuneChannelResponse.md b/docs/Models/Requests/TuneChannelResponse.md new file mode 100644 index 0000000..48a9014 --- /dev/null +++ b/docs/Models/Requests/TuneChannelResponse.md @@ -0,0 +1,12 @@ +# TuneChannelResponse + + +## 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 | +| `MediaContainerWithMetadata` | [MediaContainerWithMetadata](../../Models/Components/MediaContainerWithMetadata.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/Type.md b/docs/Models/Requests/Type.md index e353fcf..03c0f76 100644 --- a/docs/Models/Requests/Type.md +++ b/docs/Models/Requests/Type.md @@ -1,24 +1,12 @@ # Type -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - +The type of play queue to create ## Values -| Name | Value | -| ------------ | ------------ | -| `Movie` | 1 | -| `TvShow` | 2 | -| `Season` | 3 | -| `Episode` | 4 | -| `Artist` | 5 | -| `Album` | 6 | -| `Track` | 7 | -| `PhotoAlbum` | 8 | -| `Photo` | 9 | \ No newline at end of file +| Name | Value | +| ------- | ------- | +| `Audio` | audio | +| `Video` | video | +| `Photo` | photo | \ No newline at end of file diff --git a/docs/Models/Requests/UltraBlurColors.md b/docs/Models/Requests/UltraBlurColors.md index e01c9db..08b8c03 100644 --- a/docs/Models/Requests/UltraBlurColors.md +++ b/docs/Models/Requests/UltraBlurColors.md @@ -3,9 +3,9 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `TopLeft` | *string* | :heavy_check_mark: | N/A | 11333b | -| `TopRight` | *string* | :heavy_check_mark: | N/A | 0a232d | -| `BottomRight` | *string* | :heavy_check_mark: | N/A | 73958 | -| `BottomLeft` | *string* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `BottomLeft` | *string* | :heavy_minus_sign: | The color (hex) for the bottom left quadrant. | +| `BottomRight` | *string* | :heavy_minus_sign: | The color (hex) for the bottom right quadrant. | +| `TopLeft` | *string* | :heavy_minus_sign: | The color (hex) for the top left quadrant. | +| `TopRight` | *string* | :heavy_minus_sign: | The color (hex) for the top right quadrant. | \ No newline at end of file diff --git a/docs/Models/Requests/UnmatchRequest.md b/docs/Models/Requests/UnmatchRequest.md new file mode 100644 index 0000000..1352c59 --- /dev/null +++ b/docs/Models/Requests/UnmatchRequest.md @@ -0,0 +1,19 @@ +# UnmatchRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/UnmatchResponse.md b/docs/Models/Requests/UnmatchResponse.md new file mode 100644 index 0000000..b7d1f96 --- /dev/null +++ b/docs/Models/Requests/UnmatchResponse.md @@ -0,0 +1,10 @@ +# UnmatchResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/UnscrobbleRequest.md b/docs/Models/Requests/UnscrobbleRequest.md new file mode 100644 index 0000000..6b4fb77 --- /dev/null +++ b/docs/Models/Requests/UnscrobbleRequest.md @@ -0,0 +1,21 @@ +# UnscrobbleRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Identifier` | *string* | :heavy_check_mark: | The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library` | | +| `Key` | *string* | :heavy_minus_sign: | The key of the item to rate. This is the `ratingKey` found in metadata items | | +| `Uri` | *string* | :heavy_minus_sign: | The URI of the item to mark as played. See intro for description of the URIs | | \ No newline at end of file diff --git a/docs/Models/Requests/UnscrobbleResponse.md b/docs/Models/Requests/UnscrobbleResponse.md new file mode 100644 index 0000000..e034d62 --- /dev/null +++ b/docs/Models/Requests/UnscrobbleResponse.md @@ -0,0 +1,10 @@ +# UnscrobbleResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/UnshuffleRequest.md b/docs/Models/Requests/UnshuffleRequest.md new file mode 100644 index 0000000..d44142f --- /dev/null +++ b/docs/Models/Requests/UnshuffleRequest.md @@ -0,0 +1,19 @@ +# UnshuffleRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlayQueueId` | *long* | :heavy_check_mark: | The ID of the play queue. | | \ No newline at end of file diff --git a/docs/Models/Requests/UnshuffleResponse.md b/docs/Models/Requests/UnshuffleResponse.md new file mode 100644 index 0000000..65ff3ba --- /dev/null +++ b/docs/Models/Requests/UnshuffleResponse.md @@ -0,0 +1,11 @@ +# UnshuffleResponse + + +## 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 | +| `MediaContainerWithPlaylistMetadata` | [MediaContainerWithPlaylistMetadata](../../Models/Components/MediaContainerWithPlaylistMetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Requests/UpdateHubVisibilityRequest.md b/docs/Models/Requests/UpdateHubVisibilityRequest.md new file mode 100644 index 0000000..e867eaf --- /dev/null +++ b/docs/Models/Requests/UpdateHubVisibilityRequest.md @@ -0,0 +1,23 @@ +# UpdateHubVisibilityRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *long* | :heavy_check_mark: | The section ID for the hubs to change | | +| `Identifier` | *string* | :heavy_check_mark: | The identifier of the hub to change | | +| `PromotedToRecommended` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether this hub should be displayed in recommended | 1 | +| `PromotedToOwnHome` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether this hub should be displayed in admin's home | 1 | +| `PromotedToSharedHome` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Whether this hub should be displayed in shared user's home | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/UpdateHubVisibilityResponse.md b/docs/Models/Requests/UpdateHubVisibilityResponse.md new file mode 100644 index 0000000..54c80bd --- /dev/null +++ b/docs/Models/Requests/UpdateHubVisibilityResponse.md @@ -0,0 +1,10 @@ +# UpdateHubVisibilityResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/UpdateItemArtworkRequest.md b/docs/Models/Requests/UpdateItemArtworkRequest.md new file mode 100644 index 0000000..3d7e7d8 --- /dev/null +++ b/docs/Models/Requests/UpdateItemArtworkRequest.md @@ -0,0 +1,21 @@ +# UpdateItemArtworkRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Ids` | *string* | :heavy_check_mark: | N/A | | +| `Element` | [PathParamElement](../../Models/Requests/PathParamElement.md) | :heavy_check_mark: | N/A | | +| `Url` | *string* | :heavy_minus_sign: | The url of the new asset. | | \ No newline at end of file diff --git a/docs/Models/Requests/UpdateItemArtworkResponse.md b/docs/Models/Requests/UpdateItemArtworkResponse.md new file mode 100644 index 0000000..cc3024d --- /dev/null +++ b/docs/Models/Requests/UpdateItemArtworkResponse.md @@ -0,0 +1,10 @@ +# UpdateItemArtworkResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/UpdateItemsRequest.md b/docs/Models/Requests/UpdateItemsRequest.md new file mode 100644 index 0000000..e1da83b --- /dev/null +++ b/docs/Models/Requests/UpdateItemsRequest.md @@ -0,0 +1,32 @@ +# UpdateItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `SectionId` | *string* | :heavy_check_mark: | The id of the section | | +| `Type` | *string* | :heavy_minus_sign: | N/A | | +| `Filters` | *string* | :heavy_minus_sign: | The filters to apply to determine which items should be modified | | +| `FieldValue` | *string* | :heavy_minus_sign: | Set the specified field to a new value | | +| `FieldLocked` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Set the specified field to locked (or unlocked if set to 0) | 1 | +| `TitleValue` | *string* | :heavy_minus_sign: | This field is treated specially by albums or artists and may be used for implicit reparenting. | | +| `ArtistTitleValue` | *string* | :heavy_minus_sign: | Reparents set of Tracks or Albums - used with album.title.* in the case of tracks | | +| `ArtistTitleId` | *string* | :heavy_minus_sign: | Reparents set of Tracks or Albums - used with album.title.* in the case of tracks | | +| `AlbumTitleValue` | *string* | :heavy_minus_sign: | Reparents set of Tracks - Must be used in conjunction with artist.title.value or id | | +| `AlbumTitleId` | *string* | :heavy_minus_sign: | Reparents set of Tracks - Must be used in conjunction with artist.title.value or id | | +| `TagtypeIdxTagTag` | *string* | :heavy_minus_sign: | Creates tag and associates it with each item in the set. - [idx] links this and the next parameters together | | +| `TagtypeIdxTaggingObject` | *string* | :heavy_minus_sign: | Here `object` may be text/thumb/art/theme - Optionally used in conjunction with tag.tag, to update association info across the set. | | +| `TagtypeTagTag` | *string* | :heavy_minus_sign: | Remove comma separated tags from the set of items | | +| `TagtypeTag` | *string* | :heavy_minus_sign: | Remove associations of this type (e.g. genre) from the set of items | | \ No newline at end of file diff --git a/docs/Models/Requests/UpdateItemsResponse.md b/docs/Models/Requests/UpdateItemsResponse.md new file mode 100644 index 0000000..cbd5777 --- /dev/null +++ b/docs/Models/Requests/UpdateItemsResponse.md @@ -0,0 +1,10 @@ +# UpdateItemsResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/UpdatePlayProgressRequest.md b/docs/Models/Requests/UpdatePlayProgressRequest.md deleted file mode 100644 index ae08431..0000000 --- a/docs/Models/Requests/UpdatePlayProgressRequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdatePlayProgressRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `Key` | *string* | :heavy_check_mark: | the media key | | -| `Time` | *double* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. | 90000 | -| `State` | *string* | :heavy_check_mark: | The playback state of the media item. | played | \ No newline at end of file diff --git a/docs/Models/Requests/UpdatePlayProgressResponse.md b/docs/Models/Requests/UpdatePlayProgressResponse.md deleted file mode 100644 index 5d469cc..0000000 --- a/docs/Models/Requests/UpdatePlayProgressResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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 | \ No newline at end of file diff --git a/docs/Models/Requests/UpdatePlaylistRequest.md b/docs/Models/Requests/UpdatePlaylistRequest.md index 9fb8b40..d537793 100644 --- a/docs/Models/Requests/UpdatePlaylistRequest.md +++ b/docs/Models/Requests/UpdatePlaylistRequest.md @@ -3,8 +3,17 @@ ## Fields -| Field | Type | Required | Description | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | -| `Title` | *string* | :heavy_minus_sign: | name of the playlist | -| `Summary` | *string* | :heavy_minus_sign: | summary description of the playlist | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `PlaylistId` | *long* | :heavy_check_mark: | The ID of the playlist | | \ No newline at end of file diff --git a/docs/Models/Requests/UploadPlaylistRequest.md b/docs/Models/Requests/UploadPlaylistRequest.md index bf42042..f1658bb 100644 --- a/docs/Models/Requests/UploadPlaylistRequest.md +++ b/docs/Models/Requests/UploadPlaylistRequest.md @@ -3,8 +3,18 @@ ## 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` | [QueryParamForce](../../Models/Requests/QueryParamForce.md) | :heavy_check_mark: | Force overwriting of duplicate playlists.
By default, a playlist file uploaded with the same path will overwrite the existing playlist.
The `force` argument is used to disable overwriting.
If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
| | -| `SectionID` | *long* | :heavy_check_mark: | Possibly the section ID to upload the playlist to, we are not certain. | 1 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Path` | *string* | :heavy_minus_sign: | Absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server. If the `path` argument is a directory, that path will be scanned for playlist files to be processed. Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it. The GUID of each playlist is based on the filename. If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it. The GUID of each playlist is based on the filename. | /home/barkley/playlist.m3u | +| `Force` | [BoolInt](../../Models/Components/BoolInt.md) | :heavy_minus_sign: | Force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist. The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded. | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/Upscale.md b/docs/Models/Requests/Upscale.md deleted file mode 100644 index d87109c..0000000 --- a/docs/Models/Requests/Upscale.md +++ /dev/null @@ -1,11 +0,0 @@ -# Upscale - -allow images to be resized beyond native dimensions. - - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/User.md b/docs/Models/Requests/User.md deleted file mode 100644 index b63878d..0000000 --- a/docs/Models/Requests/User.md +++ /dev/null @@ -1,27 +0,0 @@ -# User - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | User's unique ID. | 22526914 | -| `Title` | *string* | :heavy_check_mark: | User's display name. | Plex User | -| `Username` | *string* | :heavy_check_mark: | User's username. | zgfuc7krcqfimrmb9lsl5j | -| `Email` | *string* | :heavy_check_mark: | User's email address. | zgfuc7krcqfimrmb9lsl5j@protonmail.com | -| `RecommendationsPlaylistId` | *string* | :heavy_minus_sign: | ID of the user's recommendation playlist. | | -| `Thumb` | *string* | :heavy_check_mark: | URL to the user's avatar image. | https://plex.tv/users/3346028014e93acd/avatar?c=1731605021 | -| `Protected` | [Protected](../../Models/Requests/Protected.md) | :heavy_minus_sign: | N/A | 1 | -| `Home` | [Home](../../Models/Requests/Home.md) | :heavy_minus_sign: | N/A | 1 | -| `AllowTuners` | [AllowTuners](../../Models/Requests/AllowTuners.md) | :heavy_minus_sign: | N/A | 1 | -| `AllowSync` | [AllowSync](../../Models/Requests/AllowSync.md) | :heavy_minus_sign: | N/A | 1 | -| `AllowCameraUpload` | [AllowCameraUpload](../../Models/Requests/AllowCameraUpload.md) | :heavy_minus_sign: | N/A | 1 | -| `AllowChannels` | [AllowChannels](../../Models/Requests/AllowChannels.md) | :heavy_minus_sign: | N/A | 1 | -| `AllowSubtitleAdmin` | [AllowSubtitleAdmin](../../Models/Requests/AllowSubtitleAdmin.md) | :heavy_minus_sign: | N/A | 1 | -| `FilterAll` | *string* | :heavy_minus_sign: | Filters applied for all content. | | -| `FilterMovies` | *string* | :heavy_minus_sign: | Filters applied for movies. | | -| `FilterMusic` | *string* | :heavy_minus_sign: | Filters applied for music. | | -| `FilterPhotos` | *string* | :heavy_minus_sign: | Filters applied for photos. | | -| `FilterTelevision` | *string* | :heavy_minus_sign: | Filters applied for television. | | -| `Restricted` | [Restricted](../../Models/Requests/Restricted.md) | :heavy_minus_sign: | N/A | 1 | -| `Server` | List<[GetUsersServer](../../Models/Requests/GetUsersServer.md)> | :heavy_check_mark: | List of servers owned by the user. | | \ No newline at end of file diff --git a/docs/Models/Requests/UserProfile.md b/docs/Models/Requests/UserProfile.md deleted file mode 100644 index d5d4296..0000000 --- a/docs/Models/Requests/UserProfile.md +++ /dev/null @@ -1,15 +0,0 @@ -# UserProfile - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `AutoSelectAudio` | *bool* | :heavy_minus_sign: | If the account has automatically select audio and subtitle tracks enabled | true | -| `DefaultAudioLanguage` | *string* | :heavy_check_mark: | The preferred audio language for the account | ja | -| `DefaultSubtitleLanguage` | *string* | :heavy_check_mark: | The preferred subtitle language for the account | en | -| `AutoSelectSubtitle` | [AutoSelectSubtitle](../../Models/Requests/AutoSelectSubtitle.md) | :heavy_minus_sign: | N/A | 1 | -| `DefaultSubtitleAccessibility` | [DefaultSubtitleAccessibility](../../Models/Requests/DefaultSubtitleAccessibility.md) | :heavy_minus_sign: | N/A | 1 | -| `DefaultSubtitleForced` | [DefaultSubtitleForced](../../Models/Requests/DefaultSubtitleForced.md) | :heavy_minus_sign: | N/A | 1 | -| `WatchedIndicator` | [WatchedIndicator](../../Models/Requests/WatchedIndicator.md) | :heavy_minus_sign: | N/A | 1 | -| `MediaReviewsVisibility` | [MediaReviewsVisibility](../../Models/Requests/MediaReviewsVisibility.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/VoiceSearchHubsMediaContainer.md b/docs/Models/Requests/VoiceSearchHubsMediaContainer.md new file mode 100644 index 0000000..924d3eb --- /dev/null +++ b/docs/Models/Requests/VoiceSearchHubsMediaContainer.md @@ -0,0 +1,17 @@ +# VoiceSearchHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `Identifier` | *string* | :heavy_minus_sign: | N/A | +| `Offset` | *long* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `Size` | *long* | :heavy_minus_sign: | N/A | +| `TotalSize` | *long* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `Hub` | List<[Models.Components.Hub](../../Models/Components/Hub.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/VoiceSearchHubsRequest.md b/docs/Models/Requests/VoiceSearchHubsRequest.md new file mode 100644 index 0000000..59f2629 --- /dev/null +++ b/docs/Models/Requests/VoiceSearchHubsRequest.md @@ -0,0 +1,21 @@ +# VoiceSearchHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Query` | *string* | :heavy_check_mark: | The query term | | +| `Type` | *long* | :heavy_minus_sign: | The metadata type to filter by | | +| `Limit` | *long* | :heavy_minus_sign: | The number of items to return per hub. 3 if not specified | | \ No newline at end of file diff --git a/docs/Models/Requests/VoiceSearchHubsResponse.md b/docs/Models/Requests/VoiceSearchHubsResponse.md new file mode 100644 index 0000000..60e7fa4 --- /dev/null +++ b/docs/Models/Requests/VoiceSearchHubsResponse.md @@ -0,0 +1,12 @@ +# VoiceSearchHubsResponse + + +## 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` | [VoiceSearchHubsResponseBody](../../Models/Requests/VoiceSearchHubsResponseBody.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/VoiceSearchHubsResponseBody.md b/docs/Models/Requests/VoiceSearchHubsResponseBody.md new file mode 100644 index 0000000..09bbf71 --- /dev/null +++ b/docs/Models/Requests/VoiceSearchHubsResponseBody.md @@ -0,0 +1,10 @@ +# VoiceSearchHubsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `MediaContainer` | [VoiceSearchHubsMediaContainer](../../Models/Requests/VoiceSearchHubsMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/WatchedIndicator.md b/docs/Models/Requests/WatchedIndicator.md deleted file mode 100644 index 5a931a7..0000000 --- a/docs/Models/Requests/WatchedIndicator.md +++ /dev/null @@ -1,11 +0,0 @@ -# WatchedIndicator - -Whether or not media watched indicators are enabled (little orange dot on media) - - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/WriteLogResponse.md b/docs/Models/Requests/WriteLogResponse.md new file mode 100644 index 0000000..18fed4a --- /dev/null +++ b/docs/Models/Requests/WriteLogResponse.md @@ -0,0 +1,10 @@ +# WriteLogResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/WriteMessageRequest.md b/docs/Models/Requests/WriteMessageRequest.md new file mode 100644 index 0000000..b6699b6 --- /dev/null +++ b/docs/Models/Requests/WriteMessageRequest.md @@ -0,0 +1,21 @@ +# WriteMessageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | +| `Accepts` | [Accepts](../../Models/Components/Accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `ClientIdentifier` | *string* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `Product` | *string* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `Version` | *string* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `Platform` | *string* | :heavy_minus_sign: | The platform of the client | Roku | +| `PlatformVersion` | *string* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `Device` | *string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `Model` | *string* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `DeviceVendor` | *string* | :heavy_minus_sign: | The device vendor | Roku | +| `DeviceName` | *string* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `Marketplace` | *string* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `Level` | [Level](../../Models/Requests/Level.md) | :heavy_minus_sign: | An integer log level to write to the PMS log with.
- 0: Error
- 1: Warning
- 2: Info
- 3: Debug
- 4: Verbose
| | +| `Message` | *string* | :heavy_minus_sign: | The text of the message to write to the log. | | +| `Source` | *string* | :heavy_minus_sign: | A string indicating the source of the message. | | \ No newline at end of file diff --git a/docs/Models/Requests/WriteMessageResponse.md b/docs/Models/Requests/WriteMessageResponse.md new file mode 100644 index 0000000..1fcfa5a --- /dev/null +++ b/docs/Models/Requests/WriteMessageResponse.md @@ -0,0 +1,10 @@ +# WriteMessageResponse + + +## 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 | \ No newline at end of file diff --git a/docs/Models/Requests/Writer.md b/docs/Models/Requests/Writer.md deleted file mode 100644 index 50e40c3..0000000 --- a/docs/Models/Requests/Writer.md +++ /dev/null @@ -1,12 +0,0 @@ -# Writer - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | -| `Filter` | *string* | :heavy_check_mark: | The filter string used to query this writer. | writer=126522 | -| `Tag` | *string* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | -| `TagKey` | *string* | :heavy_minus_sign: | A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification. | 5d77683d85719b001f3a535e | -| `Thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the writer. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/sdks/activities/README.md b/docs/sdks/activities/README.md index 1583e7f..be95d8e 100644 --- a/docs/sdks/activities/README.md +++ b/docs/sdks/activities/README.md @@ -3,82 +3,94 @@ ## Overview -Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints. +Activities provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints. + Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity. -Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details: -- They can contain a `progress` (from 0 to 100) marking the percent completion of the activity. -- They must contain an `type` which is used by clients to distinguish the specific activity. -- They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.) -- The may contain a `Response` object which attributes which represent the result of the asynchronous operation. + +Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. ### Available Operations -* [GetServerActivities](#getserveractivities) - Get Server Activities -* [CancelServerActivities](#cancelserveractivities) - Cancel Server Activities +* [ListActivities](#listactivities) - Get all activities +* [CancelActivity](#cancelactivity) - Cancel a running activity -## GetServerActivities +## ListActivities -Get Server Activities +List all activities on the server. Admins can see all activities but other users can only see their own ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI(token: ""); -var res = await sdk.Activities.GetServerActivitiesAsync(); +var res = await sdk.Activities.ListActivitiesAsync(); // handle response ``` ### Response -**[GetServerActivitiesResponse](../../Models/Requests/GetServerActivitiesResponse.md)** +**[ListActivitiesResponse](../../Models/Requests/ListActivitiesResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerActivitiesBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerActivitiesUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## CancelServerActivities +## CancelActivity -Cancel Server Activities +Cancel a running activity. Admins can cancel all activities but other users can only cancel their own ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); -var res = await sdk.Activities.CancelServerActivitiesAsync(activityUUID: "25b71ed5-0f9d-461c-baa7-d404e9e10d3e"); +CancelActivityRequest req = new CancelActivityRequest() { + ActivityId = "d6199ba1-fb5e-4cae-bf17-1a5369c1cf1e", +}; + +var res = await sdk.Activities.CancelActivityAsync(req); // handle response ``` ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | -| `ActivityUUID` | *string* | :heavy_check_mark: | The UUID of the activity to cancel. | 25b71ed5-0f9d-461c-baa7-d404e9e10d3e | +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [CancelActivityRequest](../../Models/Requests/CancelActivityRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response -**[CancelServerActivitiesResponse](../../Models/Requests/CancelServerActivitiesResponse.md)** +**[CancelActivityResponse](../../Models/Requests/CancelActivityResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.CancelServerActivitiesBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.CancelServerActivitiesUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/authentication/README.md b/docs/sdks/authentication/README.md deleted file mode 100644 index 419eac6..0000000 --- a/docs/sdks/authentication/README.md +++ /dev/null @@ -1,180 +0,0 @@ -# Authentication -(*Authentication*) - -## Overview - -API Calls regarding authentication for Plex Media Server - - -### Available Operations - -* [GetTransientToken](#gettransienttoken) - Get a Transient Token -* [GetSourceConnectionInformation](#getsourceconnectioninformation) - Get Source Connection Information -* [GetTokenDetails](#gettokendetails) - Get Token Details -* [PostUsersSignInData](#postuserssignindata) - Get User Sign In Data - -## 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 LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Authentication.GetTransientTokenAsync( - type: GetTransientTokenQueryParamType.Delegation, - scope: Scope.All -); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| `Type` | [GetTransientTokenQueryParamType](../../Models/Requests/GetTransientTokenQueryParamType.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)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetTransientTokenBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetTransientTokenUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## 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 LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Authentication.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)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetSourceConnectionInformationBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetSourceConnectionInformationUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetTokenDetails - -Get the User data from the provided X-Plex-Token - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Authentication.GetTokenDetailsAsync(); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | -| `serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[GetTokenDetailsResponse](../../Models/Requests/GetTokenDetailsResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetTokenDetailsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetTokenDetailsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## PostUsersSignInData - -Sign in user with username and password and return user data with Plex authentication token - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(); - -PostUsersSignInDataRequest req = new PostUsersSignInDataRequest() { - ClientID = "3381b62b-9ab7-4e37-827b-203e9809eb58", - ClientName = "Plex for Roku", - DeviceNickname = "Roku 3", - ClientVersion = "2.4.1", - Platform = "Roku", - RequestBody = new PostUsersSignInDataRequestBody() { - Login = "username@email.com", - Password = "password123", - VerificationCode = "123456", - }, -}; - -var res = await sdk.Authentication.PostUsersSignInDataAsync(req); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `request` | [PostUsersSignInDataRequest](../../Models/Requests/PostUsersSignInDataRequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[PostUsersSignInDataResponse](../../Models/Requests/PostUsersSignInDataResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.PostUsersSignInDataBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.PostUsersSignInDataUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/butler/README.md b/docs/sdks/butler/README.md index 8aa1ec3..7c0352c 100644 --- a/docs/sdks/butler/README.md +++ b/docs/sdks/butler/README.md @@ -3,180 +3,149 @@ ## Overview -Butler is the task manager of the Plex Media Server Ecosystem. - +The butler is responsible for running periodic tasks. Some tasks run daily, others every few days, and some weekly. These includes database maintenance, metadata updating, thumbnail generation, media analysis, and other tasks. ### Available Operations -* [GetButlerTasks](#getbutlertasks) - Get Butler tasks -* [StartAllTasks](#startalltasks) - Start all Butler tasks -* [StopAllTasks](#stopalltasks) - Stop all Butler tasks -* [StartTask](#starttask) - Start a single Butler task +* [StopTasks](#stoptasks) - Stop all Butler tasks +* [GetTasks](#gettasks) - Get all Butler tasks +* [StartTasks](#starttasks) - Start all Butler tasks * [StopTask](#stoptask) - Stop a single Butler task +* [StartTask](#starttask) - Start a single Butler task -## GetButlerTasks - -Returns a list of butler tasks - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Butler.GetButlerTasksAsync(); - -// handle response -``` - -### Response - -**[GetButlerTasksResponse](../../Models/Requests/GetButlerTasksResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetButlerTasksBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetButlerTasksUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## 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 LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Butler.StartAllTasksAsync(); - -// handle response -``` - -### Response - -**[StartAllTasksResponse](../../Models/Requests/StartAllTasksResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.StartAllTasksBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.StartAllTasksUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## StopAllTasks +## StopTasks This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue. - ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI(token: ""); -var res = await sdk.Butler.StopAllTasksAsync(); +var res = await sdk.Butler.StopTasksAsync(); // handle response ``` ### Response -**[StopAllTasksResponse](../../Models/Requests/StopAllTasksResponse.md)** +**[StopTasksResponse](../../Models/Requests/StopTasksResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| LukeHagar.PlexAPI.SDK.Models.Errors.StopAllTasksBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.StopAllTasksUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## StartTask +## GetTasks -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. +Get the list of butler tasks and their scheduling ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI(token: ""); -var res = await sdk.Butler.StartTaskAsync(taskName: TaskName.RefreshPeriodicMetadata); +var res = await sdk.Butler.GetTasksAsync(); // 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)** +**[GetTasksResponse](../../Models/Requests/GetTasksResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.StartTaskBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.StartTaskUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## StartTasks + +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 LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Butler.StartTasksAsync(); + +// handle response +``` + +### Response + +**[StartTasksResponse](../../Models/Requests/StartTasksResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | ## 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. +This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); -var res = await sdk.Butler.StopTaskAsync(taskName: PathParamTaskName.CleanOldCacheFiles); +StopTaskRequest req = new StopTaskRequest() { + Task = Task.CleanOldBundles, +}; + +var res = await sdk.Butler.StopTaskAsync(req); // handle response ``` ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | -| `TaskName` | [PathParamTaskName](../../Models/Requests/PathParamTaskName.md) | :heavy_check_mark: | The name of the task to be started. | +| Parameter | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `request` | [StopTaskRequest](../../Models/Requests/StopTaskRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response @@ -184,8 +153,59 @@ var res = await sdk.Butler.StopTaskAsync(taskName: PathParamTaskName.CleanOldCac ### Errors -| Error Type | Status Code | Content Type | -| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.StopTaskBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.StopTaskUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## StartTask + +This endpoint will attempt to start a specific Butler task by name. + + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +StartTaskRequest req = new StartTaskRequest() { + Task = PathParamTask.RefreshLocalMedia, +}; + +var res = await sdk.Butler.StartTaskAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [StartTaskRequest](../../Models/Requests/StartTaskRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[StartTaskResponse](../../Models/Requests/StartTaskResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/collections/README.md b/docs/sdks/collections/README.md new file mode 100644 index 0000000..731d1f0 --- /dev/null +++ b/docs/sdks/collections/README.md @@ -0,0 +1,62 @@ +# Collections +(*Collections*) + +## Overview + +API Operations against the Collections + +### Available Operations + +* [CreateCollection](#createcollection) - Create collection + +## CreateCollection + +Create a collection in the library + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +CreateCollectionRequest req = new CreateCollectionRequest() { + SectionId = "", +}; + +var res = await sdk.Collections.CreateCollectionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [CreateCollectionRequest](../../Models/Requests/CreateCollectionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[CreateCollectionResponse](../../Models/Requests/CreateCollectionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/content/README.md b/docs/sdks/content/README.md new file mode 100644 index 0000000..6b70eca --- /dev/null +++ b/docs/sdks/content/README.md @@ -0,0 +1,712 @@ +# Content +(*Content*) + +## Overview + +The actual content of the media provider + +### Available Operations + +* [GetCollectionItems](#getcollectionitems) - Get items in a collection +* [GetMetadataItem](#getmetadataitem) - Get a metadata item +* [GetAlbums](#getalbums) - Set section albums +* [ListContent](#listcontent) - Get items in the section +* [GetAllLeaves](#getallleaves) - Set section leaves +* [GetArts](#getarts) - Set section artwork +* [GetCategories](#getcategories) - Set section categories +* [GetCluster](#getcluster) - Set section clusters +* [GetSonicPath](#getsonicpath) - Similar tracks to transition from one to another +* [GetFolders](#getfolders) - Get all folder locations +* [ListMoments](#listmoments) - Set section moments +* [GetSonicallySimilar](#getsonicallysimilar) - The nearest audio tracks +* [GetCollectionImage](#getcollectionimage) - Get a collection's image + +## GetCollectionItems + +Get items in a collection. Note if this collection contains more than 100 items, paging must be used. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetCollectionItemsRequest req = new GetCollectionItemsRequest() { + CollectionId = 314585, +}; + +var res = await sdk.Content.GetCollectionItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [GetCollectionItemsRequest](../../Models/Requests/GetCollectionItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetCollectionItemsResponse](../../Models/Requests/GetCollectionItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetMetadataItem + +Get one or more metadata items. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetMetadataItemRequest req = new GetMetadataItemRequest() { + Ids = new List() {}, + AsyncCheckFiles = BoolInt.One, + AsyncRefreshLocalMediaAgent = BoolInt.One, + AsyncRefreshAnalysis = BoolInt.One, + CheckFiles = BoolInt.One, + SkipRefresh = BoolInt.One, + CheckFileAvailability = BoolInt.One, + AsyncAugmentMetadata = BoolInt.One, + AugmentCount = BoolInt.One, +}; + +var res = await sdk.Content.GetMetadataItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [GetMetadataItemRequest](../../Models/Requests/GetMetadataItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetMetadataItemResponse](../../Models/Requests/GetMetadataItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetAlbums + +Get all albums in a music section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetAlbumsRequest req = new GetAlbumsRequest() { + SectionId = 817133, +}; + +var res = await sdk.Content.GetAlbumsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [GetAlbumsRequest](../../Models/Requests/GetAlbumsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetAlbumsResponse](../../Models/Requests/GetAlbumsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ListContent + +Get the items in a section, potentially filtering them + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ListContentRequest req = new ListContentRequest() { + SectionId = "", +}; + +var res = await sdk.Content.ListContentAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [ListContentRequest](../../Models/Requests/ListContentRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ListContentResponse](../../Models/Requests/ListContentResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetAllLeaves + +Get all leaves in a section (such as episodes in a show section) + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetAllLeavesRequest req = new GetAllLeavesRequest() { + SectionId = 633197, +}; + +var res = await sdk.Content.GetAllLeavesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [GetAllLeavesRequest](../../Models/Requests/GetAllLeavesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetAllLeavesResponse](../../Models/Requests/GetAllLeavesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetArts + +Get artwork for a library section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetArtsRequest req = new GetArtsRequest() { + SectionId = 859200, +}; + +var res = await sdk.Content.GetArtsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `request` | [GetArtsRequest](../../Models/Requests/GetArtsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetArtsResponse](../../Models/Requests/GetArtsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetCategories + +Get categories in a library section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetCategoriesRequest req = new GetCategoriesRequest() { + SectionId = 21841, +}; + +var res = await sdk.Content.GetCategoriesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `request` | [GetCategoriesRequest](../../Models/Requests/GetCategoriesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetCategoriesResponse](../../Models/Requests/GetCategoriesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetCluster + +Get clusters in a library section (typically for photos) + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetClusterRequest req = new GetClusterRequest() { + SectionId = 138560, +}; + +var res = await sdk.Content.GetClusterAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `request` | [GetClusterRequest](../../Models/Requests/GetClusterRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetClusterResponse](../../Models/Requests/GetClusterResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetSonicPath + +Get a list of audio tracks starting at one and ending at another which are similar across the path + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetSonicPathRequest req = new GetSonicPathRequest() { + SectionId = 914549, + StartID = 629990, + EndID = 687740, +}; + +var res = await sdk.Content.GetSonicPathAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [GetSonicPathRequest](../../Models/Requests/GetSonicPathRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetSonicPathResponse](../../Models/Requests/GetSonicPathResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetFolders + +Get all folder locations of the media in a section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetFoldersRequest req = new GetFoldersRequest() { + SectionId = 892532, +}; + +var res = await sdk.Content.GetFoldersAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `request` | [GetFoldersRequest](../../Models/Requests/GetFoldersRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetFoldersResponse](../../Models/Requests/GetFoldersResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ListMoments + +Get moments in a library section (typically for photos) + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ListMomentsRequest req = new ListMomentsRequest() { + SectionId = 403239, +}; + +var res = await sdk.Content.ListMomentsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [ListMomentsRequest](../../Models/Requests/ListMomentsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ListMomentsResponse](../../Models/Requests/ListMomentsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetSonicallySimilar + +Get the nearest audio tracks to a particular analysis + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetSonicallySimilarRequest req = new GetSonicallySimilarRequest() { + SectionId = 525956, + Values = new List() {}, +}; + +var res = await sdk.Content.GetSonicallySimilarAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [GetSonicallySimilarRequest](../../Models/Requests/GetSonicallySimilarRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetSonicallySimilarResponse](../../Models/Requests/GetSonicallySimilarResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetCollectionImage + +Get an image for the collection based on the items within + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetCollectionImageRequest req = new GetCollectionImageRequest() { + CollectionId = 474227, + UpdatedAt = 759379, +}; + +var res = await sdk.Content.GetCollectionImageAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [GetCollectionImageRequest](../../Models/Requests/GetCollectionImageRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetCollectionImageResponse](../../Models/Requests/GetCollectionImageResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/devices/README.md b/docs/sdks/devices/README.md new file mode 100644 index 0000000..d4db2ca --- /dev/null +++ b/docs/sdks/devices/README.md @@ -0,0 +1,706 @@ +# Devices +(*Devices*) + +## Overview + +Media grabbers provide ways for media to be obtained for a given protocol. The simplest ones are `stream` and `download`. More complex grabbers can have associated devices + +Network tuners can present themselves on the network using the Simple Service Discovery Protocol and Plex Media Server will discover them. The following XML is an example of the data returned from SSDP. The `deviceType`, `serviceType`, and `serviceId` values must remain as they are in the example in order for PMS to properly discover the device. Other less-obvious fields are described in the parameters section below. + +Example SSDP output +``` + + + 1 + 0 + + + urn:plex-tv:device:Media:1 + Turing Hopper 3000 + Plex, Inc. + https://plex.tv/ + Turing Hopper 3000 Media Grabber + Plex Media Grabber + 1 + https://plex.tv + uuid:42fde8e4-93b6-41e5-8a63-12d848655811 + + + http://10.0.0.5:8088 + urn:plex-tv:service:MediaGrabber:1 + urn:plex-tv:serviceId:MediaGrabber + + + + +``` + + - UDN: (string) A UUID for the device. This should be unique across models of a device at minimum. + - URLBase: (string) The base HTTP URL for the device from which all of the other endpoints are hosted. + + +### Available Operations + +* [GetAvailableGrabbers](#getavailablegrabbers) - Get available grabbers +* [ListDevices](#listdevices) - Get all devices +* [AddDevice](#adddevice) - Add a device +* [DiscoverDevices](#discoverdevices) - Tell grabbers to discover devices +* [RemoveDevice](#removedevice) - Remove a device +* [GetDeviceDetails](#getdevicedetails) - Get device details +* [ModifyDevice](#modifydevice) - Enable or disable a device +* [SetChannelmap](#setchannelmap) - Set a device's channel mapping +* [GetDevicesChannels](#getdeviceschannels) - Get a device's channels +* [SetDevicePreferences](#setdevicepreferences) - Set device preferences +* [StopScan](#stopscan) - Tell a device to stop scanning for channels +* [Scan](#scan) - Tell a device to scan for channels +* [GetThumb](#getthumb) - Get device thumb + +## GetAvailableGrabbers + +Get available grabbers visible to the server + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetAvailableGrabbersRequest req = new GetAvailableGrabbersRequest() { + Protocol = "livetv", +}; + +var res = await sdk.Devices.GetAvailableGrabbersAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `request` | [GetAvailableGrabbersRequest](../../Models/Requests/GetAvailableGrabbersRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetAvailableGrabbersResponse](../../Models/Requests/GetAvailableGrabbersResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ListDevices + +Get the list of all devices present + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Devices.ListDevicesAsync(); + +// handle response +``` + +### Response + +**[ListDevicesResponse](../../Models/Requests/ListDevicesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## AddDevice + +This endpoint adds a device to an existing grabber. The device is identified, and added to the correct grabber. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +AddDeviceRequest req = new AddDeviceRequest() { + Uri = "http://10.0.0.5", +}; + +var res = await sdk.Devices.AddDeviceAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [AddDeviceRequest](../../Models/Requests/AddDeviceRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[AddDeviceResponse](../../Models/Requests/AddDeviceResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DiscoverDevices + +Tell grabbers to discover devices + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Devices.DiscoverDevicesAsync(); + +// handle response +``` + +### Response + +**[DiscoverDevicesResponse](../../Models/Requests/DiscoverDevicesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## RemoveDevice + +Remove a devices by its id along with its channel mappings + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +RemoveDeviceRequest req = new RemoveDeviceRequest() { + DeviceId = 685908, +}; + +var res = await sdk.Devices.RemoveDeviceAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [RemoveDeviceRequest](../../Models/Requests/RemoveDeviceRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[RemoveDeviceResponse](../../Models/Requests/RemoveDeviceResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetDeviceDetails + +Get a device's details by its id + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetDeviceDetailsRequest req = new GetDeviceDetailsRequest() { + DeviceId = 170949, +}; + +var res = await sdk.Devices.GetDeviceDetailsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [GetDeviceDetailsRequest](../../Models/Requests/GetDeviceDetailsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetDeviceDetailsResponse](../../Models/Requests/GetDeviceDetailsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ModifyDevice + +Enable or disable a device by its id + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ModifyDeviceRequest req = new ModifyDeviceRequest() { + DeviceId = 879135, + Enabled = BoolInt.One, +}; + +var res = await sdk.Devices.ModifyDeviceAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [ModifyDeviceRequest](../../Models/Requests/ModifyDeviceRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ModifyDeviceResponse](../../Models/Requests/ModifyDeviceResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## SetChannelmap + +Set a device's channel mapping + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +SetChannelmapRequest req = new SetChannelmapRequest() { + DeviceId = 937661, + ChannelMapping = new LukeHagar.PlexAPI.SDK.Models.Requests.ChannelMapping() {}, + ChannelMappingByKey = new ChannelMappingByKey() {}, + ChannelsEnabled = new List() { + "4", + "6", + ".", + "1", + ",", + "4", + "4", + ".", + "1", + ",", + "4", + "5", + ".", + "1", + }, +}; + +var res = await sdk.Devices.SetChannelmapAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `request` | [SetChannelmapRequest](../../Models/Requests/SetChannelmapRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SetChannelmapResponse](../../Models/Requests/SetChannelmapResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetDevicesChannels + +Get a device's channels by its id + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetDevicesChannelsRequest req = new GetDevicesChannelsRequest() { + DeviceId = 517209, +}; + +var res = await sdk.Devices.GetDevicesChannelsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [GetDevicesChannelsRequest](../../Models/Requests/GetDevicesChannelsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetDevicesChannelsResponse](../../Models/Requests/GetDevicesChannelsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## SetDevicePreferences + +Set device preferences by its id + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +SetDevicePreferencesRequest req = new SetDevicePreferencesRequest() { + DeviceId = 420973, +}; + +var res = await sdk.Devices.SetDevicePreferencesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `request` | [SetDevicePreferencesRequest](../../Models/Requests/SetDevicePreferencesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SetDevicePreferencesResponse](../../Models/Requests/SetDevicePreferencesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## StopScan + +Tell a device to stop scanning for channels + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +StopScanRequest req = new StopScanRequest() { + DeviceId = 576494, +}; + +var res = await sdk.Devices.StopScanAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `request` | [StopScanRequest](../../Models/Requests/StopScanRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[StopScanResponse](../../Models/Requests/StopScanResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## Scan + +Tell a device to scan for channels + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ScanRequest req = new ScanRequest() { + DeviceId = 57391, + Source = "Cable", +}; + +var res = await sdk.Devices.ScanAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `request` | [ScanRequest](../../Models/Requests/ScanRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ScanResponse](../../Models/Requests/ScanResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetThumb + +Get a device's thumb for display to the user + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetThumbRequest req = new GetThumbRequest() { + DeviceId = 960617, + VersionPathParameter = 1025, +}; + +var res = await sdk.Devices.GetThumbAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `request` | [GetThumbRequest](../../Models/Requests/GetThumbRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetThumbResponse](../../Models/Requests/GetThumbResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/downloadqueue/README.md b/docs/sdks/downloadqueue/README.md new file mode 100644 index 0000000..248a1f1 --- /dev/null +++ b/docs/sdks/downloadqueue/README.md @@ -0,0 +1,536 @@ +# DownloadQueue +(*DownloadQueue*) + +## Overview + +API Operations against the Download Queue + +### Available Operations + +* [CreateDownloadQueue](#createdownloadqueue) - Create download queue +* [GetDownloadQueue](#getdownloadqueue) - Get a download queue +* [AddDownloadQueueItems](#adddownloadqueueitems) - Add to download queue +* [ListDownloadQueueItems](#listdownloadqueueitems) - Get download queue items +* [GetItemDecision](#getitemdecision) - Grab download queue item decision +* [GetDownloadQueueMedia](#getdownloadqueuemedia) - Grab download queue media +* [RemoveDownloadQueueItems](#removedownloadqueueitems) - Delete download queue items +* [GetDownloadQueueItems](#getdownloadqueueitems) - Get download queue items +* [RestartProcessingDownloadQueueItems](#restartprocessingdownloadqueueitems) - Restart processing of items from the decision + +## CreateDownloadQueue + +Available: 0.2.0 + +Creates a download queue for this client if one doesn't exist, or returns the existing queue for this client and user. + + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.DownloadQueue.CreateDownloadQueueAsync(); + +// handle response +``` + +### Response + +**[CreateDownloadQueueResponse](../../Models/Requests/CreateDownloadQueueResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetDownloadQueue + +Available: 0.2.0 + +Get a download queue by its id + + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetDownloadQueueRequest req = new GetDownloadQueueRequest() { + QueueId = 922802, +}; + +var res = await sdk.DownloadQueue.GetDownloadQueueAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [GetDownloadQueueRequest](../../Models/Requests/GetDownloadQueueRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetDownloadQueueResponse](../../Models/Requests/GetDownloadQueueResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## AddDownloadQueueItems + +Available: 0.2.0 + +Add items to the download queue + + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +AddDownloadQueueItemsRequest req = new AddDownloadQueueItemsRequest() { + QueueId = 984925, + Keys = new List() { + "/library/metadata/3", + "/library/metadata/6", + }, + AdvancedSubtitles = LukeHagar.PlexAPI.SDK.Models.Components.AdvancedSubtitles.Burn, + AudioBoost = 50, + AudioChannelCount = 5, + AutoAdjustQuality = BoolInt.One, + AutoAdjustSubtitle = BoolInt.One, + DirectPlay = BoolInt.One, + DirectStream = BoolInt.One, + DirectStreamAudio = BoolInt.One, + DisableResolutionRotation = BoolInt.One, + HasMDE = BoolInt.One, + Location = LukeHagar.PlexAPI.SDK.Models.Components.Location.Wan, + MediaBufferSize = 102400, + MediaIndex = 0, + MusicBitrate = 5000, + Offset = 90.5D, + PartIndex = 0, + Path = "/library/metadata/151671", + PeakBitrate = 12000, + PhotoResolution = "1080x1080", + Protocol = LukeHagar.PlexAPI.SDK.Models.Components.Protocol.Dash, + SecondsPerSegment = 5, + SubtitleSize = 50, + VideoBitrate = 12000, + VideoQuality = 50, + VideoResolution = "1080x1080", +}; + +var res = await sdk.DownloadQueue.AddDownloadQueueItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `request` | [AddDownloadQueueItemsRequest](../../Models/Requests/AddDownloadQueueItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[AddDownloadQueueItemsResponse](../../Models/Requests/AddDownloadQueueItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ListDownloadQueueItems + +Available: 0.2.0 + +Get items from a download queue + + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ListDownloadQueueItemsRequest req = new ListDownloadQueueItemsRequest() { + QueueId = 524138, +}; + +var res = await sdk.DownloadQueue.ListDownloadQueueItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `request` | [ListDownloadQueueItemsRequest](../../Models/Requests/ListDownloadQueueItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ListDownloadQueueItemsResponse](../../Models/Requests/ListDownloadQueueItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetItemDecision + +Available: 0.2.0 + +Grab the decision for a download queue item + + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetItemDecisionRequest req = new GetItemDecisionRequest() { + QueueId = 231605, + ItemId = 32, +}; + +var res = await sdk.DownloadQueue.GetItemDecisionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [GetItemDecisionRequest](../../Models/Requests/GetItemDecisionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetItemDecisionResponse](../../Models/Requests/GetItemDecisionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetDownloadQueueMedia + +Available: 0.2.0 + +Grab the media for a download queue item + + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetDownloadQueueMediaRequest req = new GetDownloadQueueMediaRequest() { + QueueId = 663184, + ItemId = 32, +}; + +var res = await sdk.DownloadQueue.GetDownloadQueueMediaAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `request` | [GetDownloadQueueMediaRequest](../../Models/Requests/GetDownloadQueueMediaRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetDownloadQueueMediaResponse](../../Models/Requests/GetDownloadQueueMediaResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## RemoveDownloadQueueItems + +delete items from a download queue + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +RemoveDownloadQueueItemsRequest req = new RemoveDownloadQueueItemsRequest() { + QueueId = 946275, + ItemId = new List() { + 32, + 345, + 23, + }, +}; + +var res = await sdk.DownloadQueue.RemoveDownloadQueueItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `request` | [RemoveDownloadQueueItemsRequest](../../Models/Requests/RemoveDownloadQueueItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[RemoveDownloadQueueItemsResponse](../../Models/Requests/RemoveDownloadQueueItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetDownloadQueueItems + +Available: 0.2.0 + +Get items from a download queue + + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetDownloadQueueItemsRequest req = new GetDownloadQueueItemsRequest() { + QueueId = 809886, + ItemId = new List() { + 32, + 345, + 23, + }, +}; + +var res = await sdk.DownloadQueue.GetDownloadQueueItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `request` | [GetDownloadQueueItemsRequest](../../Models/Requests/GetDownloadQueueItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetDownloadQueueItemsResponse](../../Models/Requests/GetDownloadQueueItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## RestartProcessingDownloadQueueItems + +Available: 0.2.0 + +Reprocess download queue items with previous decision parameters + + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +RestartProcessingDownloadQueueItemsRequest req = new RestartProcessingDownloadQueueItemsRequest() { + QueueId = 713001, + ItemId = new List() { + 32, + 345, + 23, + }, +}; + +var res = await sdk.DownloadQueue.RestartProcessingDownloadQueueItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | +| `request` | [RestartProcessingDownloadQueueItemsRequest](../../Models/Requests/RestartProcessingDownloadQueueItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[RestartProcessingDownloadQueueItemsResponse](../../Models/Requests/RestartProcessingDownloadQueueItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/dvrs/README.md b/docs/sdks/dvrs/README.md new file mode 100644 index 0000000..9279e0b --- /dev/null +++ b/docs/sdks/dvrs/README.md @@ -0,0 +1,684 @@ +# DVRs +(*DVRs*) + +## Overview + +The DVR provides means to watch and record live TV. This section of endpoints describes how to setup the DVR itself + + +### Available Operations + +* [ListDVRs](#listdvrs) - Get DVRs +* [CreateDVR](#createdvr) - Create a DVR +* [DeleteDVR](#deletedvr) - Delete a single DVR +* [GetDVR](#getdvr) - Get a single DVR +* [DeleteLineup](#deletelineup) - Delete a DVR Lineup +* [AddLineup](#addlineup) - Add a DVR Lineup +* [SetDVRPreferences](#setdvrpreferences) - Set DVR preferences +* [StopDVRReload](#stopdvrreload) - Tell a DVR to stop reloading program guide +* [ReloadGuide](#reloadguide) - Tell a DVR to reload program guide +* [TuneChannel](#tunechannel) - Tune a channel on a DVR +* [RemoveDeviceFromDVR](#removedevicefromdvr) - Remove a device from an existing DVR +* [AddDeviceToDVR](#adddevicetodvr) - Add a device to an existing DVR + +## ListDVRs + +Get the list of all available DVRs + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.DVRs.ListDVRsAsync(); + +// handle response +``` + +### Response + +**[ListDVRsResponse](../../Models/Requests/ListDVRsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## CreateDVR + +Creation of a DVR, after creation of a devcie and a lineup is selected + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +CreateDVRRequest req = new CreateDVRRequest() { + Lineup = "lineup://tv.plex.providers.epg.onconnect/USA-HI51418-DEFAULT", + DeviceQueryParameter = new List() { + "d", + "e", + "v", + "i", + "c", + "e", + "[", + "]", + "=", + "d", + "e", + "v", + "i", + "c", + "e", + ":", + "/", + "/", + "t", + "v", + ".", + "p", + "l", + "e", + "x", + ".", + "g", + "r", + "a", + "b", + "b", + "e", + "r", + "s", + ".", + "h", + "d", + "h", + "o", + "m", + "e", + "r", + "u", + "n", + "/", + "1", + "0", + "5", + "3", + "C", + "0", + "C", + "A", + }, + Language = "eng", +}; + +var res = await sdk.DVRs.CreateDVRAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [CreateDVRRequest](../../Models/Requests/CreateDVRRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[CreateDVRResponse](../../Models/Requests/CreateDVRResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteDVR + +Delete a single DVR by its id (key) + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteDVRRequest req = new DeleteDVRRequest() { + DvrId = 855088, +}; + +var res = await sdk.DVRs.DeleteDVRAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [DeleteDVRRequest](../../Models/Requests/DeleteDVRRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteDVRResponse](../../Models/Requests/DeleteDVRResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetDVR + +Get a single DVR by its id (key) + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetDVRRequest req = new GetDVRRequest() { + DvrId = 973518, +}; + +var res = await sdk.DVRs.GetDVRAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `request` | [GetDVRRequest](../../Models/Requests/GetDVRRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetDVRResponse](../../Models/Requests/GetDVRResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteLineup + +Deletes a DVR device's lineup. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteLineupRequest req = new DeleteLineupRequest() { + DvrId = 454470, + Lineup = "", +}; + +var res = await sdk.DVRs.DeleteLineupAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [DeleteLineupRequest](../../Models/Requests/DeleteLineupRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteLineupResponse](../../Models/Requests/DeleteLineupResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## AddLineup + +Add a lineup to a DVR device's set of lineups. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +AddLineupRequest req = new AddLineupRequest() { + DvrId = 945235, + Lineup = "", +}; + +var res = await sdk.DVRs.AddLineupAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [AddLineupRequest](../../Models/Requests/AddLineupRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[AddLineupResponse](../../Models/Requests/AddLineupResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## SetDVRPreferences + +Set DVR preferences by name avd value + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +SetDVRPreferencesRequest req = new SetDVRPreferencesRequest() { + DvrId = 116357, +}; + +var res = await sdk.DVRs.SetDVRPreferencesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [SetDVRPreferencesRequest](../../Models/Requests/SetDVRPreferencesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SetDVRPreferencesResponse](../../Models/Requests/SetDVRPreferencesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## StopDVRReload + +Tell a DVR to stop reloading program guide + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +StopDVRReloadRequest req = new StopDVRReloadRequest() { + DvrId = 348053, +}; + +var res = await sdk.DVRs.StopDVRReloadAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `request` | [StopDVRReloadRequest](../../Models/Requests/StopDVRReloadRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[StopDVRReloadResponse](../../Models/Requests/StopDVRReloadResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ReloadGuide + +Tell a DVR to reload program guide + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ReloadGuideRequest req = new ReloadGuideRequest() { + DvrId = 140753, +}; + +var res = await sdk.DVRs.ReloadGuideAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [ReloadGuideRequest](../../Models/Requests/ReloadGuideRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ReloadGuideResponse](../../Models/Requests/ReloadGuideResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## TuneChannel + +Tune a channel on a DVR to the provided channel + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +TuneChannelRequest req = new TuneChannelRequest() { + DvrId = 834281, + Channel = "2.1", +}; + +var res = await sdk.DVRs.TuneChannelAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [TuneChannelRequest](../../Models/Requests/TuneChannelRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[TuneChannelResponse](../../Models/Requests/TuneChannelResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## RemoveDeviceFromDVR + +Remove a device from an existing DVR + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +RemoveDeviceFromDVRRequest req = new RemoveDeviceFromDVRRequest() { + DvrId = 945416, + DeviceId = 260761, +}; + +var res = await sdk.DVRs.RemoveDeviceFromDVRAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [RemoveDeviceFromDVRRequest](../../Models/Requests/RemoveDeviceFromDVRRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[RemoveDeviceFromDVRResponse](../../Models/Requests/RemoveDeviceFromDVRResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## AddDeviceToDVR + +Add a device to an existing DVR + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +AddDeviceToDVRRequest req = new AddDeviceToDVRRequest() { + DvrId = 334755, + DeviceId = 852930, +}; + +var res = await sdk.DVRs.AddDeviceToDVRAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [AddDeviceToDVRRequest](../../Models/Requests/AddDeviceToDVRRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[AddDeviceToDVRResponse](../../Models/Requests/AddDeviceToDVRResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/epg/README.md b/docs/sdks/epg/README.md new file mode 100644 index 0000000..f0bc333 --- /dev/null +++ b/docs/sdks/epg/README.md @@ -0,0 +1,449 @@ +# Epg +(*Epg*) + +## Overview + +The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when + + +### Available Operations + +* [ComputeChannelMap](#computechannelmap) - Compute the best channel map +* [GetChannels](#getchannels) - Get channels for a lineup +* [GetCountries](#getcountries) - Get all countries +* [GetAllLanguages](#getalllanguages) - Get all languages +* [GetLineup](#getlineup) - Compute the best lineup +* [GetLineupChannels](#getlineupchannels) - Get the channels for mulitple lineups +* [GetCountriesLineups](#getcountrieslineups) - Get lineups for a country via postal code +* [GetCountryRegions](#getcountryregions) - Get regions for a country +* [ListLineups](#listlineups) - Get lineups for a region + +## ComputeChannelMap + +Compute the best channel map, given device and lineup + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ComputeChannelMapRequest req = new ComputeChannelMapRequest() { + DeviceQueryParameter = "", + Lineup = "", +}; + +var res = await sdk.Epg.ComputeChannelMapAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [ComputeChannelMapRequest](../../Models/Requests/ComputeChannelMapRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ComputeChannelMapResponse](../../Models/Requests/ComputeChannelMapResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetChannels + +Get channels for a lineup within an EPG provider + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetChannelsRequest req = new GetChannelsRequest() { + Lineup = "", +}; + +var res = await sdk.Epg.GetChannelsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [GetChannelsRequest](../../Models/Requests/GetChannelsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetChannelsResponse](../../Models/Requests/GetChannelsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetCountries + +This endpoint returns a list of countries which EPG data is available for. There are three flavors, as specfied by the `flavor` attribute + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Epg.GetCountriesAsync(); + +// handle response +``` + +### Response + +**[GetCountriesResponse](../../Models/Requests/GetCountriesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetAllLanguages + +Returns a list of all possible languages for EPG data. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Epg.GetAllLanguagesAsync(); + +// handle response +``` + +### Response + +**[GetAllLanguagesResponse](../../Models/Requests/GetAllLanguagesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetLineup + +Compute the best lineup, given lineup group and device + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetLineupRequest req = new GetLineupRequest() { + DeviceQueryParameter = "", + LineupGroup = "", +}; + +var res = await sdk.Epg.GetLineupAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [GetLineupRequest](../../Models/Requests/GetLineupRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetLineupResponse](../../Models/Requests/GetLineupResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetLineupChannels + +Get the channels across multiple lineups + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetLineupChannelsRequest req = new GetLineupChannelsRequest() { + Lineup = new List() { + "", + "", + }, +}; + +var res = await sdk.Epg.GetLineupChannelsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [GetLineupChannelsRequest](../../Models/Requests/GetLineupChannelsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetLineupChannelsResponse](../../Models/Requests/GetLineupChannelsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetCountriesLineups + +Returns a list of lineups for a given country, EPG provider and postal code + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetCountriesLineupsRequest req = new GetCountriesLineupsRequest() { + Country = "Malawi", + EpgId = "", +}; + +var res = await sdk.Epg.GetCountriesLineupsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [GetCountriesLineupsRequest](../../Models/Requests/GetCountriesLineupsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetCountriesLineupsResponse](../../Models/Requests/GetCountriesLineupsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetCountryRegions + +Get regions for a country within an EPG provider + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetCountryRegionsRequest req = new GetCountryRegionsRequest() { + Country = "Morocco", + EpgId = "", +}; + +var res = await sdk.Epg.GetCountryRegionsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [GetCountryRegionsRequest](../../Models/Requests/GetCountryRegionsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetCountryRegionsResponse](../../Models/Requests/GetCountryRegionsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ListLineups + +Get lineups for a region within an EPG provider + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ListLineupsRequest req = new ListLineupsRequest() { + Country = "Vanuatu", + EpgId = "", + Region = "", +}; + +var res = await sdk.Epg.ListLineupsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [ListLineupsRequest](../../Models/Requests/ListLineupsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ListLineupsResponse](../../Models/Requests/ListLineupsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/events/README.md b/docs/sdks/events/README.md new file mode 100644 index 0000000..dec35c7 --- /dev/null +++ b/docs/sdks/events/README.md @@ -0,0 +1,114 @@ +# Events +(*Events*) + +## Overview + +The server can notify clients in real-time of a wide range of events, from library scanning, to preferences being modified, to changes to media, and many other things. This is also the mechanism by which activity progress is reported. + +Two protocols for receiving the events are available: EventSource (also known as SSE), and WebSocket. + + +### Available Operations + +* [GetNotifications](#getnotifications) - Connect to Eventsource +* [ConnectWebSocket](#connectwebsocket) - Connect to WebSocket + +## GetNotifications + +Connect to the event source to get a stream of events + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetNotificationsRequest req = new GetNotificationsRequest() {}; + +var res = await sdk.Events.GetNotificationsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [GetNotificationsRequest](../../Models/Requests/GetNotificationsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetNotificationsResponse](../../Models/Requests/GetNotificationsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ConnectWebSocket + +Connect to the web socket to get a stream of events + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ConnectWebSocketRequest req = new ConnectWebSocketRequest() {}; + +var res = await sdk.Events.ConnectWebSocketAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [ConnectWebSocketRequest](../../Models/Requests/ConnectWebSocketRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ConnectWebSocketResponse](../../Models/Requests/ConnectWebSocketResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/general/README.md b/docs/sdks/general/README.md new file mode 100644 index 0000000..a4df71a --- /dev/null +++ b/docs/sdks/general/README.md @@ -0,0 +1,197 @@ +# General +(*General*) + +## Overview + +General endpoints for basic PMS operation not specific to any media provider + +### Available Operations + +* [GetServerInfo](#getserverinfo) - Get PMS info +* [GetIdentity](#getidentity) - Get PMS identity +* [GetSourceConnectionInformation](#getsourceconnectioninformation) - Get Source Connection Information +* [GetTransientToken](#gettransienttoken) - Get Transient Tokens + +## GetServerInfo + +Information about this PMS setup and configuration + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetServerInfoRequest req = new GetServerInfoRequest() {}; + +var res = await sdk.General.GetServerInfoAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `request` | [GetServerInfoRequest](../../Models/Requests/GetServerInfoRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetServerInfoResponse](../../Models/Requests/GetServerInfoResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetIdentity + +Get details about this PMS's identity + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; + +var sdk = new PlexAPI(); + +var res = await sdk.General.GetIdentityAsync(); + +// handle response +``` + +### Response + +**[GetIdentityResponse](../../Models/Requests/GetIdentityResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## 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. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetSourceConnectionInformationRequest req = new GetSourceConnectionInformationRequest() { + Source = "server://client-identifier", + Refresh = BoolInt.One, +}; + +var res = await sdk.General.GetSourceConnectionInformationAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `request` | [GetSourceConnectionInformationRequest](../../Models/Requests/GetSourceConnectionInformationRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetSourceConnectionInformationResponse](../../Models/Requests/GetSourceConnectionInformationResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## 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. +Note: This endpoint responds to all HTTP verbs but POST in preferred + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetTransientTokenRequest req = new GetTransientTokenRequest() { + Type = QueryParamType.Delegation, + Scope = Scope.All, +}; + +var res = await sdk.General.GetTransientTokenAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [GetTransientTokenRequest](../../Models/Requests/GetTransientTokenRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetTransientTokenResponse](../../Models/Requests/GetTransientTokenResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/hubs/README.md b/docs/sdks/hubs/README.md index 97fa796..394d4f3 100644 --- a/docs/sdks/hubs/README.md +++ b/docs/sdks/hubs/README.md @@ -3,88 +3,70 @@ ## Overview -Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows. - +The hubs within a media provider ### Available Operations -* [GetGlobalHubs](#getglobalhubs) - Get Global Hubs -* [GetRecentlyAdded](#getrecentlyadded) - Get Recently Added -* [GetLibraryHubs](#getlibraryhubs) - Get library specific hubs +* [GetAllHubs](#getallhubs) - Get global hubs +* [GetContinueWatching](#getcontinuewatching) - Get the continue watching hub +* [GetHubItems](#gethubitems) - Get a hub's items +* [GetPromotedHubs](#getpromotedhubs) - Get the hubs which are promoted +* [GetMetadataHubs](#getmetadatahubs) - Get hubs for section by metadata item +* [GetPostplayHubs](#getpostplayhubs) - Get postplay hubs +* [GetRelatedHubs](#getrelatedhubs) - Get related hubs +* [GetSectionHubs](#getsectionhubs) - Get section hubs +* [ResetSectionDefaults](#resetsectiondefaults) - Reset hubs to defaults +* [ListHubs](#listhubs) - Get hubs +* [CreateCustomHub](#createcustomhub) - Create a custom hub +* [MoveHub](#movehub) - Move Hub +* [DeleteCustomHub](#deletecustomhub) - Delete a custom hub +* [UpdateHubVisibility](#updatehubvisibility) - Change hub visibility -## GetGlobalHubs +## GetAllHubs -Get Global Hubs filtered by the parameters provided. +Get the global hubs in this PMS ### Example Usage - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Hubs.GetGlobalHubsAsync(); - -// 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)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetGlobalHubsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetGlobalHubsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetRecentlyAdded - -This endpoint will return the recently added content. - - -### Example Usage - - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); -GetRecentlyAddedRequest req = new GetRecentlyAddedRequest() { - ContentDirectoryID = 39486, - SectionID = 2, - Type = LukeHagar.PlexAPI.SDK.Models.Requests.Type.TvShow, - IncludeMeta = IncludeMeta.Enable, +GetAllHubsRequest req = new GetAllHubsRequest() { + OnlyTransient = BoolInt.One, }; -var res = await sdk.Hubs.GetRecentlyAddedAsync(req); +var res = await sdk.Hubs.GetAllHubsAsync(req); // handle response ``` ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `request` | [GetRecentlyAddedRequest](../../Models/Requests/GetRecentlyAddedRequest.md) | :heavy_check_mark: | The request object to use for the request. | +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `request` | [GetAllHubsRequest](../../Models/Requests/GetAllHubsRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response -**[GetRecentlyAddedResponse](../../Models/Requests/GetRecentlyAddedResponse.md)** +**[GetAllHubsResponse](../../Models/Requests/GetAllHubsResponse.md)** ### Errors @@ -92,41 +74,693 @@ var res = await sdk.Hubs.GetRecentlyAddedAsync(req); | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | | LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## GetLibraryHubs - -This endpoint will return a list of library specific hubs +## GetContinueWatching +Get the global continue watching hub ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); -var res = await sdk.Hubs.GetLibraryHubsAsync(sectionId: 492.74D); +GetContinueWatchingRequest req = new GetContinueWatchingRequest() {}; + +var res = await sdk.Hubs.GetContinueWatchingAsync(req); // 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). | +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [GetContinueWatchingRequest](../../Models/Requests/GetContinueWatchingRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response -**[GetLibraryHubsResponse](../../Models/Requests/GetLibraryHubsResponse.md)** +**[GetContinueWatchingResponse](../../Models/Requests/GetContinueWatchingResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetLibraryHubsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetLibraryHubsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetHubItems + +Get the items within a single hub specified by identifier + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetHubItemsRequest req = new GetHubItemsRequest() { + Identifier = new List() { + "", + "", + "", + }, +}; + +var res = await sdk.Hubs.GetHubItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [GetHubItemsRequest](../../Models/Requests/GetHubItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetHubItemsResponse](../../Models/Requests/GetHubItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetPromotedHubs + +Get the global hubs which are promoted (should be displayed on the home screen) + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetPromotedHubsRequest req = new GetPromotedHubsRequest() {}; + +var res = await sdk.Hubs.GetPromotedHubsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [GetPromotedHubsRequest](../../Models/Requests/GetPromotedHubsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetPromotedHubsResponse](../../Models/Requests/GetPromotedHubsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetMetadataHubs + +Get the hubs for a section by metadata item. Currently only for music sections + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetMetadataHubsRequest req = new GetMetadataHubsRequest() { + MetadataId = 605482, + OnlyTransient = BoolInt.One, +}; + +var res = await sdk.Hubs.GetMetadataHubsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [GetMetadataHubsRequest](../../Models/Requests/GetMetadataHubsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetMetadataHubsResponse](../../Models/Requests/GetMetadataHubsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetPostplayHubs + +Get the hubs for a metadata to be displayed in post play + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetPostplayHubsRequest req = new GetPostplayHubsRequest() { + MetadataId = 441419, + OnlyTransient = BoolInt.One, +}; + +var res = await sdk.Hubs.GetPostplayHubsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [GetPostplayHubsRequest](../../Models/Requests/GetPostplayHubsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetPostplayHubsResponse](../../Models/Requests/GetPostplayHubsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetRelatedHubs + +Get the hubs for a metadata related to the provided metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetRelatedHubsRequest req = new GetRelatedHubsRequest() { + MetadataId = 8858, + OnlyTransient = BoolInt.One, +}; + +var res = await sdk.Hubs.GetRelatedHubsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [GetRelatedHubsRequest](../../Models/Requests/GetRelatedHubsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetRelatedHubsResponse](../../Models/Requests/GetRelatedHubsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetSectionHubs + +Get the hubs for a single section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetSectionHubsRequest req = new GetSectionHubsRequest() { + SectionId = 336924, + OnlyTransient = BoolInt.One, +}; + +var res = await sdk.Hubs.GetSectionHubsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [GetSectionHubsRequest](../../Models/Requests/GetSectionHubsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetSectionHubsResponse](../../Models/Requests/GetSectionHubsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ResetSectionDefaults + +Reset hubs for this section to defaults and delete custom hubs + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ResetSectionDefaultsRequest req = new ResetSectionDefaultsRequest() { + SectionId = 383022, +}; + +var res = await sdk.Hubs.ResetSectionDefaultsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `request` | [ResetSectionDefaultsRequest](../../Models/Requests/ResetSectionDefaultsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ResetSectionDefaultsResponse](../../Models/Requests/ResetSectionDefaultsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ListHubs + +Get the list of hubs including both built-in and custom + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ListHubsRequest req = new ListHubsRequest() { + SectionId = 442546, +}; + +var res = await sdk.Hubs.ListHubsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `request` | [ListHubsRequest](../../Models/Requests/ListHubsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ListHubsResponse](../../Models/Requests/ListHubsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## CreateCustomHub + +Create a custom hub based on a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +CreateCustomHubRequest req = new CreateCustomHubRequest() { + SectionId = 869922, + MetadataItemId = 703843, + PromotedToRecommended = BoolInt.One, + PromotedToOwnHome = BoolInt.One, + PromotedToSharedHome = BoolInt.One, +}; + +var res = await sdk.Hubs.CreateCustomHubAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [CreateCustomHubRequest](../../Models/Requests/CreateCustomHubRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[CreateCustomHubResponse](../../Models/Requests/CreateCustomHubResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## MoveHub + +Changed the ordering of a hub among others hubs + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +MoveHubRequest req = new MoveHubRequest() { + SectionId = 755710, + Identifier = "", +}; + +var res = await sdk.Hubs.MoveHubAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `request` | [MoveHubRequest](../../Models/Requests/MoveHubRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[MoveHubResponse](../../Models/Requests/MoveHubResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteCustomHub + +Delete a custom hub from the server + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteCustomHubRequest req = new DeleteCustomHubRequest() { + SectionId = 625677, + Identifier = "", +}; + +var res = await sdk.Hubs.DeleteCustomHubAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [DeleteCustomHubRequest](../../Models/Requests/DeleteCustomHubRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteCustomHubResponse](../../Models/Requests/DeleteCustomHubResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## UpdateHubVisibility + +Changed the visibility of a hub for both the admin and shared users + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +UpdateHubVisibilityRequest req = new UpdateHubVisibilityRequest() { + SectionId = 341650, + Identifier = "", + PromotedToRecommended = BoolInt.One, + PromotedToOwnHome = BoolInt.One, + PromotedToSharedHome = BoolInt.One, +}; + +var res = await sdk.Hubs.UpdateHubVisibilityAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [UpdateHubVisibilityRequest](../../Models/Requests/UpdateHubVisibilityRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[UpdateHubVisibilityResponse](../../Models/Requests/UpdateHubVisibilityResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md index 27cc8d6..416bb82 100644 --- a/docs/sdks/library/README.md +++ b/docs/sdks/library/README.md @@ -3,323 +3,118 @@ ## Overview -API Calls interacting with Plex Media Server Libraries - +Library endpoints which are outside of the Media Provider API. Typically this is manipulation of the library (adding/removing sections, modifying preferences, etc). ### Available Operations -* [GetFileHash](#getfilehash) - Get Hash Value -* [GetRecentlyAddedLibrary](#getrecentlyaddedlibrary) - Get Recently Added -* [GetAllLibraries](#getalllibraries) - Get All Libraries -* [GetLibraryDetails](#getlibrarydetails) - Get Library Details -* [DeleteLibrary](#deletelibrary) - Delete Library Section -* [GetLibraryItems](#getlibraryitems) - Get Library Items -* [GetLibrarySectionsAll](#getlibrarysectionsall) - Get Library section media by tag ALL -* [GetRefreshLibraryMetadata](#getrefreshlibrarymetadata) - Refresh Metadata Of The Library -* [GetSearchLibrary](#getsearchlibrary) - Search Library -* [GetGenresLibrary](#getgenreslibrary) - Get Genres of library media -* [GetCountriesLibrary](#getcountrieslibrary) - Get Countries of library media -* [GetActorsLibrary](#getactorslibrary) - Get Actors of library media -* [GetSearchAllLibraries](#getsearchalllibraries) - Search All Libraries -* [GetMediaMetaData](#getmediametadata) - Get Media Metadata -* [GetMediaArts](#getmediaarts) - Get Media Background Artwork -* [PostMediaArts](#postmediaarts) - Upload Media Background Artwork -* [GetMediaPosters](#getmediaposters) - Get Media Posters -* [PostMediaPoster](#postmediaposter) - Upload Media Poster -* [GetMetadataChildren](#getmetadatachildren) - Get Items Children -* [GetTopWatchedContent](#gettopwatchedcontent) - Get Top Watched Content - -## GetFileHash - -This resource returns hash values for local files - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.GetFileHashAsync(url: "file://C:\Image.png&type=13"); - -// 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)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetFileHashBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetFileHashUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetRecentlyAddedLibrary - -This endpoint will return the recently added content. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; -using System.Collections.Generic; - -var sdk = new PlexAPI(accessToken: ""); - -GetRecentlyAddedLibraryRequest req = new GetRecentlyAddedLibraryRequest() { - ContentDirectoryID = 2, - PinnedContentDirectoryID = new List() { - 3, - 5, - 7, - 13, - 12, - 1, - 6, - 14, - 2, - 10, - 16, - 17, - }, - SectionID = 2, - Type = QueryParamType.TvShow, - IncludeMeta = QueryParamIncludeMeta.Enable, -}; - -var res = await sdk.Library.GetRecentlyAddedLibraryAsync(req); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `request` | [GetRecentlyAddedLibraryRequest](../../Models/Requests/GetRecentlyAddedLibraryRequest.md) | :heavy_check_mark: | The request object to use for the request. | - -### Response - -**[GetRecentlyAddedLibraryResponse](../../Models/Requests/GetRecentlyAddedLibraryResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetRecentlyAddedLibraryBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetRecentlyAddedLibraryUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetAllLibraries - -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 LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.GetAllLibrariesAsync(); - -// handle response -``` - -### Response - -**[GetAllLibrariesResponse](../../Models/Requests/GetAllLibrariesResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetAllLibrariesBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetAllLibrariesUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetLibraryDetails - -## Library Details Endpoint - -This endpoint provides comprehensive details about the library, focusing on organizational aspects rather than the content itself. - -The details include: - -### Directories -Organized into three categories: - -- **Primary Directories**: - - Used in some clients for quick access to media subsets (e.g., "All", "On Deck"). - - Most can be replicated via media queries. - - Customizable by users. - -- **Secondary Directories**: - - Marked with `secondary="1"`. - - Used in older clients for structured navigation. - -- **Special Directories**: - - Includes a "By Folder" entry for filesystem-based browsing. - - Contains an obsolete `search="1"` entry for on-the-fly search dialog creation. - -### Types -Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls: - -- **Type Object Attributes**: - - `key`: Endpoint for the media list of this type. - - `type`: Metadata type (if standard Plex type). - - `title`: Title for this content type (e.g., "Movies"). - -- **Filter Objects**: - - Subset of the media query language. - - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`. - -- **Sort Objects**: - - Description of sort fields. - - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`. - -> **Note**: Filters and sorts are optional; without them, no filtering controls are rendered. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.GetLibraryDetailsAsync( - sectionKey: 9518, - includeDetails: IncludeDetails.Zero -); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `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 - -**[GetLibraryDetailsResponse](../../Models/Requests/GetLibraryDetailsResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetLibraryDetailsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetLibraryDetailsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## DeleteLibrary - -Delete a library using a specific section id - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.DeleteLibraryAsync(sectionKey: 9518); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | - -### Response - -**[DeleteLibraryResponse](../../Models/Requests/DeleteLibraryResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.DeleteLibraryBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.DeleteLibraryUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | +* [GetLibraryItems](#getlibraryitems) - Get all items in library +* [DeleteCaches](#deletecaches) - Delete library caches +* [CleanBundles](#cleanbundles) - Clean bundles +* [IngestTransientItem](#ingesttransientitem) - Ingest a transient item +* [GetLibraryMatches](#getlibrarymatches) - Get library matches +* [OptimizeDatabase](#optimizedatabase) - Optimize the Database +* [GetRandomArtwork](#getrandomartwork) - Get random artwork +* [GetSections](#getsections) - Get library sections (main Media Provider Only) +* [AddSection](#addsection) - Add a library section +* [StopAllRefreshes](#stopallrefreshes) - Stop refresh +* [GetSectionsPrefs](#getsectionsprefs) - Get section prefs +* [RefreshSectionsMetadata](#refreshsectionsmetadata) - Refresh all sections +* [GetTags](#gettags) - Get all library tags of a type +* [DeleteMetadataItem](#deletemetadataitem) - Delete a metadata item +* [EditMetadataItem](#editmetadataitem) - Edit a metadata item +* [DetectAds](#detectads) - Ad-detect an item +* [GetAllItemLeaves](#getallitemleaves) - Get the leaves of an item +* [AnalyzeMetadata](#analyzemetadata) - Analyze an item +* [GenerateThumbs](#generatethumbs) - Generate thumbs of chapters for an item +* [DetectCredits](#detectcredits) - Credit detect a metadata item +* [GetExtras](#getextras) - Get an item's extras +* [AddExtras](#addextras) - Add to an item's extras +* [GetFile](#getfile) - Get a file from a metadata or media bundle +* [StartBifGeneration](#startbifgeneration) - Start BIF generation of an item +* [DetectIntros](#detectintros) - Intro detect an item +* [CreateMarker](#createmarker) - Create a marker +* [MatchItem](#matchitem) - Match a metadata item +* [ListMatches](#listmatches) - Get metadata matches for an item +* [MergeItems](#mergeitems) - Merge a metadata item +* [ListSonicallySimilar](#listsonicallysimilar) - Get nearest tracks to metadata item +* [SetItemPreferences](#setitempreferences) - Set metadata preferences +* [RefreshItemsMetadata](#refreshitemsmetadata) - Refresh a metadata item +* [GetRelatedItems](#getrelateditems) - Get related items +* [ListSimilar](#listsimilar) - Get similar items +* [SplitItem](#splititem) - Split a metadata item +* [AddSubtitles](#addsubtitles) - Add subtitles +* [GetItemTree](#getitemtree) - Get metadata items as a tree +* [Unmatch](#unmatch) - Unmatch a metadata item +* [ListTopUsers](#listtopusers) - Get metadata top users +* [DetectVoiceActivity](#detectvoiceactivity) - Detect voice activity +* [GetAugmentationStatus](#getaugmentationstatus) - Get augmentation status +* [SetStreamSelection](#setstreamselection) - Set stream selection +* [GetPerson](#getperson) - Get person details +* [ListPersonMedia](#listpersonmedia) - Get media for a person +* [DeleteLibrarySection](#deletelibrarysection) - Delete a library section +* [GetLibraryDetails](#getlibrarydetails) - Get a library section by id +* [EditSection](#editsection) - Edit a library section +* [UpdateItems](#updateitems) - Set the fields of the filtered items +* [StartAnalysis](#startanalysis) - Analyze a section +* [Autocomplete](#autocomplete) - Get autocompletions for search +* [GetCollections](#getcollections) - Get collections in a section +* [GetCommon](#getcommon) - Get common fields for items +* [EmptyTrash](#emptytrash) - Empty section trash +* [GetSectionFilters](#getsectionfilters) - Get section filters +* [GetFirstCharacters](#getfirstcharacters) - Get list of first characters +* [DeleteIndexes](#deleteindexes) - Delete section indexes +* [DeleteIntros](#deleteintros) - Delete section intro markers +* [GetSectionPreferences](#getsectionpreferences) - Get section prefs +* [SetSectionPreferences](#setsectionpreferences) - Set section prefs +* [CancelRefresh](#cancelrefresh) - Cancel section refresh +* [RefreshSection](#refreshsection) - Refresh section +* [GetAvailableSorts](#getavailablesorts) - Get a section sorts +* [GetStreamLevels](#getstreamlevels) - Get loudness about a stream in json +* [GetStreamLoudness](#getstreamloudness) - Get loudness about a stream +* [GetChapterImage](#getchapterimage) - Get a chapter image +* [SetItemArtwork](#setitemartwork) - Set an item's artwork, theme, etc +* [UpdateItemArtwork](#updateitemartwork) - Set an item's artwork, theme, etc +* [DeleteMarker](#deletemarker) - Delete a marker +* [EditMarker](#editmarker) - Edit a marker +* [DeleteMediaItem](#deletemediaitem) - Delete a media item +* [GetPartIndex](#getpartindex) - Get BIF index for a part +* [DeleteCollection](#deletecollection) - Delete a collection +* [GetSectionImage](#getsectionimage) - Get a section composite image +* [DeleteStream](#deletestream) - Delete a stream +* [GetStream](#getstream) - Get a stream +* [SetStreamOffset](#setstreamoffset) - Set a stream offset +* [GetItemArtwork](#getitemartwork) - Get an item's artwork, theme, etc +* [GetMediaPart](#getmediapart) - Get a media part +* [GetImageFromBif](#getimagefrombif) - Get an image from part BIF ## GetLibraryItems -Fetches details from a specific section of the library identified by a section key and a tag. The tag parameter accepts the following values: -- `all`: All items in the section. -- `unwatched`: Items that have not been played. -- `newest`: Items that are recently released. -- `recentlyAdded`: Items that are recently added to the library. -- `recentlyViewed`: Items that were recently viewed. -- `onDeck`: Items to continue watching. -- `collection`: Items categorized by collection. -- `edition`: Items categorized by edition. -- `genre`: Items categorized by genre. -- `year`: Items categorized by year of release. -- `decade`: Items categorized by decade. -- `director`: Items categorized by director. -- `actor`: Items categorized by starring actor. -- `country`: Items categorized by country of origin. -- `contentRating`: Items categorized by content rating. -- `rating`: Items categorized by rating. -- `resolution`: Items categorized by resolution. -- `firstCharacter`: Items categorized by the first letter. -- `folder`: Items categorized by folder. -- `albums`: Items categorized by album. - +Request all metadata items according to a query. ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); -GetLibraryItemsRequest req = new GetLibraryItemsRequest() { - Tag = Tag.Newest, - IncludeGuids = IncludeGuids.Enable, - Type = GetLibraryItemsQueryParamType.TvShow, - SectionKey = 9518, - IncludeMeta = GetLibraryItemsQueryParamIncludeMeta.Enable, -}; +GetLibraryItemsRequest req = new GetLibraryItemsRequest() {}; var res = await sdk.Library.GetLibraryItemsAsync(req); @@ -338,370 +133,212 @@ var res = await sdk.Library.GetLibraryItemsAsync(req); ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetLibraryItemsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetLibraryItemsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## GetLibrarySectionsAll - -Retrieves a list of all general media data for this library. +## DeleteCaches +Delete the hub caches so they are recomputed on next request ### Example Usage - + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Library.DeleteCachesAsync(); + +// handle response +``` + +### Response + +**[DeleteCachesResponse](../../Models/Requests/DeleteCachesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## CleanBundles + +Clean out any now unused bundles. Bundles can become unused when media is deleted + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Library.CleanBundlesAsync(); + +// handle response +``` + +### Response + +**[CleanBundlesResponse](../../Models/Requests/CleanBundlesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## IngestTransientItem + +This endpoint takes a file path specified in the `url` parameter, matches it using the scanner's match mechanism, downloads rich metadata, and then ingests the item as a transient item (without a library section). In the case where the file represents an episode, the entire tree (show, season, and episode) is added as transient items. At this time, movies and episodes are the only supported types, which are gleaned automatically from the file path. +Note that any of the parameters passed to the metadata details endpoint (e.g. `includeExtras=1`) work here. + +### Example Usage + + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); -GetLibrarySectionsAllRequest req = new GetLibrarySectionsAllRequest() { - SectionKey = 9518, - Type = GetLibrarySectionsAllQueryParamType.TvShow, - IncludeMeta = GetLibrarySectionsAllQueryParamIncludeMeta.Enable, - IncludeGuids = QueryParamIncludeGuids.Enable, - IncludeAdvanced = IncludeAdvanced.Enable, - IncludeCollections = QueryParamIncludeCollections.Enable, - IncludeExternalMedia = QueryParamIncludeExternalMedia.Enable, +IngestTransientItemRequest req = new IngestTransientItemRequest() { + Url = "file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv", + VirtualFilePath = "/Avatar.mkv", + ComputeHashes = BoolInt.One, + IngestNonMatches = BoolInt.One, }; -var res = await sdk.Library.GetLibrarySectionsAllAsync(req); +var res = await sdk.Library.IngestTransientItemAsync(req); // handle response ``` ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `request` | [GetLibrarySectionsAllRequest](../../Models/Requests/GetLibrarySectionsAllRequest.md) | :heavy_check_mark: | The request object to use for the request. | +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [IngestTransientItemRequest](../../Models/Requests/IngestTransientItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response -**[GetLibrarySectionsAllResponse](../../Models/Requests/GetLibrarySectionsAllResponse.md)** +**[IngestTransientItemResponse](../../Models/Requests/IngestTransientItemResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetLibrarySectionsAllBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetLibrarySectionsAllUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## GetRefreshLibraryMetadata - -This endpoint Refreshes all the Metadata of the library. +## GetLibraryMatches +The matches endpoint is used to match content external to the library with content inside the library. This is done by passing a series of semantic "hints" about the content (its type, name, or release year). Each type (e.g. movie) has a canonical set of minimal required hints. +This ability to match content is useful in a variety of scenarios. For example, in the DVR, the EPG uses the endpoint to match recording rules against airing content. And in the cloud, the UMP uses the endpoint to match up a piece of media with rich metadata. +The endpoint response can including multiple matches, if there is ambiguity, each one containing a `score` from 0 to 100. For somewhat historical reasons, anything over 85 is considered a positive match (we prefer false negatives over false positives in general for matching). +The `guid` hint is somewhat special, in that it generally represents a unique identity for a piece of media (e.g. the IMDB `ttXXX`) identifier, in contrast with other hints which can be much more ambiguous (e.g. a title of `Jane Eyre`, which could refer to the 1943 or the 2011 version). +Episodes require either a season/episode pair, or an air date (or both). Either the path must be sent, or the show title ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.GetRefreshLibraryMetadataAsync( - sectionKey: 9518, - force: Force.Zero +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `Force` | [Force](../../Models/Requests/Force.md) | :heavy_minus_sign: | Force the refresh even if the library is already being refreshed. | 0 | - -### Response - -**[GetRefreshLibraryMetadataResponse](../../Models/Requests/GetRefreshLibraryMetadataResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetRefreshLibraryMetadataBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetRefreshLibraryMetadataUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetSearchLibrary - -Search for content within a specific section of the library. - -### Types -Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls: - -- **Type Object Attributes**: - - `type`: Metadata type (if standard Plex type). - - `title`: Title for this content type (e.g., "Movies"). - -- **Filter Objects**: - - Subset of the media query language. - - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`. - -- **Sort Objects**: - - Description of sort fields. - - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`. - -> **Note**: Filters and sorts are optional; without them, no filtering controls are rendered. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.GetSearchLibraryAsync( - sectionKey: 9518, - type: GetSearchLibraryQueryParamType.TvShow -); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `Type` | [GetSearchLibraryQueryParamType](../../Models/Requests/GetSearchLibraryQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | - -### Response - -**[GetSearchLibraryResponse](../../Models/Requests/GetSearchLibraryResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetSearchLibraryBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetSearchLibraryUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetGenresLibrary - -Retrieves a list of all the genres that are found for the media in this library. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.GetGenresLibraryAsync( - sectionKey: 9518, - type: GetGenresLibraryQueryParamType.TvShow -); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `Type` | [GetGenresLibraryQueryParamType](../../Models/Requests/GetGenresLibraryQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | - -### Response - -**[GetGenresLibraryResponse](../../Models/Requests/GetGenresLibraryResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetGenresLibraryBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetGenresLibraryUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetCountriesLibrary - -Retrieves a list of all the countries that are found for the media in this library. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.GetCountriesLibraryAsync( - sectionKey: 9518, - type: GetCountriesLibraryQueryParamType.TvShow -); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `Type` | [GetCountriesLibraryQueryParamType](../../Models/Requests/GetCountriesLibraryQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | - -### Response - -**[GetCountriesLibraryResponse](../../Models/Requests/GetCountriesLibraryResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetCountriesLibraryBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetCountriesLibraryUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetActorsLibrary - -Retrieves a list of all the actors that are found for the media in this library. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.GetActorsLibraryAsync( - sectionKey: 9518, - type: GetActorsLibraryQueryParamType.TvShow -); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `SectionKey` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `Type` | [GetActorsLibraryQueryParamType](../../Models/Requests/GetActorsLibraryQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | - -### Response - -**[GetActorsLibraryResponse](../../Models/Requests/GetActorsLibraryResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetActorsLibraryBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetActorsLibraryUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetSearchAllLibraries - -Search the provided query across all library sections, or a single section, and return matches as hubs, split up by type. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; -using System.Collections.Generic; - -var sdk = new PlexAPI(accessToken: ""); - -GetSearchAllLibrariesRequest req = new GetSearchAllLibrariesRequest() { - Query = "", - ClientID = "3381b62b-9ab7-4e37-827b-203e9809eb58", - SearchTypes = new List() { - SearchTypes.People, - }, - IncludeCollections = GetSearchAllLibrariesQueryParamIncludeCollections.Enable, - IncludeExternalMedia = GetSearchAllLibrariesQueryParamIncludeExternalMedia.Enable, +GetLibraryMatchesRequest req = new GetLibraryMatchesRequest() { + IncludeFullMetadata = BoolInt.One, + IncludeAncestorMetadata = BoolInt.One, + IncludeAlternateMetadataSources = BoolInt.One, }; -var res = await sdk.Library.GetSearchAllLibrariesAsync(req); +var res = await sdk.Library.GetLibraryMatchesAsync(req); // handle response ``` ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `request` | [GetSearchAllLibrariesRequest](../../Models/Requests/GetSearchAllLibrariesRequest.md) | :heavy_check_mark: | The request object to use for the request. | +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [GetLibraryMatchesRequest](../../Models/Requests/GetLibraryMatchesRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response -**[GetSearchAllLibrariesResponse](../../Models/Requests/GetSearchAllLibrariesResponse.md)** +**[GetLibraryMatchesResponse](../../Models/Requests/GetLibraryMatchesResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetSearchAllLibrariesBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetSearchAllLibrariesUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## GetMediaMetaData - -This endpoint will return all the (meta)data of one or more library items specified by the ratingKey. -Multiple rating keys can be provided as a comma-separated list (e.g., "21119,21617"). +## OptimizeDatabase +Initiate optimize on the database. ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); -GetMediaMetaDataRequest req = new GetMediaMetaDataRequest() { - RatingKey = "21119,21617", - IncludeConcerts = true, - IncludeExtras = true, - IncludeOnDeck = true, - IncludePopularLeaves = true, - IncludePreferences = true, - IncludeReviews = true, - IncludeChapters = true, - IncludeStations = true, - IncludeExternalMedia = true, - AsyncAugmentMetadata = true, - AsyncCheckFiles = true, - AsyncRefreshAnalysis = true, - AsyncRefreshLocalMediaAgent = true, +OptimizeDatabaseRequest req = new OptimizeDatabaseRequest() { + Async = BoolInt.One, }; -var res = await sdk.Library.GetMediaMetaDataAsync(req); +var res = await sdk.Library.OptimizeDatabaseAsync(req); // handle response ``` @@ -710,47 +347,11 @@ var res = await sdk.Library.GetMediaMetaDataAsync(req); | Parameter | Type | Required | Description | | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `request` | [GetMediaMetaDataRequest](../../Models/Requests/GetMediaMetaDataRequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `request` | [OptimizeDatabaseRequest](../../Models/Requests/OptimizeDatabaseRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response -**[GetMediaMetaDataResponse](../../Models/Requests/GetMediaMetaDataResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetMediaMetaDataBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetMediaMetaDataUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetMediaArts - -Returns the background artwork for a library item. - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.GetMediaArtsAsync(ratingKey: 16099); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `RatingKey` | *long* | :heavy_check_mark: | the id of the library item to return the artwork of. | 16099 | - -### Response - -**[GetMediaArtsResponse](../../Models/Requests/GetMediaArtsResponse.md)** +**[OptimizeDatabaseResponse](../../Models/Requests/OptimizeDatabaseResponse.md)** ### Errors @@ -758,38 +359,58 @@ var res = await sdk.Library.GetMediaArtsAsync(ratingKey: 16099); | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | | LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## PostMediaArts +## GetRandomArtwork + +Get random artwork across sections. This is commonly used for a screensaver. + +This retrieves 100 random artwork paths in the specified sections and returns them. Restrictions are put in place to not return artwork for items the user is not allowed to access. Artwork will be for Movies, Shows, and Artists only. -Uploads an image to use as the background artwork for a library item, either from a local file or a remote URL ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.PostMediaArtsAsync( - ratingKey: 2268, - url: "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b" +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); +GetRandomArtworkRequest req = new GetRandomArtworkRequest() { + Sections = new List() { + 5, + 6, + }, +}; + +var res = await sdk.Library.GetRandomArtworkAsync(req); + // handle response ``` ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `RatingKey` | *long* | :heavy_check_mark: | the id of the library item to return the posters of. | 2268 | -| `Url` | *string* | :heavy_minus_sign: | The URL of the image, if uploading a remote image | https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b | -| `RequestBody` | *byte[]* | :heavy_minus_sign: | The contents of the image, if uploading a local file | | +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [GetRandomArtworkRequest](../../Models/Requests/GetRandomArtworkRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response -**[PostMediaArtsResponse](../../Models/Requests/PostMediaArtsResponse.md)** +**[GetRandomArtworkResponse](../../Models/Requests/GetRandomArtworkResponse.md)** ### Errors @@ -797,33 +418,28 @@ var res = await sdk.Library.PostMediaArtsAsync( | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | | LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## GetMediaPosters +## GetSections -Returns the available posters for a library item. +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 LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI(token: ""); -var res = await sdk.Library.GetMediaPostersAsync(ratingKey: 16099); +var res = await sdk.Library.GetSectionsAsync(); // handle response ``` -### Parameters - -| Parameter | Type | Required | Description | Example | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `RatingKey` | *long* | :heavy_check_mark: | the id of the library item to return the posters of. | 16099 | - ### Response -**[GetMediaPostersResponse](../../Models/Requests/GetMediaPostersResponse.md)** +**[GetSectionsResponse](../../Models/Requests/GetSectionsResponse.md)** ### Errors @@ -831,38 +447,62 @@ var res = await sdk.Library.GetMediaPostersAsync(ratingKey: 16099); | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | | LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## PostMediaPoster +## AddSection -Uploads a poster to a library item, either from a local file or a remote URL +Add a new library section to the server ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.PostMediaPosterAsync( - ratingKey: 2268, - url: "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b" +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); +AddSectionRequest req = new AddSectionRequest() { + Name = "", + Type = 39544, + Agent = "", + Language = "", + Locations = new List() { + "O:\fatboy\Media\Ripped\Music", + "O:\fatboy\Media\My Music", + }, + Prefs = new QueryParamPrefs() {}, + Relative = BoolInt.One, + ImportFromiTunes = BoolInt.One, +}; + +var res = await sdk.Library.AddSectionAsync(req); + // handle response ``` ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `RatingKey` | *long* | :heavy_check_mark: | the id of the library item to return the posters of. | 2268 | -| `Url` | *string* | :heavy_minus_sign: | The URL of the image, if uploading a remote image | https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b | -| `RequestBody` | *byte[]* | :heavy_minus_sign: | The contents of the image, if uploading a local file | | +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `request` | [AddSectionRequest](../../Models/Requests/AddSectionRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response -**[PostMediaPosterResponse](../../Models/Requests/PostMediaPosterResponse.md)** +**[AddSectionResponse](../../Models/Requests/AddSectionResponse.md)** ### Errors @@ -870,25 +510,485 @@ var res = await sdk.Library.PostMediaPosterAsync( | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | | LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## GetMetadataChildren - -This endpoint will return the children of of a library item specified with the ratingKey. +## StopAllRefreshes +Stop all refreshes across all sections ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI(token: ""); -var res = await sdk.Library.GetMetadataChildrenAsync( - ratingKey: 2403.67D, - includeElements: "Stream" +var res = await sdk.Library.StopAllRefreshesAsync(); + +// handle response +``` + +### Response + +**[StopAllRefreshesResponse](../../Models/Requests/StopAllRefreshesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetSectionsPrefs + +Get a section's preferences for a metadata type + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); +GetSectionsPrefsRequest req = new GetSectionsPrefsRequest() { + Type = 460221, +}; + +var res = await sdk.Library.GetSectionsPrefsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [GetSectionsPrefsRequest](../../Models/Requests/GetSectionsPrefsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetSectionsPrefsResponse](../../Models/Requests/GetSectionsPrefsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## RefreshSectionsMetadata + +Tell PMS to refresh all section metadata + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +RefreshSectionsMetadataRequest req = new RefreshSectionsMetadataRequest() {}; + +var res = await sdk.Library.RefreshSectionsMetadataAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `request` | [RefreshSectionsMetadataRequest](../../Models/Requests/RefreshSectionsMetadataRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[RefreshSectionsMetadataResponse](../../Models/Requests/RefreshSectionsMetadataResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetTags + +Get all library tags of a type + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetTagsRequest req = new GetTagsRequest() {}; + +var res = await sdk.Library.GetTagsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `request` | [GetTagsRequest](../../Models/Requests/GetTagsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetTagsResponse](../../Models/Requests/GetTagsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteMetadataItem + +Delete a single metadata item from the library, deleting media as well + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteMetadataItemRequest req = new DeleteMetadataItemRequest() { + Ids = "", + Proxy = BoolInt.One, +}; + +var res = await sdk.Library.DeleteMetadataItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [DeleteMetadataItemRequest](../../Models/Requests/DeleteMetadataItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteMetadataItemResponse](../../Models/Requests/DeleteMetadataItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## EditMetadataItem + +Edit metadata items setting fields + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +EditMetadataItemRequest req = new EditMetadataItemRequest() { + Ids = new List() { + "", + "", + }, +}; + +var res = await sdk.Library.EditMetadataItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [EditMetadataItemRequest](../../Models/Requests/EditMetadataItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[EditMetadataItemResponse](../../Models/Requests/EditMetadataItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DetectAds + +Start the detection of ads in a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DetectAdsRequest req = new DetectAdsRequest() { + Ids = "", +}; + +var res = await sdk.Library.DetectAdsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [DetectAdsRequest](../../Models/Requests/DetectAdsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DetectAdsResponse](../../Models/Requests/DetectAdsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetAllItemLeaves + +Get the leaves for a metadata item such as the episodes in a show + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetAllItemLeavesRequest req = new GetAllItemLeavesRequest() { + Ids = "", +}; + +var res = await sdk.Library.GetAllItemLeavesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [GetAllItemLeavesRequest](../../Models/Requests/GetAllItemLeavesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetAllItemLeavesResponse](../../Models/Requests/GetAllItemLeavesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## AnalyzeMetadata + +Start the analysis of a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +AnalyzeMetadataRequest req = new AnalyzeMetadataRequest() { + Ids = "", +}; + +var res = await sdk.Library.AnalyzeMetadataAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [AnalyzeMetadataRequest](../../Models/Requests/AnalyzeMetadataRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[AnalyzeMetadataResponse](../../Models/Requests/AnalyzeMetadataResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GenerateThumbs + +Start the chapter thumb generation for an item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GenerateThumbsRequest req = new GenerateThumbsRequest() { + Ids = "", + Force = BoolInt.One, +}; + +var res = await sdk.Library.GenerateThumbsAsync(req); + // handle response ``` @@ -896,59 +996,3237 @@ var res = await sdk.Library.GetMetadataChildrenAsync( | Parameter | Type | Required | Description | | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `RatingKey` | *double* | :heavy_check_mark: | the id of the library item to return the children of. | -| `IncludeElements` | *string* | :heavy_minus_sign: | Adds additional elements to the response. Supported types are (Stream)
| +| `request` | [GenerateThumbsRequest](../../Models/Requests/GenerateThumbsRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response -**[GetMetadataChildrenResponse](../../Models/Requests/GetMetadataChildrenResponse.md)** +**[GenerateThumbsResponse](../../Models/Requests/GenerateThumbsResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetMetadataChildrenBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetMetadataChildrenUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## GetTopWatchedContent - -This endpoint will return the top watched content from libraries of a certain type +## DetectCredits +Start credit detection on a metadata item ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.GetTopWatchedContentAsync( - type: GetTopWatchedContentQueryParamType.TvShow, - includeGuids: GetTopWatchedContentQueryParamIncludeGuids.Enable +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); +DetectCreditsRequest req = new DetectCreditsRequest() { + Ids = "", + Force = BoolInt.One, + Manual = BoolInt.One, +}; + +var res = await sdk.Library.DetectCreditsAsync(req); + // handle response ``` ### Parameters -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Type` | [GetTopWatchedContentQueryParamType](../../Models/Requests/GetTopWatchedContentQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `IncludeGuids` | [GetTopWatchedContentQueryParamIncludeGuids](../../Models/Requests/GetTopWatchedContentQueryParamIncludeGuids.md) | :heavy_minus_sign: | Adds the Guid object to the response
| 1 | +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `request` | [DetectCreditsRequest](../../Models/Requests/DetectCreditsRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response -**[GetTopWatchedContentResponse](../../Models/Requests/GetTopWatchedContentResponse.md)** +**[DetectCreditsResponse](../../Models/Requests/DetectCreditsResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetTopWatchedContentBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetTopWatchedContentUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetExtras + +Get the extras for a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetExtrasRequest req = new GetExtrasRequest() { + Ids = "", +}; + +var res = await sdk.Library.GetExtrasAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [GetExtrasRequest](../../Models/Requests/GetExtrasRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetExtrasResponse](../../Models/Requests/GetExtrasResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## AddExtras + +Add an extra to a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +AddExtrasRequest req = new AddExtrasRequest() { + Ids = "", + Url = "https://super-mortise.biz/", +}; + +var res = await sdk.Library.AddExtrasAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [AddExtrasRequest](../../Models/Requests/AddExtrasRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[AddExtrasResponse](../../Models/Requests/AddExtrasResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetFile + +Get a bundle file for a metadata or media item. This is either an image or a mp3 (for a show's theme) + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetFileRequest req = new GetFileRequest() { + Ids = "", +}; + +var res = await sdk.Library.GetFileAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `request` | [GetFileRequest](../../Models/Requests/GetFileRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetFileResponse](../../Models/Requests/GetFileResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## StartBifGeneration + +Start the indexing (BIF generation) of an item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +StartBifGenerationRequest req = new StartBifGenerationRequest() { + Ids = "", + Force = BoolInt.One, +}; + +var res = await sdk.Library.StartBifGenerationAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [StartBifGenerationRequest](../../Models/Requests/StartBifGenerationRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[StartBifGenerationResponse](../../Models/Requests/StartBifGenerationResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DetectIntros + +Start the detection of intros in a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DetectIntrosRequest req = new DetectIntrosRequest() { + Ids = "", + Force = BoolInt.One, +}; + +var res = await sdk.Library.DetectIntrosAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [DetectIntrosRequest](../../Models/Requests/DetectIntrosRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DetectIntrosResponse](../../Models/Requests/DetectIntrosResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## CreateMarker + +Create a marker for this user on the metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +CreateMarkerRequest req = new CreateMarkerRequest() { + Ids = "", + Type = 248391, + StartTimeOffset = 535191, + Attributes = new Attributes() {}, +}; + +var res = await sdk.Library.CreateMarkerAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [CreateMarkerRequest](../../Models/Requests/CreateMarkerRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[CreateMarkerResponse](../../Models/Requests/CreateMarkerResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## MatchItem + +Match a metadata item to a guid + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +MatchItemRequest req = new MatchItemRequest() { + Ids = "", +}; + +var res = await sdk.Library.MatchItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [MatchItemRequest](../../Models/Requests/MatchItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[MatchItemResponse](../../Models/Requests/MatchItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ListMatches + +Get the list of metadata matches for a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ListMatchesRequest req = new ListMatchesRequest() { + Ids = "", + Manual = BoolInt.One, +}; + +var res = await sdk.Library.ListMatchesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [ListMatchesRequest](../../Models/Requests/ListMatchesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ListMatchesResponse](../../Models/Requests/ListMatchesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## MergeItems + +Merge a metadata item with other items + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +MergeItemsRequest req = new MergeItemsRequest() { + IdsPathParameter = "", +}; + +var res = await sdk.Library.MergeItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `request` | [MergeItemsRequest](../../Models/Requests/MergeItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[MergeItemsResponse](../../Models/Requests/MergeItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ListSonicallySimilar + +Get the nearest tracks, sonically, to the provided track + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ListSonicallySimilarRequest req = new ListSonicallySimilarRequest() { + Ids = "", +}; + +var res = await sdk.Library.ListSonicallySimilarAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `request` | [ListSonicallySimilarRequest](../../Models/Requests/ListSonicallySimilarRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ListSonicallySimilarResponse](../../Models/Requests/ListSonicallySimilarResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## SetItemPreferences + +Set the preferences on a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +SetItemPreferencesRequest req = new SetItemPreferencesRequest() { + Ids = "", +}; + +var res = await sdk.Library.SetItemPreferencesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [SetItemPreferencesRequest](../../Models/Requests/SetItemPreferencesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SetItemPreferencesResponse](../../Models/Requests/SetItemPreferencesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## RefreshItemsMetadata + +Refresh a metadata item from the agent + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +RefreshItemsMetadataRequest req = new RefreshItemsMetadataRequest() { + Ids = "", + MarkUpdated = BoolInt.One, +}; + +var res = await sdk.Library.RefreshItemsMetadataAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `request` | [RefreshItemsMetadataRequest](../../Models/Requests/RefreshItemsMetadataRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[RefreshItemsMetadataResponse](../../Models/Requests/RefreshItemsMetadataResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetRelatedItems + +Get a hub of related items to a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetRelatedItemsRequest req = new GetRelatedItemsRequest() { + Ids = "", +}; + +var res = await sdk.Library.GetRelatedItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [GetRelatedItemsRequest](../../Models/Requests/GetRelatedItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetRelatedItemsResponse](../../Models/Requests/GetRelatedItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ListSimilar + +Get a list of similar items to a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ListSimilarRequest req = new ListSimilarRequest() { + Ids = "", +}; + +var res = await sdk.Library.ListSimilarAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [ListSimilarRequest](../../Models/Requests/ListSimilarRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ListSimilarResponse](../../Models/Requests/ListSimilarResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## SplitItem + +Split a metadata item into multiple items + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +SplitItemRequest req = new SplitItemRequest() { + Ids = "", +}; + +var res = await sdk.Library.SplitItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [SplitItemRequest](../../Models/Requests/SplitItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SplitItemResponse](../../Models/Requests/SplitItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## AddSubtitles + +Add a subtitle to a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +AddSubtitlesRequest req = new AddSubtitlesRequest() { + Ids = "", + Forced = BoolInt.One, + HearingImpaired = BoolInt.One, +}; + +var res = await sdk.Library.AddSubtitlesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [AddSubtitlesRequest](../../Models/Requests/AddSubtitlesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[AddSubtitlesResponse](../../Models/Requests/AddSubtitlesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetItemTree + +Get a tree of metadata items, such as the seasons/episodes of a show + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetItemTreeRequest req = new GetItemTreeRequest() { + Ids = "", +}; + +var res = await sdk.Library.GetItemTreeAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [GetItemTreeRequest](../../Models/Requests/GetItemTreeRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetItemTreeResponse](../../Models/Requests/GetItemTreeResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## Unmatch + +Unmatch a metadata item to info fetched from the agent + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +UnmatchRequest req = new UnmatchRequest() { + Ids = "", +}; + +var res = await sdk.Library.UnmatchAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `request` | [UnmatchRequest](../../Models/Requests/UnmatchRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[UnmatchResponse](../../Models/Requests/UnmatchResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ListTopUsers + +Get the list of users which have played this item starting with the most + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ListTopUsersRequest req = new ListTopUsersRequest() { + Ids = "", +}; + +var res = await sdk.Library.ListTopUsersAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [ListTopUsersRequest](../../Models/Requests/ListTopUsersRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ListTopUsersResponse](../../Models/Requests/ListTopUsersResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DetectVoiceActivity + +Start the detection of voice in a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DetectVoiceActivityRequest req = new DetectVoiceActivityRequest() { + Ids = "", + Force = BoolInt.One, + Manual = BoolInt.One, +}; + +var res = await sdk.Library.DetectVoiceActivityAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [DetectVoiceActivityRequest](../../Models/Requests/DetectVoiceActivityRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DetectVoiceActivityResponse](../../Models/Requests/DetectVoiceActivityResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetAugmentationStatus + +Get augmentation status and potentially wait for completion + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetAugmentationStatusRequest req = new GetAugmentationStatusRequest() { + AugmentationId = "", + Wait = BoolInt.One, +}; + +var res = await sdk.Library.GetAugmentationStatusAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `request` | [GetAugmentationStatusRequest](../../Models/Requests/GetAugmentationStatusRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetAugmentationStatusResponse](../../Models/Requests/GetAugmentationStatusResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## SetStreamSelection + +Set which streams (audio/subtitle) are selected by this user + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +SetStreamSelectionRequest req = new SetStreamSelectionRequest() { + PartId = 360489, + AllParts = BoolInt.One, +}; + +var res = await sdk.Library.SetStreamSelectionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [SetStreamSelectionRequest](../../Models/Requests/SetStreamSelectionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SetStreamSelectionResponse](../../Models/Requests/SetStreamSelectionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetPerson + +Get details for a single actor. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetPersonRequest req = new GetPersonRequest() { + PersonId = "", +}; + +var res = await sdk.Library.GetPersonAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [GetPersonRequest](../../Models/Requests/GetPersonRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetPersonResponse](../../Models/Requests/GetPersonResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ListPersonMedia + +Get all the media for a single actor. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ListPersonMediaRequest req = new ListPersonMediaRequest() { + PersonId = "", +}; + +var res = await sdk.Library.ListPersonMediaAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [ListPersonMediaRequest](../../Models/Requests/ListPersonMediaRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ListPersonMediaResponse](../../Models/Requests/ListPersonMediaResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteLibrarySection + +Delete a library section by id + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteLibrarySectionRequest req = new DeleteLibrarySectionRequest() { + SectionId = "", + Async = BoolInt.One, +}; + +var res = await sdk.Library.DeleteLibrarySectionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `request` | [DeleteLibrarySectionRequest](../../Models/Requests/DeleteLibrarySectionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteLibrarySectionResponse](../../Models/Requests/DeleteLibrarySectionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetLibraryDetails + +Returns details for the library. This can be thought of as an interstitial endpoint because it contains information about the library, rather than content itself. It often contains a list of `Directory` metadata objects: These used to be used by clients to build a menuing system. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetLibraryDetailsRequest req = new GetLibraryDetailsRequest() { + SectionId = "", + IncludeDetails = BoolInt.One, +}; + +var res = await sdk.Library.GetLibraryDetailsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [GetLibraryDetailsRequest](../../Models/Requests/GetLibraryDetailsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetLibraryDetailsResponse](../../Models/Requests/GetLibraryDetailsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## EditSection + +Edit a library section by id setting parameters + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +EditSectionRequest req = new EditSectionRequest() { + SectionId = "", + Agent = "", + Locations = new List() { + "O:\fatboy\Media\Ripped\Music", + "O:\fatboy\Media\My Music", + }, + Prefs = new EditSectionQueryParamPrefs() {}, +}; + +var res = await sdk.Library.EditSectionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [EditSectionRequest](../../Models/Requests/EditSectionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[EditSectionResponse](../../Models/Requests/EditSectionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## UpdateItems + +This endpoint takes an large possible set of values. Here are some examples. +- **Parameters, extra documentation** + - artist.title.value + - When used with track, both artist.title.value and album.title.value need to be specified + - title.value usage + - Summary + - Tracks always rename and never merge + - Albums and Artists + - if single item and item without title does not exist, it is renamed. + - if single item and item with title does exist they are merged. + - if multiple they are always merged. + - Tracks + - Works as expected will update the track's title + - Single track: `/library/sections/{id}/all?type=10&id=42&title.value=NewName` + - Multiple tracks: `/library/sections/{id}/all?type=10&id=42,43,44&title.value=NewName` + - All tracks: `/library/sections/{id}/all?type=10&title.value=NewName` + - Albums + - Functionality changes depending on the existence of an album with the same title + - Album exists + - Single album: `/library/sections/{id}/all?type=9&id=42&title.value=Album 2` + - Album with id 42 is merged into album titled "Album 2" + - Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=Moo Album` + - All albums are merged into the existing album titled "Moo Album" + - Album does not exist + - Single album: `/library/sections/{id}/all?type=9&id=42&title.value=NewAlbumTitle` + - Album with id 42 has title modified to "NewAlbumTitle" + - Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=NewAlbumTitle` + - All albums are merged into a new album with title="NewAlbumTitle" + - Artists + - Functionaly changes depending on the existence of an artist with the same title. + - Artist exists + - Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=Artist 2` + - Artist with id 42 is merged into existing artist titled "Artist 2" + - Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=Artist 3` + - All artists are merged into the existing artist titled "Artist 3" + - Artist does not exist + - Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=NewArtistTitle` + - Artist with id 42 has title modified to "NewArtistTitle" + - Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=NewArtistTitle` + - All artists are merged into a new artist with title="NewArtistTitle" + +- **Notes** + - Technically square brackets are not allowed in an URI except the Internet Protocol Literal Address + - RFC3513: A host identified by an Internet Protocol literal address, version 6 [RFC3513] or later, is distinguished by enclosing the IP literal within square brackets ("[" and "]"). This is the only place where square bracket characters are allowed in the URI syntax. + - Escaped square brackets are allowed, but don't render well + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +UpdateItemsRequest req = new UpdateItemsRequest() { + SectionId = "", + FieldLocked = BoolInt.One, +}; + +var res = await sdk.Library.UpdateItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [UpdateItemsRequest](../../Models/Requests/UpdateItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[UpdateItemsResponse](../../Models/Requests/UpdateItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## StartAnalysis + +Start analysis of all items in a section. If BIF generation is enabled, this will also be started on this section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +StartAnalysisRequest req = new StartAnalysisRequest() { + SectionId = 158829, +}; + +var res = await sdk.Library.StartAnalysisAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `request` | [StartAnalysisRequest](../../Models/Requests/StartAnalysisRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[StartAnalysisResponse](../../Models/Requests/StartAnalysisResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## Autocomplete + +The field to autocomplete on is specified by the {field}.query parameter. For example `genre.query` or `title.query`. +Returns a set of items from the filtered items whose {field} starts with {field}.query. In the results, a {field}.queryRange will be present to express the range of the match + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +AutocompleteRequest req = new AutocompleteRequest() { + SectionId = 942007, +}; + +var res = await sdk.Library.AutocompleteAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [AutocompleteRequest](../../Models/Requests/AutocompleteRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[AutocompleteResponse](../../Models/Requests/AutocompleteResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetCollections + +Get all collections in a section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetCollectionsRequest req = new GetCollectionsRequest() { + SectionId = 348838, +}; + +var res = await sdk.Library.GetCollectionsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [GetCollectionsRequest](../../Models/Requests/GetCollectionsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetCollectionsResponse](../../Models/Requests/GetCollectionsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetCommon + +Represents a "Common" item. It contains only the common attributes of the items selected by the provided filter +Fields which are not common will be expressed in the `mixedFields` field + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetCommonRequest req = new GetCommonRequest() { + SectionId = 298154, +}; + +var res = await sdk.Library.GetCommonAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [GetCommonRequest](../../Models/Requests/GetCommonRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetCommonResponse](../../Models/Requests/GetCommonResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## EmptyTrash + +Empty trash in the section, permanently deleting media/metadata for missing media + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +EmptyTrashRequest req = new EmptyTrashRequest() { + SectionId = 30052, +}; + +var res = await sdk.Library.EmptyTrashAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `request` | [EmptyTrashRequest](../../Models/Requests/EmptyTrashRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[EmptyTrashResponse](../../Models/Requests/EmptyTrashResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetSectionFilters + +Get common filters on a section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetSectionFiltersRequest req = new GetSectionFiltersRequest() { + SectionId = 380557, +}; + +var res = await sdk.Library.GetSectionFiltersAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [GetSectionFiltersRequest](../../Models/Requests/GetSectionFiltersRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetSectionFiltersResponse](../../Models/Requests/GetSectionFiltersResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetFirstCharacters + +Get list of first characters in this section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetFirstCharactersRequest req = new GetFirstCharactersRequest() { + SectionId = 3947, +}; + +var res = await sdk.Library.GetFirstCharactersAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [GetFirstCharactersRequest](../../Models/Requests/GetFirstCharactersRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetFirstCharactersResponse](../../Models/Requests/GetFirstCharactersResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteIndexes + +Delete all the indexes in a section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteIndexesRequest req = new DeleteIndexesRequest() { + SectionId = 588437, +}; + +var res = await sdk.Library.DeleteIndexesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `request` | [DeleteIndexesRequest](../../Models/Requests/DeleteIndexesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteIndexesResponse](../../Models/Requests/DeleteIndexesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteIntros + +Delete all the intro markers in a section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteIntrosRequest req = new DeleteIntrosRequest() { + SectionId = 498656, +}; + +var res = await sdk.Library.DeleteIntrosAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [DeleteIntrosRequest](../../Models/Requests/DeleteIntrosRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteIntrosResponse](../../Models/Requests/DeleteIntrosResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetSectionPreferences + +Get the prefs for a section by id and potentially overriding the agent + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetSectionPreferencesRequest req = new GetSectionPreferencesRequest() { + SectionId = 754869, +}; + +var res = await sdk.Library.GetSectionPreferencesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `request` | [GetSectionPreferencesRequest](../../Models/Requests/GetSectionPreferencesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetSectionPreferencesResponse](../../Models/Requests/GetSectionPreferencesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## SetSectionPreferences + +Set the prefs for a section by id + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +SetSectionPreferencesRequest req = new SetSectionPreferencesRequest() { + SectionId = 349936, + Prefs = new SetSectionPreferencesQueryParamPrefs() {}, +}; + +var res = await sdk.Library.SetSectionPreferencesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `request` | [SetSectionPreferencesRequest](../../Models/Requests/SetSectionPreferencesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SetSectionPreferencesResponse](../../Models/Requests/SetSectionPreferencesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## CancelRefresh + +Cancel the refresh of a section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +CancelRefreshRequest req = new CancelRefreshRequest() { + SectionId = 326852, +}; + +var res = await sdk.Library.CancelRefreshAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `request` | [CancelRefreshRequest](../../Models/Requests/CancelRefreshRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[CancelRefreshResponse](../../Models/Requests/CancelRefreshResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## RefreshSection + +Start a refresh of this section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +RefreshSectionRequest req = new RefreshSectionRequest() { + SectionId = 450300, + Force = BoolInt.One, +}; + +var res = await sdk.Library.RefreshSectionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [RefreshSectionRequest](../../Models/Requests/RefreshSectionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[RefreshSectionResponse](../../Models/Requests/RefreshSectionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetAvailableSorts + +Get the sort mechanisms available in a section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetAvailableSortsRequest req = new GetAvailableSortsRequest() { + SectionId = 212498, +}; + +var res = await sdk.Library.GetAvailableSortsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [GetAvailableSortsRequest](../../Models/Requests/GetAvailableSortsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetAvailableSortsResponse](../../Models/Requests/GetAvailableSortsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetStreamLevels + +The the loudness of a stream in db, one entry per 100ms + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetStreamLevelsRequest req = new GetStreamLevelsRequest() { + StreamId = 447611, +}; + +var res = await sdk.Library.GetStreamLevelsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [GetStreamLevelsRequest](../../Models/Requests/GetStreamLevelsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetStreamLevelsResponse](../../Models/Requests/GetStreamLevelsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetStreamLoudness + +The the loudness of a stream in db, one number per line, one entry per 100ms + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetStreamLoudnessRequest req = new GetStreamLoudnessRequest() { + StreamId = 277271, +}; + +var res = await sdk.Library.GetStreamLoudnessAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [GetStreamLoudnessRequest](../../Models/Requests/GetStreamLoudnessRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetStreamLoudnessResponse](../../Models/Requests/GetStreamLoudnessResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetChapterImage + +Get a single chapter image for a piece of media + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetChapterImageRequest req = new GetChapterImageRequest() { + MediaId = 892563, + Chapter = 48348, +}; + +var res = await sdk.Library.GetChapterImageAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [GetChapterImageRequest](../../Models/Requests/GetChapterImageRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetChapterImageResponse](../../Models/Requests/GetChapterImageResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## SetItemArtwork + +Set the artwork, thumb, element for a metadata item +Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +SetItemArtworkRequest req = new SetItemArtworkRequest() { + Ids = "", + Element = Element.Banner, +}; + +var res = await sdk.Library.SetItemArtworkAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [SetItemArtworkRequest](../../Models/Requests/SetItemArtworkRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SetItemArtworkResponse](../../Models/Requests/SetItemArtworkResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## UpdateItemArtwork + +Set the artwork, thumb, element for a metadata item +Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +UpdateItemArtworkRequest req = new UpdateItemArtworkRequest() { + Ids = "", + Element = PathParamElement.ClearLogo, +}; + +var res = await sdk.Library.UpdateItemArtworkAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [UpdateItemArtworkRequest](../../Models/Requests/UpdateItemArtworkRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[UpdateItemArtworkResponse](../../Models/Requests/UpdateItemArtworkResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteMarker + +Delete a marker for this user on the metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteMarkerRequest req = new DeleteMarkerRequest() { + Ids = "", + Marker = "", +}; + +var res = await sdk.Library.DeleteMarkerAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [DeleteMarkerRequest](../../Models/Requests/DeleteMarkerRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteMarkerResponse](../../Models/Requests/DeleteMarkerResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## EditMarker + +Edit a marker for this user on the metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +EditMarkerRequest req = new EditMarkerRequest() { + Ids = "", + Marker = "", + Type = 884347, + StartTimeOffset = 517251, + Attributes = new QueryParamAttributes() {}, +}; + +var res = await sdk.Library.EditMarkerAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `request` | [EditMarkerRequest](../../Models/Requests/EditMarkerRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[EditMarkerResponse](../../Models/Requests/EditMarkerResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteMediaItem + +Delete a single media from a metadata item in the library + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteMediaItemRequest req = new DeleteMediaItemRequest() { + Ids = "", + MediaItem = "", + Proxy = BoolInt.One, +}; + +var res = await sdk.Library.DeleteMediaItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [DeleteMediaItemRequest](../../Models/Requests/DeleteMediaItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteMediaItemResponse](../../Models/Requests/DeleteMediaItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetPartIndex + +Get BIF index for a part by index type + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetPartIndexRequest req = new GetPartIndexRequest() { + PartId = 724750, + Index = Index.Sd, +}; + +var res = await sdk.Library.GetPartIndexAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [GetPartIndexRequest](../../Models/Requests/GetPartIndexRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetPartIndexResponse](../../Models/Requests/GetPartIndexResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteCollection + +Delete a library collection from the PMS + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteCollectionRequest req = new DeleteCollectionRequest() { + SectionId = 283619, + CollectionId = 680895, +}; + +var res = await sdk.Library.DeleteCollectionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [DeleteCollectionRequest](../../Models/Requests/DeleteCollectionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteCollectionResponse](../../Models/Requests/DeleteCollectionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetSectionImage + +Get a composite image of images in this section + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetSectionImageRequest req = new GetSectionImageRequest() { + SectionId = 925611, + UpdatedAt = 117413, +}; + +var res = await sdk.Library.GetSectionImageAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [GetSectionImageRequest](../../Models/Requests/GetSectionImageRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetSectionImageResponse](../../Models/Requests/GetSectionImageResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteStream + +Delete a stream. Only applies to downloaded subtitle streams or a sidecar subtitle when media deletion is enabled. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteStreamRequest req = new DeleteStreamRequest() { + StreamId = 841510, + Ext = "", +}; + +var res = await sdk.Library.DeleteStreamAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [DeleteStreamRequest](../../Models/Requests/DeleteStreamRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteStreamResponse](../../Models/Requests/DeleteStreamResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetStream + +Get a stream (such as a sidecar subtitle stream) + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetStreamRequest req = new GetStreamRequest() { + StreamId = 314506, + Ext = "", + AutoAdjustSubtitle = BoolInt.One, +}; + +var res = await sdk.Library.GetStreamAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [GetStreamRequest](../../Models/Requests/GetStreamRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetStreamResponse](../../Models/Requests/GetStreamResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## SetStreamOffset + +Set a stream offset in ms. This may not be respected by all clients + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +SetStreamOffsetRequest req = new SetStreamOffsetRequest() { + StreamId = 606295, + Ext = "", +}; + +var res = await sdk.Library.SetStreamOffsetAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [SetStreamOffsetRequest](../../Models/Requests/SetStreamOffsetRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SetStreamOffsetResponse](../../Models/Requests/SetStreamOffsetResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetItemArtwork + +Get the artwork, thumb, element for a metadata item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetItemArtworkRequest req = new GetItemArtworkRequest() { + Ids = "", + Element = GetItemArtworkPathParamElement.Poster, + Timestamp = 999555, +}; + +var res = await sdk.Library.GetItemArtworkAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [GetItemArtworkRequest](../../Models/Requests/GetItemArtworkRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetItemArtworkResponse](../../Models/Requests/GetItemArtworkResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetMediaPart + +Get a media part for streaming or download. + - streaming: This is the default scenario. Bandwidth usage on this endpoint will be guaranteed (on the server's end) to be at least the bandwidth reservation given in the decision. If no decision exists, an ad-hoc decision will be created if sufficient bandwidth exists. Clients should not rely on ad-hoc decisions being made as this may be removed in the future. + - download: Indicated if the query parameter indicates this is a download. Bandwidth will be prioritized behind playbacks and will get a fair share of what remains. + + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetMediaPartRequest req = new GetMediaPartRequest() { + PartId = 877105, + Changestamp = 970622, + Filename = "example.file", + Download = BoolInt.One, +}; + +var res = await sdk.Library.GetMediaPartAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [GetMediaPartRequest](../../Models/Requests/GetMediaPartRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetMediaPartResponse](../../Models/Requests/GetMediaPartResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetImageFromBif + +Extract an image from the BIF for a part at a particular offset + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetImageFromBifRequest req = new GetImageFromBifRequest() { + PartId = 304273, + Index = PathParamIndex.Sd, + Offset = 939569, +}; + +var res = await sdk.Library.GetImageFromBifAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [GetImageFromBifRequest](../../Models/Requests/GetImageFromBifRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetImageFromBifResponse](../../Models/Requests/GetImageFromBifResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/librarycollections/README.md b/docs/sdks/librarycollections/README.md new file mode 100644 index 0000000..08fcc47 --- /dev/null +++ b/docs/sdks/librarycollections/README.md @@ -0,0 +1,171 @@ +# LibraryCollections +(*LibraryCollections*) + +## Overview + +Endpoints for manipulating collections. In addition to these endpoints, `/library/collections/:collectionId/X` will be rerouted to `/library/metadata/:collectionId/X` and respond to those endpoints as well. + +### Available Operations + +* [AddCollectionItems](#addcollectionitems) - Add items to a collection +* [DeleteCollectionItem](#deletecollectionitem) - Delete an item from a collection +* [MoveCollectionItem](#movecollectionitem) - Reorder an item in the collection + +## AddCollectionItems + +Add items to a collection by uri + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +AddCollectionItemsRequest req = new AddCollectionItemsRequest() { + CollectionId = 338144, + Uri = "https://expensive-bakeware.com", +}; + +var res = await sdk.LibraryCollections.AddCollectionItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [AddCollectionItemsRequest](../../Models/Requests/AddCollectionItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[AddCollectionItemsResponse](../../Models/Requests/AddCollectionItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteCollectionItem + +Delete an item from a collection + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteCollectionItemRequest req = new DeleteCollectionItemRequest() { + CollectionId = 320928, + ItemId = 406983, +}; + +var res = await sdk.LibraryCollections.DeleteCollectionItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `request` | [DeleteCollectionItemRequest](../../Models/Requests/DeleteCollectionItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteCollectionItemResponse](../../Models/Requests/DeleteCollectionItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## MoveCollectionItem + +Reorder items in a collection with one item after another + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +MoveCollectionItemRequest req = new MoveCollectionItemRequest() { + CollectionId = 239532, + ItemId = 513864, +}; + +var res = await sdk.LibraryCollections.MoveCollectionItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [MoveCollectionItemRequest](../../Models/Requests/MoveCollectionItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[MoveCollectionItemResponse](../../Models/Requests/MoveCollectionItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/libraryplaylists/README.md b/docs/sdks/libraryplaylists/README.md new file mode 100644 index 0000000..9e8d725 --- /dev/null +++ b/docs/sdks/libraryplaylists/README.md @@ -0,0 +1,653 @@ +# LibraryPlaylists +(*LibraryPlaylists*) + +## Overview + +Endpoints for manipulating playlists. + +### Available Operations + +* [CreatePlaylist](#createplaylist) - Create a Playlist +* [UploadPlaylist](#uploadplaylist) - Upload +* [DeletePlaylist](#deleteplaylist) - Delete a Playlist +* [UpdatePlaylist](#updateplaylist) - Editing a Playlist +* [GetPlaylistGenerators](#getplaylistgenerators) - Get a playlist's generators +* [ClearPlaylistItems](#clearplaylistitems) - Clearing a playlist +* [AddPlaylistItems](#addplaylistitems) - Adding to a Playlist +* [DeletePlaylistItem](#deleteplaylistitem) - Delete a Generator +* [GetPlaylistGenerator](#getplaylistgenerator) - Get a playlist generator +* [GetPlaylistGeneratorItems](#getplaylistgeneratoritems) - Get a playlist generator's items +* [MovePlaylistItem](#moveplaylistitem) - Moving items in a playlist +* [RefreshPlaylist](#refreshplaylist) - Reprocess a generator + +## CreatePlaylist + +Create a new playlist. By default the playlist is blank. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +CreatePlaylistRequest req = new CreatePlaylistRequest() { + Uri = "https://short-term-disconnection.name/", +}; + +var res = await sdk.LibraryPlaylists.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)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## 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 LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +UploadPlaylistRequest req = new UploadPlaylistRequest() { + Path = "/home/barkley/playlist.m3u", + Force = BoolInt.One, +}; + +var res = await sdk.LibraryPlaylists.UploadPlaylistAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [UploadPlaylistRequest](../../Models/Requests/UploadPlaylistRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[UploadPlaylistResponse](../../Models/Requests/UploadPlaylistResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeletePlaylist + +Deletes a playlist by provided id + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeletePlaylistRequest req = new DeletePlaylistRequest() { + PlaylistId = 343293, +}; + +var res = await sdk.LibraryPlaylists.DeletePlaylistAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [DeletePlaylistRequest](../../Models/Requests/DeletePlaylistRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeletePlaylistResponse](../../Models/Requests/DeletePlaylistResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## UpdatePlaylist + +Edits a playlist in the same manner as [editing metadata](#tag/Provider/operation/metadataPutItem) + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +UpdatePlaylistRequest req = new UpdatePlaylistRequest() { + PlaylistId = 157966, +}; + +var res = await sdk.LibraryPlaylists.UpdatePlaylistAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [UpdatePlaylistRequest](../../Models/Requests/UpdatePlaylistRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[UpdatePlaylistResponse](../../Models/Requests/UpdatePlaylistResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetPlaylistGenerators + +Get all the generators in a playlist + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetPlaylistGeneratorsRequest req = new GetPlaylistGeneratorsRequest() { + PlaylistId = 162342, +}; + +var res = await sdk.LibraryPlaylists.GetPlaylistGeneratorsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `request` | [GetPlaylistGeneratorsRequest](../../Models/Requests/GetPlaylistGeneratorsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetPlaylistGeneratorsResponse](../../Models/Requests/GetPlaylistGeneratorsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ClearPlaylistItems + +Clears a playlist, only works with dumb playlists. Returns the playlist. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ClearPlaylistItemsRequest req = new ClearPlaylistItemsRequest() { + PlaylistId = 552140, +}; + +var res = await sdk.LibraryPlaylists.ClearPlaylistItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [ClearPlaylistItemsRequest](../../Models/Requests/ClearPlaylistItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ClearPlaylistItemsResponse](../../Models/Requests/ClearPlaylistItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## AddPlaylistItems + +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 LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +AddPlaylistItemsRequest req = new AddPlaylistItemsRequest() { + PlaylistId = 533723, +}; + +var res = await sdk.LibraryPlaylists.AddPlaylistItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [AddPlaylistItemsRequest](../../Models/Requests/AddPlaylistItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[AddPlaylistItemsResponse](../../Models/Requests/AddPlaylistItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeletePlaylistItem + +Deletes an item from a playlist. Only works with dumb playlists. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeletePlaylistItemRequest req = new DeletePlaylistItemRequest() { + PlaylistId = 981646, + GeneratorId = 194010, +}; + +var res = await sdk.LibraryPlaylists.DeletePlaylistItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [DeletePlaylistItemRequest](../../Models/Requests/DeletePlaylistItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeletePlaylistItemResponse](../../Models/Requests/DeletePlaylistItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetPlaylistGenerator + +Get a playlist's generator. Only used for optimized versions + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetPlaylistGeneratorRequest req = new GetPlaylistGeneratorRequest() { + PlaylistId = 744880, + GeneratorId = 322168, +}; + +var res = await sdk.LibraryPlaylists.GetPlaylistGeneratorAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `request` | [GetPlaylistGeneratorRequest](../../Models/Requests/GetPlaylistGeneratorRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetPlaylistGeneratorResponse](../../Models/Requests/GetPlaylistGeneratorResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetPlaylistGeneratorItems + +Get a playlist generator's items + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetPlaylistGeneratorItemsRequest req = new GetPlaylistGeneratorItemsRequest() { + PlaylistId = 77230, + GeneratorId = 979714, +}; + +var res = await sdk.LibraryPlaylists.GetPlaylistGeneratorItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `request` | [GetPlaylistGeneratorItemsRequest](../../Models/Requests/GetPlaylistGeneratorItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetPlaylistGeneratorItemsResponse](../../Models/Requests/GetPlaylistGeneratorItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## MovePlaylistItem + +Moves an item in a playlist. Only works with dumb playlists. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +MovePlaylistItemRequest req = new MovePlaylistItemRequest() { + PlaylistId = 940298, + PlaylistItemId = 375626, +}; + +var res = await sdk.LibraryPlaylists.MovePlaylistItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [MovePlaylistItemRequest](../../Models/Requests/MovePlaylistItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[MovePlaylistItemResponse](../../Models/Requests/MovePlaylistItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## RefreshPlaylist + +Make a generator reprocess (refresh) + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +RefreshPlaylistRequest req = new RefreshPlaylistRequest() { + PlaylistId = 895314, + GeneratorId = 629742, + MetadataId = 724422, + Action = Action.Disable, +}; + +var res = await sdk.LibraryPlaylists.RefreshPlaylistAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [RefreshPlaylistRequest](../../Models/Requests/RefreshPlaylistRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[RefreshPlaylistResponse](../../Models/Requests/RefreshPlaylistResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/livetv/README.md b/docs/sdks/livetv/README.md new file mode 100644 index 0000000..ecd99a6 --- /dev/null +++ b/docs/sdks/livetv/README.md @@ -0,0 +1,201 @@ +# LiveTV +(*LiveTV*) + +## Overview + +LiveTV contains the playback sessions of a channel from a DVR device + + +### Available Operations + +* [GetSessions](#getsessions) - Get all sessions +* [GetLiveTVSession](#getlivetvsession) - Get a single session +* [GetSessionPlaylistIndex](#getsessionplaylistindex) - Get a session playlist index +* [GetSessionSegment](#getsessionsegment) - Get a single session segment + +## GetSessions + +Get all livetv sessions and metadata + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.LiveTV.GetSessionsAsync(); + +// handle response +``` + +### Response + +**[GetSessionsResponse](../../Models/Requests/GetSessionsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetLiveTVSession + +Get a single livetv session and metadata + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetLiveTVSessionRequest req = new GetLiveTVSessionRequest() { + SessionId = "", +}; + +var res = await sdk.LiveTV.GetLiveTVSessionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [GetLiveTVSessionRequest](../../Models/Requests/GetLiveTVSessionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetLiveTVSessionResponse](../../Models/Requests/GetLiveTVSessionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetSessionPlaylistIndex + +Get a playlist index for playing this session + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetSessionPlaylistIndexRequest req = new GetSessionPlaylistIndexRequest() { + SessionId = "", + ConsumerId = "", +}; + +var res = await sdk.LiveTV.GetSessionPlaylistIndexAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `request` | [GetSessionPlaylistIndexRequest](../../Models/Requests/GetSessionPlaylistIndexRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetSessionPlaylistIndexResponse](../../Models/Requests/GetSessionPlaylistIndexResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetSessionSegment + +Get a single LiveTV session segment + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetSessionSegmentRequest req = new GetSessionSegmentRequest() { + SessionId = "", + ConsumerId = "", + SegmentId = "", +}; + +var res = await sdk.LiveTV.GetSessionSegmentAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [GetSessionSegmentRequest](../../Models/Requests/GetSessionSegmentRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetSessionSegmentResponse](../../Models/Requests/GetSessionSegmentResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/log/README.md b/docs/sdks/log/README.md index 8321a2d..8a87abc 100644 --- a/docs/sdks/log/README.md +++ b/docs/sdks/log/README.md @@ -3,98 +3,32 @@ ## Overview -Submit logs to the Log Handler for Plex Media Server - +Logging mechanism to allow clients to log to the server ### Available Operations -* [LogLine](#logline) - Logging a single line message. -* [LogMultiLine](#logmultiline) - Logging a multi-line message -* [EnablePaperTrail](#enablepapertrail) - Enabling Papertrail +* [WriteLog](#writelog) - Logging a multi-line message to the Plex Media Server log +* [WriteMessage](#writemessage) - Logging a single-line message to the Plex Media Server log +* [EnablePapertrail](#enablepapertrail) - Enabling Papertrail -## LogLine +## WriteLog -This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log. +This endpoint will write multiple lines to the main Plex Media Server log in a single request. It takes a set of query strings as would normally sent to the above PUT endpoint as a linefeed-separated block of POST data. The parameters for each query string match as above. ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; +using System; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI(token: ""); -var res = await sdk.Log.LogLineAsync( - level: Level.Three, - message: "Test log message", - source: "Postman" -); +byte[] req = System.Text.Encoding.UTF8.GetBytes("0x0Ce2fFcEBF"); -// 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. | Test log message | -| `Source` | *string* | :heavy_check_mark: | a string indicating the source of the message. | Postman | - -### Response - -**[LogLineResponse](../../Models/Requests/LogLineResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.LogLineBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.LogLineUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## LogMultiLine - -This endpoint allows for the batch addition of log entries to the main Plex Media Server log. -It accepts a text/plain request body, where each line represents a distinct log entry. -Each log entry consists of URL-encoded key-value pairs, specifying log attributes such as 'level', 'message', and 'source'. - -Log entries are separated by a newline character (`\n`). -Each entry's parameters should be URL-encoded to ensure accurate parsing and handling of special characters. -This method is efficient for logging multiple entries in a single API call, reducing the overhead of multiple individual requests. - -The 'level' parameter specifies the log entry's severity or importance, with the following integer values: -- `0`: Error - Critical issues that require immediate attention. -- `1`: Warning - Important events that are not critical but may indicate potential issues. -- `2`: Info - General informational messages about system operation. -- `3`: Debug - Detailed information useful for debugging purposes. -- `4`: Verbose - Highly detailed diagnostic information for in-depth analysis. - -The 'message' parameter contains the log text, and 'source' identifies the log message's origin (e.g., an application name or module). - -Example of a single log entry format: -`level=4&message=Sample%20log%20entry&source=applicationName` - -Ensure each parameter is properly URL-encoded to avoid interpretation issues. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -string req = @"level=4&message=Test%20message%201&source=postman -level=3&message=Test%20message%202&source=postman -level=1&message=Test%20message%203&source=postman"; - -var res = await sdk.Log.LogMultiLineAsync(req); +var res = await sdk.Log.WriteLogAsync(req); // handle response ``` @@ -103,47 +37,120 @@ var res = await sdk.Log.LogMultiLineAsync(req); | Parameter | Type | Required | Description | | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | -| `request` | *string* | :heavy_check_mark: | The request object to use for the request. | +| `request` | *byte[]* | :heavy_check_mark: | The request object to use for the request. | ### Response -**[LogMultiLineResponse](../../Models/Requests/LogMultiLineResponse.md)** +**[WriteLogResponse](../../Models/Requests/WriteLogResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| LukeHagar.PlexAPI.SDK.Models.Errors.LogMultiLineBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.LogMultiLineUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## EnablePaperTrail +## WriteMessage -This endpoint will enable all Plex Media Serverlogs to be sent to the Papertrail networked logging site for a period of time. +This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log. + +Note: This endpoint responds to all HTTP verbs **except POST** but PUT is preferred ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); -var res = await sdk.Log.EnablePaperTrailAsync(); +WriteMessageRequest req = new WriteMessageRequest() {}; + +var res = await sdk.Log.WriteMessageAsync(req); // handle response ``` +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [WriteMessageRequest](../../Models/Requests/WriteMessageRequest.md) | :heavy_check_mark: | The request object to use for the request. | + ### Response -**[EnablePaperTrailResponse](../../Models/Requests/EnablePaperTrailResponse.md)** +**[WriteMessageResponse](../../Models/Requests/WriteMessageResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.EnablePaperTrailBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.EnablePaperTrailUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## EnablePapertrail + +This endpoint will enable all Plex Media Server logs to be sent to the Papertrail networked logging site for a period of time + +Note: This endpoint responds to all HTTP verbs but POST is preferred + + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +EnablePapertrailRequest req = new EnablePapertrailRequest() {}; + +var res = await sdk.Log.EnablePapertrailAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [EnablePapertrailRequest](../../Models/Requests/EnablePapertrailRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[EnablePapertrailResponse](../../Models/Requests/EnablePapertrailResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/media/README.md b/docs/sdks/media/README.md deleted file mode 100644 index 1ed79f3..0000000 --- a/docs/sdks/media/README.md +++ /dev/null @@ -1,222 +0,0 @@ -# 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 -* [GetBannerImage](#getbannerimage) - Get Banner Image -* [GetThumbImage](#getthumbimage) - Get Thumb Image - -## MarkPlayed - -This will mark the provided media key as Played. - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(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)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.MarkPlayedBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.MarkPlayedUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## MarkUnplayed - -This will mark the provided media key as Unplayed. - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(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)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| LukeHagar.PlexAPI.SDK.Models.Errors.MarkUnplayedBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.MarkUnplayedUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## UpdatePlayProgress - -This API command can be used to update the play progress of a media item. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Media.UpdatePlayProgressAsync( - key: "", - time: 90000D, - state: "played" -); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `Key` | *string* | :heavy_check_mark: | the media key | | -| `Time` | *double* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. | 90000 | -| `State` | *string* | :heavy_check_mark: | The playback state of the media item. | played | - -### Response - -**[UpdatePlayProgressResponse](../../Models/Requests/UpdatePlayProgressResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| LukeHagar.PlexAPI.SDK.Models.Errors.UpdatePlayProgressBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.UpdatePlayProgressUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetBannerImage - -Gets the banner image of the media item - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -GetBannerImageRequest req = new GetBannerImageRequest() { - RatingKey = 9518, - Width = 396, - Height = 396, - MinSize = 1, - Upscale = 1, - XPlexToken = "CV5xoxjTpFKUzBTShsaf", -}; - -var res = await sdk.Media.GetBannerImageAsync(req); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `request` | [GetBannerImageRequest](../../Models/Requests/GetBannerImageRequest.md) | :heavy_check_mark: | The request object to use for the request. | - -### Response - -**[GetBannerImageResponse](../../Models/Requests/GetBannerImageResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetBannerImageBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetBannerImageUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetThumbImage - -Gets the thumbnail image of the media item - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -GetThumbImageRequest req = new GetThumbImageRequest() { - RatingKey = 9518, - Width = 396, - Height = 396, - MinSize = 1, - Upscale = 1, - XPlexToken = "CV5xoxjTpFKUzBTShsaf", -}; - -var res = await sdk.Media.GetThumbImageAsync(req); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `request` | [GetThumbImageRequest](../../Models/Requests/GetThumbImageRequest.md) | :heavy_check_mark: | The request object to use for the request. | - -### Response - -**[GetThumbImageResponse](../../Models/Requests/GetThumbImageResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetThumbImageBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetThumbImageUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/playlist/README.md b/docs/sdks/playlist/README.md new file mode 100644 index 0000000..f7065fb --- /dev/null +++ b/docs/sdks/playlist/README.md @@ -0,0 +1,167 @@ +# Playlist +(*Playlist*) + +## Overview + +Media playlists that can be created and played back + +### Available Operations + +* [ListPlaylists](#listplaylists) - List playlists +* [GetPlaylist](#getplaylist) - Retrieve Playlist +* [GetPlaylistItems](#getplaylistitems) - Retrieve Playlist Contents + +## ListPlaylists + +Gets a list of playlists and playlist folders for a user. General filters are permitted, such as `sort=lastViewedAt:desc`. A flat playlist list can be retrieved using `type=15` to limit the collection to just playlists. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ListPlaylistsRequest req = new ListPlaylistsRequest() {}; + +var res = await sdk.Playlist.ListPlaylistsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `request` | [ListPlaylistsRequest](../../Models/Requests/ListPlaylistsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ListPlaylistsResponse](../../Models/Requests/ListPlaylistsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## 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 LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetPlaylistRequest req = new GetPlaylistRequest() { + PlaylistId = 841953, +}; + +var res = await sdk.Playlist.GetPlaylistAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [GetPlaylistRequest](../../Models/Requests/GetPlaylistRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetPlaylistResponse](../../Models/Requests/GetPlaylistResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetPlaylistItems + +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 LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetPlaylistItemsRequest req = new GetPlaylistItemsRequest() { + PlaylistId = 118195, +}; + +var res = await sdk.Playlist.GetPlaylistItemsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [GetPlaylistItemsRequest](../../Models/Requests/GetPlaylistItemsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetPlaylistItemsResponse](../../Models/Requests/GetPlaylistItemsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/playlists/README.md b/docs/sdks/playlists/README.md deleted file mode 100644 index c910428..0000000 --- a/docs/sdks/playlists/README.md +++ /dev/null @@ -1,390 +0,0 @@ -# Playlists -(*Playlists*) - -## Overview - -Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as "all albums from 2017"). -They can be organized in (optionally nesting) folders. -Retrieving a playlist, or its items, will trigger a refresh of its metadata. -This may cause the duration and number of items to change. - - -### Available Operations - -* [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. `server://1234/com.plexapp.plugins.library/library/metadata/1`). -- `playQueueID` - To create a playlist from an existing play queue. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -CreatePlaylistRequest req = new CreatePlaylistRequest() { - Title = "", - Type = CreatePlaylistQueryParamType.Audio, - Smart = Smart.One, - Uri = "https://short-term-disconnection.name/", -}; - -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)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.CreatePlaylistBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.CreatePlaylistUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetPlaylists - -Get All Playlists given the specified filters. - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Playlists.GetPlaylistsAsync(); - -// 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)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetPlaylistsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetPlaylistsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## 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 LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Playlists.GetPlaylistAsync(playlistID: 8419.53D); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ---------------------- | ---------------------- | ---------------------- | ---------------------- | -| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | - -### Response - -**[GetPlaylistResponse](../../Models/Requests/GetPlaylistResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetPlaylistBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetPlaylistUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## DeletePlaylist - -This endpoint will delete a playlist - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Playlists.DeletePlaylistAsync(playlistID: 3432.93D); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ---------------------- | ---------------------- | ---------------------- | ---------------------- | -| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | - -### Response - -**[DeletePlaylistResponse](../../Models/Requests/DeletePlaylistResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.DeletePlaylistBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.DeletePlaylistUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## 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 LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Playlists.UpdatePlaylistAsync(playlistID: 1579.66D); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | -| `Title` | *string* | :heavy_minus_sign: | name of the playlist | -| `Summary` | *string* | :heavy_minus_sign: | summary description of the playlist | - -### Response - -**[UpdatePlaylistResponse](../../Models/Requests/UpdatePlaylistResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.UpdatePlaylistBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.UpdatePlaylistUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## 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 LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Playlists.GetPlaylistContentsAsync( - playlistID: 5535.42D, - type: GetPlaylistContentsQueryParamType.TvShow -); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | | -| `Type` | [GetPlaylistContentsQueryParamType](../../Models/Requests/GetPlaylistContentsQueryParamType.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | - -### Response - -**[GetPlaylistContentsResponse](../../Models/Requests/GetPlaylistContentsResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetPlaylistContentsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetPlaylistContentsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## ClearPlaylistContents - -Clears a playlist, only works with dumb playlists. Returns the playlist. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Playlists.ClearPlaylistContentsAsync(playlistID: 4137.37D); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ---------------------- | ---------------------- | ---------------------- | ---------------------- | -| `PlaylistID` | *double* | :heavy_check_mark: | the ID of the playlist | - -### Response - -**[ClearPlaylistContentsResponse](../../Models/Requests/ClearPlaylistContentsResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.ClearPlaylistContentsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.ClearPlaylistContentsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## AddPlaylistContents - -Adds a generator to a playlist, same parameters as the POST to create. With a dumb playlist, this adds the specified items to the playlist. -With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Playlists.AddPlaylistContentsAsync( - playlistID: 7013.44D, - uri: "server://12345/com.plexapp.plugins.library/library/metadata/1", - 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 | server://12345/com.plexapp.plugins.library/library/metadata/1 | -| `PlayQueueID` | *double* | :heavy_minus_sign: | the play queue to add to a playlist | 123 | - -### Response - -**[AddPlaylistContentsResponse](../../Models/Requests/AddPlaylistContentsResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.AddPlaylistContentsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.AddPlaylistContentsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## 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 LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Playlists.UploadPlaylistAsync( - path: "/home/barkley/playlist.m3u", - force: QueryParamForce.One, - sectionID: 1 -); - -// 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` | [QueryParamForce](../../Models/Requests/QueryParamForce.md) | :heavy_check_mark: | Force overwriting of duplicate playlists.
By default, a playlist file uploaded with the same path will overwrite the existing playlist.
The `force` argument is used to disable overwriting.
If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
| | -| `SectionID` | *long* | :heavy_check_mark: | Possibly the section ID to upload the playlist to, we are not certain. | 1 | - -### Response - -**[UploadPlaylistResponse](../../Models/Requests/UploadPlaylistResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.UploadPlaylistBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.UploadPlaylistUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/playqueue/README.md b/docs/sdks/playqueue/README.md new file mode 100644 index 0000000..edfb53c --- /dev/null +++ b/docs/sdks/playqueue/README.md @@ -0,0 +1,503 @@ +# PlayQueue +(*PlayQueue*) + +## Overview + +The playqueue feature within a media provider +A play queue represents the current list of media for playback. Although queues are persisted by the server, they should be regarded by the user as a fairly lightweight, an ephemeral list of items queued up for playback in a session. There is generally one active queue for each type of media (music, video, photos) that can be added to or destroyed and replaced with a fresh queue. +Play Queues has a region, which we refer to in this doc (partially for historical reasons) as "Up Next". This region is defined by `playQueueLastAddedItemID` existing on the media container. This follows iTunes' terminology. It is a special region after the currently playing item but before the originally-played items. This enables "Party Mode" listening/viewing, where items can be added on-the-fly, and normal queue playback resumed when completed. +You can visualize the play queue as a sliding window in the complete list of media queued for playback. This model is important when scaling to larger play queues (e.g. shuffling 40,000 audio tracks). The client only needs visibility into small areas of the queue at any given time, and the server can optimize access in this fashion. +All created play queues will have an empty "Up Next" area - unless the item is an album and no `key` is provided. In this case the "Up Next" area will be populated by the contents of the album. This is to allow queueing of multiple albums - since the 'Add to Up Next' will insert after all the tracks. This means that If you're creating a PQ from an album, you can only shuffle it if you set `key`. This is due to the above implicit queueing of albums when no `key` is provided as well as the current limitation that you cannot shuffle a PQ with an "Up Next" area. +The play queue window advances as the server receives timeline requests. The client needs to retrieve the play queue as the “now playing” item changes. There is no play queue API to update the playing item. + +### Available Operations + +* [CreatePlayQueue](#createplayqueue) - Create a play queue +* [GetPlayQueue](#getplayqueue) - Retrieve a play queue +* [AddToPlayQueue](#addtoplayqueue) - Add a generator or playlist to a play queue +* [ClearPlayQueue](#clearplayqueue) - Clear a play queue +* [ResetPlayQueue](#resetplayqueue) - Reset a play queue +* [Shuffle](#shuffle) - Shuffle a play queue +* [Unshuffle](#unshuffle) - Unshuffle a play queue +* [DeletePlayQueueItem](#deleteplayqueueitem) - Delete an item from a play queue +* [MovePlayQueueItem](#moveplayqueueitem) - Move an item in a play queue + +## CreatePlayQueue + +Makes a new play queue for a device. The source of the playqueue can either be a URI, or a playlist. The response is a media container with the initial items in the queue. Each item in the queue will be a regular item but with `playQueueItemID` - a unique ID since the queue could have repeated items with the same `ratingKey`. +Note: Either `uri` or `playlistID` must be specified + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +CreatePlayQueueRequest req = new CreatePlayQueueRequest() { + Type = LukeHagar.PlexAPI.SDK.Models.Requests.Type.Audio, + Shuffle = BoolInt.One, + Repeat = BoolInt.One, + Continuous = BoolInt.One, + Recursive = BoolInt.One, + OnDeck = BoolInt.One, +}; + +var res = await sdk.PlayQueue.CreatePlayQueueAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [CreatePlayQueueRequest](../../Models/Requests/CreatePlayQueueRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[CreatePlayQueueResponse](../../Models/Requests/CreatePlayQueueResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetPlayQueue + +Retrieves the play queue, centered at current item. This can be treated as a regular container by play queue-oblivious clients, but they may wish to request a large window onto the queue since they won't know to refresh. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetPlayQueueRequest req = new GetPlayQueueRequest() { + PlayQueueId = 210646, + Own = BoolInt.One, + IncludeBefore = BoolInt.One, + IncludeAfter = BoolInt.One, +}; + +var res = await sdk.PlayQueue.GetPlayQueueAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [GetPlayQueueRequest](../../Models/Requests/GetPlayQueueRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetPlayQueueResponse](../../Models/Requests/GetPlayQueueResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## AddToPlayQueue + +Adds an item to a play queue (e.g. party mode). Increments the version of the play queue. Takes the following parameters (`uri` and `playlistID` are mutually exclusive). Returns the modified play queue. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +AddToPlayQueueRequest req = new AddToPlayQueueRequest() { + PlayQueueId = 919248, + Next = BoolInt.One, +}; + +var res = await sdk.PlayQueue.AddToPlayQueueAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [AddToPlayQueueRequest](../../Models/Requests/AddToPlayQueueRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[AddToPlayQueueResponse](../../Models/Requests/AddToPlayQueueResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ClearPlayQueue + +Deletes all items in the play queue, and increases the version of the play queue. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ClearPlayQueueRequest req = new ClearPlayQueueRequest() { + PlayQueueId = 86357, +}; + +var res = await sdk.PlayQueue.ClearPlayQueueAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [ClearPlayQueueRequest](../../Models/Requests/ClearPlayQueueRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ClearPlayQueueResponse](../../Models/Requests/ClearPlayQueueResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ResetPlayQueue + +Reset a play queue to the first item being the current item + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ResetPlayQueueRequest req = new ResetPlayQueueRequest() { + PlayQueueId = 581891, +}; + +var res = await sdk.PlayQueue.ResetPlayQueueAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [ResetPlayQueueRequest](../../Models/Requests/ResetPlayQueueRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ResetPlayQueueResponse](../../Models/Requests/ResetPlayQueueResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## Shuffle + +Shuffle a play queue (or reshuffles if already shuffled). The currently selected item is maintained. Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ShuffleRequest req = new ShuffleRequest() { + PlayQueueId = 316150, +}; + +var res = await sdk.PlayQueue.ShuffleAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `request` | [ShuffleRequest](../../Models/Requests/ShuffleRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ShuffleResponse](../../Models/Requests/ShuffleResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## Unshuffle + +Unshuffles a play queue and restores "natural order". Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +UnshuffleRequest req = new UnshuffleRequest() { + PlayQueueId = 484388, +}; + +var res = await sdk.PlayQueue.UnshuffleAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [UnshuffleRequest](../../Models/Requests/UnshuffleRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[UnshuffleResponse](../../Models/Requests/UnshuffleResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeletePlayQueueItem + +Deletes an item in a play queue. Increments the version of the play queue. Returns the modified play queue. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeletePlayQueueItemRequest req = new DeletePlayQueueItemRequest() { + PlayQueueId = 285738, + PlayQueueItemId = 464354, +}; + +var res = await sdk.PlayQueue.DeletePlayQueueItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [DeletePlayQueueItemRequest](../../Models/Requests/DeletePlayQueueItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeletePlayQueueItemResponse](../../Models/Requests/DeletePlayQueueItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## MovePlayQueueItem + +Moves an item in a play queue, and increases the version of the play queue. Returns the modified play queue. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +MovePlayQueueItemRequest req = new MovePlayQueueItemRequest() { + PlayQueueId = 31341, + PlayQueueItemId = 495865, +}; + +var res = await sdk.PlayQueue.MovePlayQueueItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `request` | [MovePlayQueueItemRequest](../../Models/Requests/MovePlayQueueItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[MovePlayQueueItemResponse](../../Models/Requests/MovePlayQueueItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/plex/README.md b/docs/sdks/plex/README.md deleted file mode 100644 index 64934eb..0000000 --- a/docs/sdks/plex/README.md +++ /dev/null @@ -1,290 +0,0 @@ -# Plex -(*Plex*) - -## Overview - -API Calls that perform operations directly against https://Plex.tv - - -### Available Operations - -* [GetCompanionsData](#getcompanionsdata) - Get Companions Data -* [GetUserFriends](#getuserfriends) - Get list of friends of the user logged in -* [GetGeoData](#getgeodata) - Get Geo Data -* [GetHomeData](#gethomedata) - Get Plex Home Data -* [GetServerResources](#getserverresources) - Get Server Resources -* [GetPin](#getpin) - Get a Pin -* [GetTokenByPinId](#gettokenbypinid) - Get Access Token by PinId - -## GetCompanionsData - -Get Companions Data - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Plex.GetCompanionsDataAsync(); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | -| `serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[GetCompanionsDataResponse](../../Models/Requests/GetCompanionsDataResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetCompanionsDataBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetCompanionsDataUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetUserFriends - -Get friends of provided auth token. - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Plex.GetUserFriendsAsync(); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | -| `serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[GetUserFriendsResponse](../../Models/Requests/GetUserFriendsResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetUserFriendsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetUserFriendsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetGeoData - -Returns the geolocation and locale data of the caller - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; - -var sdk = new PlexAPI(); - -var res = await sdk.Plex.GetGeoDataAsync(); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | -| `serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[GetGeoDataResponse](../../Models/Requests/GetGeoDataResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetGeoDataBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetGeoDataUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetHomeData - -Retrieves the home data for the authenticated user, including details like home ID, name, guest access information, and subscription status. - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Plex.GetHomeDataAsync(); - -// handle response -``` - -### Response - -**[GetHomeDataResponse](../../Models/Requests/GetHomeDataResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetHomeDataBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetHomeDataUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetServerResources - -Get Plex server access tokens and server connections - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Plex.GetServerResourcesAsync( - clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58", - includeHttps: IncludeHttps.Enable, - includeRelay: IncludeRelay.Enable, - includeIPv6: IncludeIPv6.Enable -); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `IncludeHttps` | [IncludeHttps](../../Models/Requests/IncludeHttps.md) | :heavy_minus_sign: | Include Https entries in the results | 1 | -| `IncludeRelay` | [IncludeRelay](../../Models/Requests/IncludeRelay.md) | :heavy_minus_sign: | Include Relay addresses in the results
E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400
| 1 | -| `IncludeIPv6` | [IncludeIPv6](../../Models/Requests/IncludeIPv6.md) | :heavy_minus_sign: | Include IPv6 entries in the results | 1 | -| `serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | http://localhost:8080 | - -### Response - -**[GetServerResourcesResponse](../../Models/Requests/GetServerResourcesResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerResourcesBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerResourcesUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetPin - -Retrieve a Pin ID from Plex.tv to use for authentication flows - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(); - -GetPinRequest req = new GetPinRequest() { - ClientID = "3381b62b-9ab7-4e37-827b-203e9809eb58", - ClientName = "Plex for Roku", - DeviceNickname = "Roku 3", - ClientVersion = "2.4.1", - Platform = "Roku", -}; - -var res = await sdk.Plex.GetPinAsync(req); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | -| `request` | [GetPinRequest](../../Models/Requests/GetPinRequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[GetPinResponse](../../Models/Requests/GetPinResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetPinBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetTokenByPinId - -Retrieve an Access Token from Plex.tv after the Pin has been authenticated - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(); - -GetTokenByPinIdRequest req = new GetTokenByPinIdRequest() { - PinID = 232248, - ClientID = "3381b62b-9ab7-4e37-827b-203e9809eb58", - ClientName = "Plex for Roku", - DeviceNickname = "Roku 3", - ClientVersion = "2.4.1", - Platform = "Roku", -}; - -var res = await sdk.Plex.GetTokenByPinIdAsync(req); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| `request` | [GetTokenByPinIdRequest](../../Models/Requests/GetTokenByPinIdRequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[GetTokenByPinIdResponse](../../Models/Requests/GetTokenByPinIdResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetTokenByPinIdBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetTokenByPinIdResponseBody | 404 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/plexapi/README.md b/docs/sdks/plexapi/README.md deleted file mode 100644 index 1e395e4..0000000 --- a/docs/sdks/plexapi/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# PlexAPI SDK - -## Overview - -# Plex Media Server OpenAPI Specification - -An Open Source OpenAPI Specification for Plex Media Server - -Automation and SDKs provided by [Speakeasy](https://speakeasyapi.dev/) - -## Documentation - -[API Documentation](https://plexapi.dev) - -## SDKs - -The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the [main specification Repository](https://github.com/LukeHagar/plex-api-spec). - -| Language | Repository | Releases | Other | -| --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | -| Python | [GitHub](https://github.com/LukeHagar/plexpy) | [PyPI](https://pypi.org/project/plex-api-client/) | - | -| JavaScript/TypeScript | [GitHub](https://github.com/LukeHagar/plexjs) | [NPM](https://www.npmjs.com/package/@lukehagar/plexjs) \ [JSR](https://jsr.io/@lukehagar/plexjs) | - | -| Go | [GitHub](https://github.com/LukeHagar/plexgo) | [Releases](https://github.com/LukeHagar/plexgo/releases) | [GoDoc](https://pkg.go.dev/github.com/LukeHagar/plexgo) | -| Ruby | [GitHub](https://github.com/LukeHagar/plexruby) | [Releases](https://github.com/LukeHagar/plexruby/releases) | - | -| Swift | [GitHub](https://github.com/LukeHagar/plexswift) | [Releases](https://github.com/LukeHagar/plexswift/releases) | - | -| PHP | [GitHub](https://github.com/LukeHagar/plexphp) | [Releases](https://github.com/LukeHagar/plexphp/releases) | - | -| Java | [GitHub](https://github.com/LukeHagar/plexjava) | [Releases](https://github.com/LukeHagar/plexjava/releases) | - | -| C# | [GitHub](https://github.com/LukeHagar/plexcsharp) | [Releases](https://github.com/LukeHagar/plexcsharp/releases) | - - - -### Available Operations diff --git a/docs/sdks/preferences/README.md b/docs/sdks/preferences/README.md new file mode 100644 index 0000000..95eec63 --- /dev/null +++ b/docs/sdks/preferences/README.md @@ -0,0 +1,142 @@ +# Preferences +(*Preferences*) + +## Overview + +API Operations against the Preferences + +### Available Operations + +* [GetAllPreferences](#getallpreferences) - Get all preferences +* [SetPreferences](#setpreferences) - Set preferences +* [GetPreference](#getpreference) - Get a preferences + +## GetAllPreferences + +Get the list of all preferences + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Preferences.GetAllPreferencesAsync(); + +// handle response +``` + +### Response + +**[GetAllPreferencesResponse](../../Models/Requests/GetAllPreferencesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## SetPreferences + +Set a set of preferences in query parameters + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +SetPreferencesRequest req = new SetPreferencesRequest() { + Prefs = new Prefs() {}, +}; + +var res = await sdk.Preferences.SetPreferencesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [SetPreferencesRequest](../../Models/Requests/SetPreferencesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SetPreferencesResponse](../../Models/Requests/SetPreferencesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetPreference + +Get a single preference and value + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetPreferenceRequest req = new GetPreferenceRequest() {}; + +var res = await sdk.Preferences.GetPreferenceAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `request` | [GetPreferenceRequest](../../Models/Requests/GetPreferenceRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetPreferenceResponse](../../Models/Requests/GetPreferenceResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/provider/README.md b/docs/sdks/provider/README.md new file mode 100644 index 0000000..85f5bdf --- /dev/null +++ b/docs/sdks/provider/README.md @@ -0,0 +1,173 @@ +# Provider +(*Provider*) + +## Overview + +Media providers are the starting points for the entire Plex Media Server media library API. It defines the paths for the groups of endpoints. The `/media/providers` should be the only hard-coded path in clients when accessing the media library. Non-media library endpoints are outside the scope of the media provider. See the description in See [the section in API Info](#section/API-Info/Media-Providers) for more information on how to use media providers. + +### Available Operations + +* [ListProviders](#listproviders) - Get the list of available media providers +* [AddProvider](#addprovider) - Add a media provider +* [RefreshProviders](#refreshproviders) - Refresh media providers +* [DeleteMediaProvider](#deletemediaprovider) - Delete a media provider + +## ListProviders + +Get the list of all available media providers for this PMS. This will generally include the library provider and possibly EPG if DVR is set up. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Provider.ListProvidersAsync(); + +// handle response +``` + +### Response + +**[ListProvidersResponse](../../Models/Requests/ListProvidersResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## AddProvider + +This endpoint registers a media provider with the server. Once registered, the media server acts as a reverse proxy to the provider, allowing both local and remote providers to work. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +AddProviderRequest req = new AddProviderRequest() { + Url = "https://steep-obedience.name/", +}; + +var res = await sdk.Provider.AddProviderAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [AddProviderRequest](../../Models/Requests/AddProviderRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[AddProviderResponse](../../Models/Requests/AddProviderResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## RefreshProviders + +Refresh all known media providers. This is useful in case a provider has updated features. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Provider.RefreshProvidersAsync(); + +// handle response +``` + +### Response + +**[RefreshProvidersResponse](../../Models/Requests/RefreshProvidersResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteMediaProvider + +Deletes a media provider with the given id + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteMediaProviderRequest req = new DeleteMediaProviderRequest() { + Provider = "", +}; + +var res = await sdk.Provider.DeleteMediaProviderAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [DeleteMediaProviderRequest](../../Models/Requests/DeleteMediaProviderRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteMediaProviderResponse](../../Models/Requests/DeleteMediaProviderResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/rate/README.md b/docs/sdks/rate/README.md new file mode 100644 index 0000000..e06744d --- /dev/null +++ b/docs/sdks/rate/README.md @@ -0,0 +1,65 @@ +# Rate +(*Rate*) + +## Overview + +Operations for rating media items (thumbs up/down, star ratings, etc.) + +### Available Operations + +* [SetRating](#setrating) - Rate an item + +## SetRating + +Set the rating on an item. +This API does respond to the GET verb but applications should use PUT + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +SetRatingRequest req = new SetRatingRequest() { + Identifier = "", + Key = "", + Rating = 8722.46D, +}; + +var res = await sdk.Rate.SetRatingAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [SetRatingRequest](../../Models/Requests/SetRatingRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SetRatingResponse](../../Models/Requests/SetRatingResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/search/README.md b/docs/sdks/search/README.md index 7fd99c5..9f2572f 100644 --- a/docs/sdks/search/README.md +++ b/docs/sdks/search/README.md @@ -3,16 +3,16 @@ ## Overview -API Calls that perform search operations with Plex Media Server - +The search feature within a media provider ### Available Operations -* [PerformSearch](#performsearch) - Perform a search -* [PerformVoiceSearch](#performvoicesearch) - Perform a voice search -* [GetSearchResults](#getsearchresults) - Get Search Results +* [SearchHubs](#searchhubs) - Search Hub +* [VoiceSearchHubs](#voicesearchhubs) - Voice Search Hub -## PerformSearch +## SearchHubs + +Perform a search and get the result as hubs This endpoint performs a search across all library sections, or a single section, and returns matches as hubs, split up by type. It performs spell checking, looks for partial matches, and orders the hubs based on quality of results. In addition, based on matches, it will return other related matches (e.g. for a genre match, it may return movies in that genre, or for an actor match, movies with that actor). @@ -30,118 +30,106 @@ This request is intended to be very fast, and called as the user types. ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Search.PerformSearchAsync( - query: "arnold", - limit: 5D +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); +SearchHubsRequest req = new SearchHubsRequest() { + Query = "", + SectionId = 1, +}; + +var res = await sdk.Search.SearchHubsAsync(req); + // 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 | +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `request` | [SearchHubsRequest](../../Models/Requests/SearchHubsRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response -**[PerformSearchResponse](../../Models/Requests/PerformSearchResponse.md)** +**[SearchHubsResponse](../../Models/Requests/SearchHubsResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.PerformSearchBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.PerformSearchUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | -## PerformVoiceSearch +## VoiceSearchHubs + +Perform a search tailored to voice input and get the result as hubs + +This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint. Whenever possible, clients should limit the search to the appropriate type. -This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. -It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint. -Whenever possible, clients should limit the search to the appropriate type. Results, as well as their containing per-type hubs, contain a `distance` attribute which can be used to judge result quality. ### Example Usage - + ```csharp using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Search.PerformVoiceSearchAsync( - query: "dead+poop", - limit: 5D +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); -// handle response -``` +VoiceSearchHubsRequest req = new VoiceSearchHubsRequest() { + Query = "", +}; -### 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)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| LukeHagar.PlexAPI.SDK.Models.Errors.PerformVoiceSearchBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.PerformVoiceSearchUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetSearchResults - -This will search the database for the string provided. - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Search.GetSearchResultsAsync(query: "110"); +var res = await sdk.Search.VoiceSearchHubsAsync(req); // handle response ``` ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | -| `Query` | *string* | :heavy_check_mark: | The search query string to use | 110 | +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [VoiceSearchHubsRequest](../../Models/Requests/VoiceSearchHubsRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response -**[GetSearchResultsResponse](../../Models/Requests/GetSearchResultsResponse.md)** +**[VoiceSearchHubsResponse](../../Models/Requests/VoiceSearchHubsResponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetSearchResultsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetSearchResultsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/server/README.md b/docs/sdks/server/README.md deleted file mode 100644 index bbe67ac..0000000 --- a/docs/sdks/server/README.md +++ /dev/null @@ -1,310 +0,0 @@ -# Server -(*Server*) - -## Overview - -Operations against the Plex Media Server System. - - -### Available Operations - -* [GetServerCapabilities](#getservercapabilities) - Get 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 -* [GetMediaProviders](#getmediaproviders) - Get Media Providers -* [GetServerList](#getserverlist) - Get Server List - -## GetServerCapabilities - -Get Server Capabilities - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Server.GetServerCapabilitiesAsync(); - -// handle response -``` - -### Response - -**[GetServerCapabilitiesResponse](../../Models/Requests/GetServerCapabilitiesResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerCapabilitiesBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerCapabilitiesUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetServerPreferences - -Get Server Preferences - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Server.GetServerPreferencesAsync(); - -// handle response -``` - -### Response - -**[GetServerPreferencesResponse](../../Models/Requests/GetServerPreferencesResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerPreferencesBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerPreferencesUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetAvailableClients - -Get Available Clients - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Server.GetAvailableClientsAsync(); - -// handle response -``` - -### Response - -**[GetAvailableClientsResponse](../../Models/Requests/GetAvailableClientsResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetAvailableClientsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetAvailableClientsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetDevices - -Get Devices - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Server.GetDevicesAsync(); - -// handle response -``` - -### Response - -**[GetDevicesResponse](../../Models/Requests/GetDevicesResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetDevicesBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetDevicesUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetServerIdentity - -This request is useful to determine if the server is online or offline - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; - -var sdk = new PlexAPI(); - -var res = await sdk.Server.GetServerIdentityAsync(); - -// handle response -``` - -### Response - -**[GetServerIdentityResponse](../../Models/Requests/GetServerIdentityResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerIdentityRequestTimeout | 408 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetMyPlexAccount - -Returns MyPlex Account Information - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Server.GetMyPlexAccountAsync(); - -// handle response -``` - -### Response - -**[GetMyPlexAccountResponse](../../Models/Requests/GetMyPlexAccountResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetMyPlexAccountBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetMyPlexAccountUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetResizedPhoto - -Plex's Photo transcoder is used throughout the service to serve images at specified sizes. - - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -GetResizedPhotoRequest req = new GetResizedPhotoRequest() { - Width = 110D, - Height = 165D, - Blur = 0D, - 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)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetResizedPhotoBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetResizedPhotoUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetMediaProviders - -Retrieves media providers and their features from the Plex server. - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Server.GetMediaProvidersAsync(xPlexToken: "CV5xoxjTpFKUzBTShsaf"); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -| `XPlexToken` | *string* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf | - -### Response - -**[GetMediaProvidersResponse](../../Models/Requests/GetMediaProvidersResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetMediaProvidersBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetMediaProvidersUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetServerList - -Get Server List - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Server.GetServerListAsync(); - -// handle response -``` - -### Response - -**[GetServerListResponse](../../Models/Requests/GetServerListResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerListBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetServerListUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/sessions/README.md b/docs/sdks/sessions/README.md deleted file mode 100644 index 5d2aaf4..0000000 --- a/docs/sdks/sessions/README.md +++ /dev/null @@ -1,155 +0,0 @@ -# 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 LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Sessions.GetSessionsAsync(); - -// handle response -``` - -### Response - -**[GetSessionsResponse](../../Models/Requests/GetSessionsResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetSessionsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetSessionsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetSessionHistory - -This will Retrieve a listing of all history views. - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Sessions.GetSessionHistoryAsync( - sort: "viewedAt:desc", - accountId: 1, - filter: new QueryParamFilter() {}, - librarySectionID: 12 -); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `Sort` | *string* | :heavy_minus_sign: | Sorts the results by the specified field followed by the direction (asc, desc)
| | -| `AccountId` | *long* | :heavy_minus_sign: | Filter results by those that are related to a specific users id
| 1 | -| `Filter` | [QueryParamFilter](../../Models/Requests/QueryParamFilter.md) | :heavy_minus_sign: | Filters content by field and direction/equality
(Unknown if viewedAt is the only supported column)
| {
"viewed-at-greater-than": {
"value": "viewedAt\u003e"
},
"viewed-at-greater-than-or-equal-to": {
"value": "viewedAt\u003e=\u003e"
},
"viewed-at-less-than": {
"value": "viewedAt\u003c"
}
} | -| `LibrarySectionID` | *long* | :heavy_minus_sign: | Filters the results based on the id of a valid library section
| 12 | - -### Response - -**[GetSessionHistoryResponse](../../Models/Requests/GetSessionHistoryResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetSessionHistoryBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetSessionHistoryUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetTranscodeSessions - -Get Transcode Sessions - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Sessions.GetTranscodeSessionsAsync(); - -// handle response -``` - -### Response - -**[GetTranscodeSessionsResponse](../../Models/Requests/GetTranscodeSessionsResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetTranscodeSessionsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetTranscodeSessionsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## StopTranscodeSession - -Stop a Transcode Session - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(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)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.StopTranscodeSessionBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.StopTranscodeSessionUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/statistics/README.md b/docs/sdks/statistics/README.md deleted file mode 100644 index 420464b..0000000 --- a/docs/sdks/statistics/README.md +++ /dev/null @@ -1,121 +0,0 @@ -# Statistics -(*Statistics*) - -## Overview - -API Calls that perform operations with Plex Media Server Statistics - - -### Available Operations - -* [GetStatistics](#getstatistics) - Get Media Statistics -* [GetResourcesStatistics](#getresourcesstatistics) - Get Resources Statistics -* [GetBandwidthStatistics](#getbandwidthstatistics) - Get Bandwidth Statistics - -## GetStatistics - -This will return the media statistics for the server - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Statistics.GetStatisticsAsync(timespan: 4); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `Timespan` | *long* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | - -### Response - -**[GetStatisticsResponse](../../Models/Requests/GetStatisticsResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetStatisticsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetStatisticsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetResourcesStatistics - -This will return the resources for the server - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Statistics.GetResourcesStatisticsAsync(timespan: 4); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `Timespan` | *long* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | - -### Response - -**[GetResourcesStatisticsResponse](../../Models/Requests/GetResourcesStatisticsResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetResourcesStatisticsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetResourcesStatisticsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetBandwidthStatistics - -This will return the bandwidth statistics for the server - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Statistics.GetBandwidthStatisticsAsync(timespan: 4); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `Timespan` | *long* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | - -### Response - -**[GetBandwidthStatisticsResponse](../../Models/Requests/GetBandwidthStatisticsResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetBandwidthStatisticsBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetBandwidthStatisticsUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/status/README.md b/docs/sdks/status/README.md new file mode 100644 index 0000000..63eb5ee --- /dev/null +++ b/docs/sdks/status/README.md @@ -0,0 +1,306 @@ +# Status +(*Status*) + +## Overview + +The status endpoints give you information about current playbacks, play history, and even terminating sessions. + +### Available Operations + +* [ListSessions](#listsessions) - List Sessions +* [GetBackgroundTasks](#getbackgroundtasks) - Get background tasks +* [ListPlaybackHistory](#listplaybackhistory) - List Playback History +* [TerminateSession](#terminatesession) - Terminate a session +* [DeleteHistory](#deletehistory) - Delete Single History Item +* [GetHistoryItem](#gethistoryitem) - Get Single History Item + +## ListSessions + +List all current playbacks on this server + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Status.ListSessionsAsync(); + +// handle response +``` + +### Response + +**[ListSessionsResponse](../../Models/Requests/ListSessionsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetBackgroundTasks + +Get the list of all background tasks + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Status.GetBackgroundTasksAsync(); + +// handle response +``` + +### Response + +**[GetBackgroundTasksResponse](../../Models/Requests/GetBackgroundTasksResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ListPlaybackHistory + +List all playback history (Admin can see all users, others can only see their own). +Pagination should be used on this endpoint. Additionally this endpoint supports `includeFields`, `excludeFields`, `includeElements`, and `excludeElements` parameters. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; +using System.Collections.Generic; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ListPlaybackHistoryRequest req = new ListPlaybackHistoryRequest() { + Sort = new List() { + "v", + "i", + "e", + "w", + "e", + "d", + "A", + "t", + ":", + "d", + "e", + "s", + "c", + ",", + "a", + "c", + "c", + "o", + "u", + "n", + "t", + "I", + "D", + }, +}; + +var res = await sdk.Status.ListPlaybackHistoryAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [ListPlaybackHistoryRequest](../../Models/Requests/ListPlaybackHistoryRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ListPlaybackHistoryResponse](../../Models/Requests/ListPlaybackHistoryResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## TerminateSession + +Terminate a playback session kicking off the user + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +TerminateSessionRequest req = new TerminateSessionRequest() { + SessionId = "cdefghijklmnopqrstuvwxyz", + Reason = "Stop Playing", +}; + +var res = await sdk.Status.TerminateSessionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `request` | [TerminateSessionRequest](../../Models/Requests/TerminateSessionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[TerminateSessionResponse](../../Models/Requests/TerminateSessionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteHistory + +Delete a single history item by id + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteHistoryRequest req = new DeleteHistoryRequest() { + HistoryId = 953579, +}; + +var res = await sdk.Status.DeleteHistoryAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `request` | [DeleteHistoryRequest](../../Models/Requests/DeleteHistoryRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteHistoryResponse](../../Models/Requests/DeleteHistoryResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetHistoryItem + +Get a single history item by id + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetHistoryItemRequest req = new GetHistoryItemRequest() { + HistoryId = 832213, +}; + +var res = await sdk.Status.GetHistoryItemAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [GetHistoryItemRequest](../../Models/Requests/GetHistoryItemRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetHistoryItemResponse](../../Models/Requests/GetHistoryItemResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/subscriptions/README.md b/docs/sdks/subscriptions/README.md new file mode 100644 index 0000000..e05b7bd --- /dev/null +++ b/docs/sdks/subscriptions/README.md @@ -0,0 +1,502 @@ +# Subscriptions +(*Subscriptions*) + +## Overview + +Subscriptions determine which media will be recorded and the criteria for selecting an airing when multiple are available + + +### Available Operations + +* [GetAllSubscriptions](#getallsubscriptions) - Get all subscriptions +* [CreateSubscription](#createsubscription) - Create a subscription +* [ProcessSubscriptions](#processsubscriptions) - Process all subscriptions +* [GetScheduledRecordings](#getscheduledrecordings) - Get all scheduled recordings +* [GetTemplate](#gettemplate) - Get the subscription template +* [CancelGrab](#cancelgrab) - Cancel an existing grab +* [DeleteSubscription](#deletesubscription) - Delete a subscription +* [GetSubscription](#getsubscription) - Get a single subscription +* [EditSubscriptionPreferences](#editsubscriptionpreferences) - Edit a subscription +* [ReorderSubscription](#reordersubscription) - Re-order a subscription + +## GetAllSubscriptions + +Get all subscriptions and potentially the grabs too + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetAllSubscriptionsRequest req = new GetAllSubscriptionsRequest() { + IncludeGrabs = BoolInt.One, + IncludeStorage = BoolInt.One, +}; + +var res = await sdk.Subscriptions.GetAllSubscriptionsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [GetAllSubscriptionsRequest](../../Models/Requests/GetAllSubscriptionsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetAllSubscriptionsResponse](../../Models/Requests/GetAllSubscriptionsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## CreateSubscription + +Create a subscription. The query parameters should be mostly derived from the [template](#tag/Subscriptions/operation/mediaSubscriptionsGetTemplate) + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +CreateSubscriptionRequest req = new CreateSubscriptionRequest() { + TargetLibrarySectionID = 1, + TargetSectionLocationID = 3, + Type = 2, + Hints = new Hints() {}, + Prefs = new CreateSubscriptionQueryParamPrefs() {}, + Params = new Params() {}, +}; + +var res = await sdk.Subscriptions.CreateSubscriptionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [CreateSubscriptionRequest](../../Models/Requests/CreateSubscriptionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[CreateSubscriptionResponse](../../Models/Requests/CreateSubscriptionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ProcessSubscriptions + +Process all subscriptions asynchronously + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Subscriptions.ProcessSubscriptionsAsync(); + +// handle response +``` + +### Response + +**[ProcessSubscriptionsResponse](../../Models/Requests/ProcessSubscriptionsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetScheduledRecordings + +Get all scheduled recordings across all subscriptions + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Subscriptions.GetScheduledRecordingsAsync(); + +// handle response +``` + +### Response + +**[GetScheduledRecordingsResponse](../../Models/Requests/GetScheduledRecordingsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetTemplate + +Get the templates for a piece of media which could include fetching one airing, season, the whole show, etc. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetTemplateRequest req = new GetTemplateRequest() { + Guid = "plex://episode/5fc70265c40548002d539d23", +}; + +var res = await sdk.Subscriptions.GetTemplateAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `request` | [GetTemplateRequest](../../Models/Requests/GetTemplateRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetTemplateResponse](../../Models/Requests/GetTemplateResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## CancelGrab + +Cancels an existing media grab (recording). It can be used to resolve a conflict which exists for a rolling subscription. +Note: This cancellation does not persist across a server restart, but neither does a rolling subscription itself. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +CancelGrabRequest req = new CancelGrabRequest() { + OperationId = "", +}; + +var res = await sdk.Subscriptions.CancelGrabAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `request` | [CancelGrabRequest](../../Models/Requests/CancelGrabRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[CancelGrabResponse](../../Models/Requests/CancelGrabResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## DeleteSubscription + +Delete a subscription, cancelling all of its grabs as well + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +DeleteSubscriptionRequest req = new DeleteSubscriptionRequest() { + SubscriptionId = 974618, +}; + +var res = await sdk.Subscriptions.DeleteSubscriptionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [DeleteSubscriptionRequest](../../Models/Requests/DeleteSubscriptionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[DeleteSubscriptionResponse](../../Models/Requests/DeleteSubscriptionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetSubscription + +Get a single subscription and potentially the grabs too + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetSubscriptionRequest req = new GetSubscriptionRequest() { + SubscriptionId = 186713, + IncludeGrabs = BoolInt.One, + IncludeStorage = BoolInt.One, +}; + +var res = await sdk.Subscriptions.GetSubscriptionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [GetSubscriptionRequest](../../Models/Requests/GetSubscriptionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetSubscriptionResponse](../../Models/Requests/GetSubscriptionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## EditSubscriptionPreferences + +Edit a subscription's preferences + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +EditSubscriptionPreferencesRequest req = new EditSubscriptionPreferencesRequest() { + SubscriptionId = 673918, + Prefs = new EditSubscriptionPreferencesQueryParamPrefs() {}, +}; + +var res = await sdk.Subscriptions.EditSubscriptionPreferencesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `request` | [EditSubscriptionPreferencesRequest](../../Models/Requests/EditSubscriptionPreferencesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[EditSubscriptionPreferencesResponse](../../Models/Requests/EditSubscriptionPreferencesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## ReorderSubscription + +Re-order a subscription to change its priority + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ReorderSubscriptionRequest req = new ReorderSubscriptionRequest() { + SubscriptionId = 440634, +}; + +var res = await sdk.Subscriptions.ReorderSubscriptionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `request` | [ReorderSubscriptionRequest](../../Models/Requests/ReorderSubscriptionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ReorderSubscriptionResponse](../../Models/Requests/ReorderSubscriptionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/timeline/README.md b/docs/sdks/timeline/README.md new file mode 100644 index 0000000..4d0a732 --- /dev/null +++ b/docs/sdks/timeline/README.md @@ -0,0 +1,185 @@ +# Timeline +(*Timeline*) + +## Overview + +The actions feature within a media provider + +### Available Operations + +* [MarkPlayed](#markplayed) - Mark an item as played +* [Report](#report) - Report media timeline +* [Unscrobble](#unscrobble) - Mark an item as unplayed + +## MarkPlayed + +Mark an item as played. Note, this does not create any view history of this item but rather just sets the state as played. The client must provide either the `key` or `uri` query parameter +This API does respond to the GET verb but applications should use PUT + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +MarkPlayedRequest req = new MarkPlayedRequest() { + Identifier = "", + Key = "59398", +}; + +var res = await sdk.Timeline.MarkPlayedAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `request` | [MarkPlayedRequest](../../Models/Requests/MarkPlayedRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[MarkPlayedResponse](../../Models/Requests/MarkPlayedResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## Report + +This endpoint is hit during media playback for an item. It must be hit whenever the play state changes, or in the absence of a play state change, in a regular fashion (generally this means every 10 seconds on a LAN/WAN, and every 20 seconds over cellular). + + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +ReportRequest req = new ReportRequest() { + Key = "/foo", + RatingKey = "xyz", + State = State.Playing, + PlayQueueItemID = "123", + Time = 0, + Duration = 10000, + Continuing = BoolInt.One, + Updated = 14200000, + Offline = BoolInt.One, + TimeToFirstFrame = 1000, + TimeStalled = 1000, + Bandwidth = 100, + BufferedTime = 100, + BufferedSize = 1024, +}; + +var res = await sdk.Timeline.ReportAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `request` | [ReportRequest](../../Models/Requests/ReportRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[ReportResponse](../../Models/Requests/ReportResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## Unscrobble + +Mark an item as unplayed. The client must provide either the `key` or `uri` query parameter +This API does respond to the GET verb but applications should use PUT + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +UnscrobbleRequest req = new UnscrobbleRequest() { + Identifier = "", +}; + +var res = await sdk.Timeline.UnscrobbleAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `request` | [UnscrobbleRequest](../../Models/Requests/UnscrobbleRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[UnscrobbleResponse](../../Models/Requests/UnscrobbleResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/transcoder/README.md b/docs/sdks/transcoder/README.md new file mode 100644 index 0000000..f91fc7f --- /dev/null +++ b/docs/sdks/transcoder/README.md @@ -0,0 +1,361 @@ +# Transcoder +(*Transcoder*) + +## Overview + +API Operations against the Transcoder + +### Available Operations + +* [TranscodeImage](#transcodeimage) - Transcode an image +* [MakeDecision](#makedecision) - Make a decision on media playback +* [TriggerFallback](#triggerfallback) - Manually trigger a transcoder fallback +* [TranscodeSubtitles](#transcodesubtitles) - Transcode subtitles +* [StartTranscodeSession](#starttranscodesession) - Start A Transcoding Session + +## TranscodeImage + +Transcode an image, possibly changing format or size + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +TranscodeImageRequest req = new TranscodeImageRequest() { + Url = "/library/metadata/265/thumb/1715112705", + Background = "#ff5522", + Upscale = BoolInt.One, + MinSize = BoolInt.One, + Rotate = BoolInt.One, + BlendColor = "#ff5522", +}; + +var res = await sdk.Transcoder.TranscodeImageAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `request` | [TranscodeImageRequest](../../Models/Requests/TranscodeImageRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[TranscodeImageResponse](../../Models/Requests/TranscodeImageResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## MakeDecision + +Make a decision on media playback based on client profile, and requested settings such as bandwidth and resolution. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +MakeDecisionRequest req = new MakeDecisionRequest() { + TranscodeType = TranscodeType.Music, + AdvancedSubtitles = LukeHagar.PlexAPI.SDK.Models.Components.AdvancedSubtitles.Burn, + AudioBoost = 50, + AudioChannelCount = 5, + AutoAdjustQuality = BoolInt.One, + AutoAdjustSubtitle = BoolInt.One, + DirectPlay = BoolInt.One, + DirectStream = BoolInt.One, + DirectStreamAudio = BoolInt.One, + DisableResolutionRotation = BoolInt.One, + HasMDE = BoolInt.One, + Location = LukeHagar.PlexAPI.SDK.Models.Requests.Location.Wan, + MediaBufferSize = 102400, + MediaIndex = 0, + MusicBitrate = 5000, + Offset = 90.5D, + PartIndex = 0, + Path = "/library/metadata/151671", + PeakBitrate = 12000, + PhotoResolution = "1080x1080", + Protocol = LukeHagar.PlexAPI.SDK.Models.Requests.Protocol.Dash, + SecondsPerSegment = 5, + SubtitleSize = 50, + VideoBitrate = 12000, + VideoQuality = 50, + VideoResolution = "1080x1080", + XPlexClientProfileExtra = "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + XPlexClientProfileName = "generic", +}; + +var res = await sdk.Transcoder.MakeDecisionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [MakeDecisionRequest](../../Models/Requests/MakeDecisionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[MakeDecisionResponse](../../Models/Requests/MakeDecisionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## TriggerFallback + +Manually trigger a transcoder fallback ex: HEVC to h.264 or hw to sw + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +TriggerFallbackRequest req = new TriggerFallbackRequest() { + TranscodeType = TranscodeType.Audio, +}; + +var res = await sdk.Transcoder.TriggerFallbackAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `request` | [TriggerFallbackRequest](../../Models/Requests/TriggerFallbackRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[TriggerFallbackResponse](../../Models/Requests/TriggerFallbackResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## TranscodeSubtitles + +Only transcode subtitle streams. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +TranscodeSubtitlesRequest req = new TranscodeSubtitlesRequest() { + TranscodeType = TranscodeType.Audio, + AdvancedSubtitles = LukeHagar.PlexAPI.SDK.Models.Components.AdvancedSubtitles.Burn, + AudioBoost = 50, + AudioChannelCount = 5, + AutoAdjustQuality = BoolInt.One, + AutoAdjustSubtitle = BoolInt.One, + DirectPlay = BoolInt.One, + DirectStream = BoolInt.One, + DirectStreamAudio = BoolInt.One, + DisableResolutionRotation = BoolInt.One, + HasMDE = BoolInt.One, + Location = QueryParamLocation.Wan, + MediaBufferSize = 102400, + MediaIndex = 0, + MusicBitrate = 5000, + Offset = 90.5D, + PartIndex = 0, + Path = "/library/metadata/151671", + PeakBitrate = 12000, + PhotoResolution = "1080x1080", + Protocol = QueryParamProtocol.Dash, + SecondsPerSegment = 5, + SubtitleSize = 50, + VideoBitrate = 12000, + VideoQuality = 50, + VideoResolution = "1080x1080", + XPlexClientProfileExtra = "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + XPlexClientProfileName = "generic", +}; + +var res = await sdk.Transcoder.TranscodeSubtitlesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `request` | [TranscodeSubtitlesRequest](../../Models/Requests/TranscodeSubtitlesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[TranscodeSubtitlesResponse](../../Models/Requests/TranscodeSubtitlesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## StartTranscodeSession + +Starts the transcoder and returns the corresponding streaming resource document. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +StartTranscodeSessionRequest req = new StartTranscodeSessionRequest() { + TranscodeType = TranscodeType.Music, + Extension = Extension.Mpd, + AdvancedSubtitles = LukeHagar.PlexAPI.SDK.Models.Components.AdvancedSubtitles.Burn, + AudioBoost = 50, + AudioChannelCount = 5, + AutoAdjustQuality = BoolInt.One, + AutoAdjustSubtitle = BoolInt.One, + DirectPlay = BoolInt.One, + DirectStream = BoolInt.One, + DirectStreamAudio = BoolInt.One, + DisableResolutionRotation = BoolInt.One, + HasMDE = BoolInt.One, + Location = StartTranscodeSessionQueryParamLocation.Wan, + MediaBufferSize = 102400, + MediaIndex = 0, + MusicBitrate = 5000, + Offset = 90.5D, + PartIndex = 0, + Path = "/library/metadata/151671", + PeakBitrate = 12000, + PhotoResolution = "1080x1080", + Protocol = StartTranscodeSessionQueryParamProtocol.Dash, + SecondsPerSegment = 5, + SubtitleSize = 50, + VideoBitrate = 12000, + VideoQuality = 50, + VideoResolution = "1080x1080", + XPlexClientProfileExtra = "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + XPlexClientProfileName = "generic", +}; + +var res = await sdk.Transcoder.StartTranscodeSessionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `request` | [StartTranscodeSessionRequest](../../Models/Requests/StartTranscodeSessionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[StartTranscodeSessionResponse](../../Models/Requests/StartTranscodeSessionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/ultrablur/README.md b/docs/sdks/ultrablur/README.md new file mode 100644 index 0000000..19486b8 --- /dev/null +++ b/docs/sdks/ultrablur/README.md @@ -0,0 +1,121 @@ +# UltraBlur +(*UltraBlur*) + +## Overview + +Service provided to compute UltraBlur colors and images. + +### Available Operations + +* [GetColors](#getcolors) - Get UltraBlur Colors +* [GetImage](#getimage) - Get UltraBlur Image + +## GetColors + +Retrieves the four colors extracted from an image for clients to use to generate an ultrablur image. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetColorsRequest req = new GetColorsRequest() { + Url = "/library/metadata/217745/art/1718931408", +}; + +var res = await sdk.UltraBlur.GetColorsAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `request` | [GetColorsRequest](../../Models/Requests/GetColorsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetColorsResponse](../../Models/Requests/GetColorsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetImage + +Retrieves a server-side generated UltraBlur image based on the provided color inputs. Clients should always call this via the photo transcoder endpoint. + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +GetImageRequest req = new GetImageRequest() { + TopLeft = "3f280a", + TopRight = "6b4713", + BottomRight = "0f2a43", + BottomLeft = "1c425d", + Width = 1920, + Height = 1080, + Noise = BoolInt.One, +}; + +var res = await sdk.UltraBlur.GetImageAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `request` | [GetImageRequest](../../Models/Requests/GetImageRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[GetImageResponse](../../Models/Requests/GetImageResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/updater/README.md b/docs/sdks/updater/README.md index 30ecbc0..3da2be7 100644 --- a/docs/sdks/updater/README.md +++ b/docs/sdks/updater/README.md @@ -9,81 +9,13 @@ 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 LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Updater.GetUpdateStatusAsync(); - -// handle response -``` - -### Response - -**[GetUpdateStatusResponse](../../Models/Requests/GetUpdateStatusResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetUpdateStatusBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetUpdateStatusUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## CheckForUpdates - -Checking for updates - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Updater.CheckForUpdatesAsync(download: Download.One); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| `Download` | [Download](../../Models/Requests/Download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. | 1 | - -### Response - -**[CheckForUpdatesResponse](../../Models/Requests/CheckForUpdatesResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.CheckForUpdatesBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.CheckForUpdatesUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | +* [ApplyUpdates](#applyupdates) - Applying updates +* [CheckUpdates](#checkupdates) - Checking for updates +* [GetUpdatesStatus](#getupdatesstatus) - Querying status of updates ## 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 - +Apply any downloaded updates. Note that the two parameters `tonight` and `skip` are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed. ### Example Usage @@ -93,22 +25,36 @@ using LukeHagar.PlexAPI.SDK; using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Updater.ApplyUpdatesAsync( - tonight: Tonight.One, - skip: Skip.One +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" ); +ApplyUpdatesRequest req = new ApplyUpdatesRequest() { + Tonight = BoolInt.One, + Skip = BoolInt.One, +}; + +var res = await sdk.Updater.ApplyUpdatesAsync(req); + // handle response ``` ### Parameters -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `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 | 1 | -| `Skip` | [Skip](../../Models/Requests/Skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`. | 1 | +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [ApplyUpdatesRequest](../../Models/Requests/ApplyUpdatesRequest.md) | :heavy_check_mark: | The request object to use for the request. | ### Response @@ -116,8 +62,86 @@ var res = await sdk.Updater.ApplyUpdatesAsync( ### Errors -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| LukeHagar.PlexAPI.SDK.Models.Errors.ApplyUpdatesBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.ApplyUpdatesUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## CheckUpdates + +Perform an update check and potentially download + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; +using LukeHagar.PlexAPI.SDK.Models.Requests; + +var sdk = new PlexAPI( + accepts: LukeHagar.PlexAPI.SDK.Models.Components.Accepts.ApplicationXml, + clientIdentifier: "abc123", + product: "Plex for Roku", + version: "2.4.1", + platform: "Roku", + platformVersion: "4.3 build 1057", + device: "Roku 3", + model: "4200X", + deviceVendor: "Roku", + deviceName: "Living Room TV", + marketplace: "googlePlay", + token: "" +); + +CheckUpdatesRequest req = new CheckUpdatesRequest() { + Download = BoolInt.One, +}; + +var res = await sdk.Updater.CheckUpdatesAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [CheckUpdatesRequest](../../Models/Requests/CheckUpdatesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[CheckUpdatesResponse](../../Models/Requests/CheckUpdatesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | + +## GetUpdatesStatus + +Get the status of updating the server + +### Example Usage + + +```csharp +using LukeHagar.PlexAPI.SDK; +using LukeHagar.PlexAPI.SDK.Models.Components; + +var sdk = new PlexAPI(token: ""); + +var res = await sdk.Updater.GetUpdatesStatusAsync(); + +// handle response +``` + +### Response + +**[GetUpdatesStatusResponse](../../Models/Requests/GetUpdatesStatusResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/users/README.md b/docs/sdks/users/README.md deleted file mode 100644 index ce5588d..0000000 --- a/docs/sdks/users/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# Users -(*Users*) - -## Overview - -### Available Operations - -* [GetUsers](#getusers) - Get list of all connected users - -## GetUsers - -Get list of all users that are friends and have library access with the provided Plex authentication token - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(); - -GetUsersRequest req = new GetUsersRequest() { - ClientID = "3381b62b-9ab7-4e37-827b-203e9809eb58", - ClientName = "Plex for Roku", - DeviceNickname = "Roku 3", - DeviceName = "Chrome", - DeviceScreenResolution = "1487x1165,2560x1440", - ClientVersion = "2.4.1", - Platform = "Roku", - ClientFeatures = "external-media,indirect-media,hub-style-list", - Model = "4200X", - XPlexSessionId = "97e136ef-4ddd-4ff3-89a7-a5820c96c2ca", - XPlexLanguage = "en", - PlatformVersion = "4.3 build 1057", - XPlexToken = "CV5xoxjTpFKUzBTShsaf", -}; - -var res = await sdk.Users.GetUsersAsync(req); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| `request` | [GetUsersRequest](../../Models/Requests/GetUsersRequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[GetUsersResponse](../../Models/Requests/GetUsersResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetUsersBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetUsersUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/video/README.md b/docs/sdks/video/README.md deleted file mode 100644 index 28fe453..0000000 --- a/docs/sdks/video/README.md +++ /dev/null @@ -1,118 +0,0 @@ -# Video -(*Video*) - -## Overview - -API Calls that perform operations with Plex Media Server Videos - - -### Available Operations - -* [GetTimeline](#gettimeline) - Get the timeline for a media item -* [StartUniversalTranscode](#startuniversaltranscode) - Start Universal Transcode - -## GetTimeline - -Get the timeline for a media item - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -GetTimelineRequest req = new GetTimelineRequest() { - RatingKey = 23409D, - Key = "/library/metadata/23409", - State = State.Playing, - HasMDE = 1D, - Time = 2000D, - Duration = 10000D, - Context = "home:hub.continueWatching", - PlayQueueItemID = 1D, - PlayBackTime = 2000D, - Row = 1D, -}; - -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)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetTimelineBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetTimelineUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## StartUniversalTranscode - -Begin a Universal Transcode Session - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -StartUniversalTranscodeRequest req = new StartUniversalTranscodeRequest() { - HasMDE = 1D, - Path = "/library/metadata/23409", - MediaIndex = 0D, - PartIndex = 0D, - Protocol = "hls", - FastSeek = 0D, - DirectPlay = 0D, - DirectStream = 0D, - SubtitleSize = 100D, - Subtites = "burn", - AudioBoost = 100D, - Location = "lan", - MediaBufferSize = 102400D, - Session = "zvcage8b7rkioqcm8f4uns4c", - AddDebugOverlay = 0D, - AutoAdjustQuality = 0D, -}; - -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)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.StartUniversalTranscodeBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.StartUniversalTranscodeUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/watchlist/README.md b/docs/sdks/watchlist/README.md deleted file mode 100644 index bc90b6f..0000000 --- a/docs/sdks/watchlist/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# Watchlist -(*Watchlist*) - -## Overview - -API Calls that perform operations with Plex Media Server Watchlists - - -### Available Operations - -* [GetWatchList](#getwatchlist) - Get User Watchlist - -## GetWatchList - -Get User Watchlist - -### Example Usage - - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; -using LukeHagar.PlexAPI.SDK.Models.Requests; - -var sdk = new PlexAPI(accessToken: ""); - -GetWatchListRequest req = new GetWatchListRequest() { - Filter = Filter.Released, - XPlexToken = "CV5xoxjTpFKUzBTShsaf", -}; - -var res = await sdk.Watchlist.GetWatchListAsync(req); - -// handle response -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `request` | [GetWatchListRequest](../../Models/Requests/GetWatchListRequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[GetWatchListResponse](../../Models/Requests/GetWatchListResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetWatchListBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetWatchListUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file