using MediaBrowser.Model.Channels; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Devices; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Events; using MediaBrowser.Model.Globalization; using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Net; using MediaBrowser.Model.Notifications; using MediaBrowser.Model.Playlists; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Querying; using MediaBrowser.Model.Search; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Session; using MediaBrowser.Model.Sync; using MediaBrowser.Model.System; using MediaBrowser.Model.Tasks; using MediaBrowser.Model.Users; using System; using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Model.ApiClient { /// /// Interface IApiClient /// public interface IApiClient : IServerEvents, IDisposable { /// /// Occurs when [remote logged out]. /// event EventHandler> RemoteLoggedOut; /// /// Gets the API URL. /// /// The handler. /// System.String. string GetApiUrl(string handler); /// /// Gets the game system summaries async. /// /// The cancellation token. /// Task{List{GameSystemSummary}}. Task> GetGameSystemSummariesAsync(CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the async. /// /// /// The URL. /// The cancellation token. /// Task{``0}. Task GetAsync(string url, CancellationToken cancellationToken = default(CancellationToken)) where T : class; /// /// Reports the capabilities. /// /// The capabilities. /// The cancellation token. /// Task. Task ReportCapabilities(ClientCapabilities capabilities, CancellationToken cancellationToken = default(CancellationToken)); /// /// Logouts this instance. /// /// Task. Task Logout(); /// /// Gets the index of the game players. /// /// The user id. /// The cancellation token. /// Task{List{ItemIndex}}. Task> GetGamePlayerIndex(string userId, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the index of the year. /// /// The user id. /// The include item types. /// The cancellation token. /// Task{List{ItemIndex}}. Task> GetYearIndex(string userId, string[] includeItemTypes, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the critic reviews. /// /// The item id. /// The cancellation token. /// The start index. /// The limit. /// Task{ItemReviewsResult}. Task> GetCriticReviews(string itemId, CancellationToken cancellationToken = default(CancellationToken), int? startIndex = null, int? limit = null); /// /// Gets the theme songs async. /// /// The user id. /// The item id. /// if set to true [inherit from parents]. /// The cancellation token. /// Task{ThemeMediaResult}. Task GetThemeSongsAsync(string userId, string itemId, bool inheritFromParents, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the search hints async. /// /// The query. /// Task{SearchHintResult}. Task GetSearchHintsAsync(SearchQuery query); /// /// Gets the filters. /// /// The user identifier. /// The parent identifier. /// The media types. /// The item types. /// Task<QueryFilters>. Task GetFilters(string userId, string parentId, string[] mediaTypes, string[] itemTypes); /// /// Gets the theme videos async. /// /// The user id. /// The item id. /// if set to true [inherit from parents]. /// The cancellation token. /// Task{ThemeMediaResult}. Task GetThemeVideosAsync(string userId, string itemId, bool inheritFromParents, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets all theme media async. /// /// The user id. /// The item id. /// if set to true [inherit from parents]. /// The cancellation token. /// Task{AllThemeMediaResult}. Task GetAllThemeMediaAsync(string userId, string itemId, bool inheritFromParents, CancellationToken cancellationToken = default(CancellationToken)); /// /// Marks the notifications read. /// /// The user id. /// The notification id list. /// if set to true [is read]. /// Task. Task MarkNotificationsRead(string userId, IEnumerable notificationIdList, bool isRead); /// /// Gets the notifications summary. /// /// The user id. /// Task{NotificationsSummary}. Task GetNotificationsSummary(string userId); /// /// Gets the notifications async. /// /// The query. /// Task{NotificationResult}. Task GetNotificationsAsync(NotificationQuery query); /// /// Gets an image stream based on a url /// /// The URL. /// The cancellation token. /// Task{Stream}. /// url Task GetImageStreamAsync(string url, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the stream. /// /// The URL. /// The cancellation token. /// Task<Stream>. Task GetStream(string url, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the response. /// /// The URL. /// The cancellation token. /// Task<HttpResponse>. Task GetResponse(string url, CancellationToken cancellationToken = default(CancellationToken)); /// /// Updates the user configuration. /// /// The user identifier. /// The configuration. /// Task. Task UpdateUserConfiguration(string userId, UserConfiguration configuration); /// /// Gets a BaseItem /// /// The id. /// The user id. /// Task{BaseItemDto}. /// id Task GetItemAsync(string id, string userId); /// /// Gets the latest items. /// /// The query. /// Task<QueryResult<BaseItemDto>>. Task GetLatestItems(LatestItemsQuery query); /// /// Gets the intros async. /// /// The item id. /// The user id. /// Task{ItemsResult}. Task GetIntrosAsync(string itemId, string userId); /// /// Gets a BaseItem /// /// The user id. /// Task{BaseItemDto}. /// userId Task GetRootFolderAsync(string userId); /// /// Gets the additional parts. /// /// The item identifier. /// The user identifier. /// Task{BaseItemDto[]}. Task GetAdditionalParts(string itemId, string userId); /// /// Gets the playback information. /// /// The item identifier. /// The user identifier. /// Task<LiveMediaInfoResult>. Task GetPlaybackInfo(string itemId, string userId); /// /// Gets the users async. /// /// The query. /// Task{UserDto[]}. Task GetUsersAsync(UserQuery query); /// /// Gets the public users async. /// /// The cancellation token. /// Task{UserDto[]}. Task GetPublicUsersAsync(CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets active client sessions. /// /// The query. /// Task{SessionInfoDto[]}. Task GetClientSessionsAsync(SessionQuery query); /// /// Gets the client session asynchronous. /// /// Task{SessionInfoDto}. Task GetCurrentSessionAsync(CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the item counts async. /// /// The query. /// Task{ItemCounts}. Task GetItemCountsAsync(ItemCountsQuery query); /// /// Gets the episodes asynchronous. /// /// The query. /// The cancellation token. /// Task{ItemsResult}. Task GetEpisodesAsync(EpisodeQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the seasons asynchronous. /// /// The query. /// The cancellation token. /// Task{ItemsResult}. Task GetSeasonsAsync(SeasonQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Queries for items /// /// The query. /// The cancellation token. /// Task{ItemsResult}. /// query Task GetItemsAsync(ItemQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the user views. /// /// The user identifier. /// The cancellation token. /// Task<ItemsResult>. Task GetUserViews(string userId, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the instant mix from song async. /// /// The query. /// Task{ItemsResult}. Task GetInstantMixFromSongAsync(SimilarItemsQuery query); /// /// Gets the instant mix from album async. /// /// The query. /// Task{ItemsResult}. Task GetInstantMixFromAlbumAsync(SimilarItemsQuery query); /// /// Gets the instant mix from artist async. /// /// The query. /// Task{ItemsResult}. Task GetInstantMixFromArtistAsync(SimilarItemsQuery query); /// /// Gets the instant mix from music genre async. /// /// The query. /// Task{ItemsResult}. Task GetInstantMixFromMusicGenreAsync(SimilarItemsQuery query); /// /// Gets the similar movies async. /// /// The query. /// The cancellation token. /// Task{ItemsResult}. Task GetSimilarMoviesAsync(SimilarItemsQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the similar trailers async. /// /// The query. /// The cancellation token. /// Task{ItemsResult}. Task GetSimilarTrailersAsync(SimilarItemsQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the similar series async. /// /// The query. /// The cancellation token. /// Task{ItemsResult}. Task GetSimilarSeriesAsync(SimilarItemsQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the similar albums async. /// /// The query. /// The cancellation token. /// Task{ItemsResult}. Task GetSimilarAlbumsAsync(SimilarItemsQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the similar games async. /// /// The query. /// The cancellation token. /// Task{ItemsResult}. Task GetSimilarGamesAsync(SimilarItemsQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the people async. /// /// The query. /// The cancellation token. /// Task{ItemsResult}. /// userId Task GetPeopleAsync(PersonsQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the artists. /// /// The query. /// Task{ItemsResult}. /// userId Task GetArtistsAsync(ArtistsQuery query); /// /// Gets the album artists asynchronous. /// /// The query. /// Task{ItemsResult}. Task GetAlbumArtistsAsync(ArtistsQuery query); /// /// Gets the next up async. /// /// The query. /// The cancellation token. /// Task{ItemsResult}. Task GetNextUpEpisodesAsync(NextUpQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the upcoming episodes asynchronous. /// /// The query. /// Task{ItemsResult}. Task GetUpcomingEpisodesAsync(UpcomingEpisodesQuery query); /// /// Gets a genre /// /// The name. /// The user id. /// Task{BaseItemDto}. /// userId Task GetGenreAsync(string name, string userId); /// /// Gets the genres async. /// /// The query. /// Task{ItemsResult}. Task GetGenresAsync(ItemsByNameQuery query); /// /// Gets the music genres async. /// /// The query. /// Task{ItemsResult}. Task GetMusicGenresAsync(ItemsByNameQuery query); /// /// Gets the game genres async. /// /// The query. /// Task{ItemsResult}. Task GetGameGenresAsync(ItemsByNameQuery query); /// /// Gets the studios async. /// /// The query. /// Task{ItemsResult}. Task GetStudiosAsync(ItemsByNameQuery query); /// /// Gets the music genre async. /// /// The name. /// The user id. /// Task{BaseItemDto}. Task GetMusicGenreAsync(string name, string userId); /// /// Gets the game genre async. /// /// The name. /// The user id. /// Task{BaseItemDto}. Task GetGameGenreAsync(string name, string userId); /// /// Restarts the server. /// /// Task. Task RestartServerAsync(); /// /// Gets the system status async. /// /// The cancellation token. /// Task{SystemInfo}. Task GetSystemInfoAsync(CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the public system information asynchronous. /// /// The cancellation token. /// Task<PublicSystemInfo>. Task GetPublicSystemInfoAsync(CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets a list of plugins installed on the server /// /// Task{PluginInfo[]}. Task GetInstalledPluginsAsync(); /// /// Gets the current server configuration /// /// Task{ServerConfiguration}. Task GetServerConfigurationAsync(); /// /// Gets the scheduled tasks. /// /// Task{TaskInfo[]}. Task GetScheduledTasksAsync(); /// /// Gets the scheduled task async. /// /// The id. /// Task{TaskInfo}. /// id Task GetScheduledTaskAsync(string id); /// /// Gets a user by id /// /// The id. /// Task{UserDto}. /// id Task GetUserAsync(string id); /// /// Gets the offline user asynchronous. /// /// The identifier. /// Task<UserDto>. Task GetOfflineUserAsync(string id); /// /// Gets the parental ratings async. /// /// Task{List{ParentalRating}}. Task> GetParentalRatingsAsync(); /// /// Gets local trailers for an item /// /// The user id. /// The item id. /// Task{ItemsResult}. /// query Task GetLocalTrailersAsync(string userId, string itemId); /// /// Gets special features for an item /// /// The user id. /// The item id. /// Task{BaseItemDto[]}. /// userId Task GetSpecialFeaturesAsync(string userId, string itemId); /// /// Gets the cultures async. /// /// Task{CultureDto[]}. Task GetCulturesAsync(); /// /// Gets the countries async. /// /// Task{CountryInfo[]}. Task GetCountriesAsync(); /// /// Marks the played async. /// /// The item id. /// The user id. /// The date played. /// Task{UserItemDataDto}. Task MarkPlayedAsync(string itemId, string userId, DateTime? datePlayed); /// /// Marks the unplayed async. /// /// The item id. /// The user id. /// Task{UserItemDataDto}. Task MarkUnplayedAsync(string itemId, string userId); /// /// Updates the favorite status async. /// /// The item id. /// The user id. /// if set to true [is favorite]. /// Task. /// itemId Task UpdateFavoriteStatusAsync(string itemId, string userId, bool isFavorite); /// /// Reports to the server that the user has begun playing an item /// /// The information. /// Task{UserItemDataDto}. /// itemId Task ReportPlaybackStartAsync(PlaybackStartInfo info); /// /// Reports playback progress to the server /// /// The information. /// Task{UserItemDataDto}. /// itemId Task ReportPlaybackProgressAsync(PlaybackProgressInfo info); /// /// Reports to the server that the user has stopped playing an item /// /// The information. /// Task{UserItemDataDto}. /// itemId Task ReportPlaybackStoppedAsync(PlaybackStopInfo info); /// /// Instructs another client to browse to a library item. /// /// The session id. /// The id of the item to browse to. /// The name of the item to browse to. /// The type of the item to browse to. /// Task. Task SendBrowseCommandAsync(string sessionId, string itemId, string itemName, string itemType); /// /// Sends the playstate command async. /// /// The session id. /// The request. /// Task. Task SendPlaystateCommandAsync(string sessionId, PlaystateRequest request); /// /// Sends the play command async. /// /// The session id. /// The request. /// Task. /// sessionId /// or /// request Task SendPlayCommandAsync(string sessionId, PlayRequest request); /// /// Sends the command asynchronous. /// /// The session identifier. /// The command. /// Task. Task SendCommandAsync(string sessionId, GeneralCommand command); /// /// Sends the string. /// /// The session identifier. /// The text. /// Task. Task SendString(string sessionId, string text); /// /// Sets the volume. /// /// The session identifier. /// The volume. /// Task. Task SetVolume(string sessionId, int volume); /// /// Stops the transcoding processes. /// /// The device identifier. /// The stream identifier. /// Task. Task StopTranscodingProcesses(string deviceId, string streamId); /// /// Sets the index of the audio stream. /// /// The session identifier. /// The index. /// Task. Task SetAudioStreamIndex(string sessionId, int index); /// /// Sets the index of the subtitle stream. /// /// The session identifier. /// The index. /// Task. Task SetSubtitleStreamIndex(string sessionId, int? index); /// /// Instructs the client to display a message to the user /// /// The session id. /// The command. /// Task. Task SendMessageCommandAsync(string sessionId, MessageCommand command); /// /// Clears a user's rating for an item /// /// The item id. /// The user id. /// Task{UserItemDataDto}. /// itemId Task ClearUserItemRatingAsync(string itemId, string userId); /// /// Updates a user's rating for an item, based on likes or dislikes /// /// The item id. /// The user id. /// if set to true [likes]. /// Task. /// itemId Task UpdateUserItemRatingAsync(string itemId, string userId, bool likes); /// /// Authenticates a user and returns the result /// /// The username. /// The password. /// Task. /// userId Task AuthenticateUserAsync(string username, string password); /// /// Updates the server configuration async. /// /// The configuration. /// Task. /// configuration Task UpdateServerConfigurationAsync(ServerConfiguration configuration); /// /// Updates the scheduled task triggers. /// /// The id. /// The triggers. /// Task{RequestResult}. /// id Task UpdateScheduledTaskTriggersAsync(string id, TaskTriggerInfo[] triggers); /// /// Gets the display preferences. /// /// The id. /// The user id. /// The client. /// The cancellation token. /// Task{BaseItemDto}. Task GetDisplayPreferencesAsync(string id, string userId, string client, CancellationToken cancellationToken = default(CancellationToken)); /// /// Updates display preferences for a user /// /// The display preferences. /// The user id. /// The client. /// The cancellation token. /// Task{DisplayPreferences}. /// userId Task UpdateDisplayPreferencesAsync(DisplayPreferences displayPreferences, string userId, string client, CancellationToken cancellationToken = default(CancellationToken)); /// /// Posts a set of data to a url, and deserializes the return stream into T /// /// /// The URL. /// The args. /// The cancellation token. /// Task{``0}. Task PostAsync(string url, Dictionary args, CancellationToken cancellationToken = default(CancellationToken)) where T : class; /// /// This is a helper around getting a stream from the server that contains serialized data /// /// The URL. /// Task{Stream}. Task GetSerializedStreamAsync(string url); /// /// Gets the json serializer. /// /// The json serializer. IJsonSerializer JsonSerializer { get; set; } /// /// Gets or sets the server address /// /// The server address. string ServerAddress { get; } /// /// Gets or sets the type of the client. /// /// The type of the client. string ClientName { get; set; } /// /// Gets the device. /// /// The device. IDevice Device { get; } /// /// Gets or sets the name of the device. /// /// The name of the device. string DeviceName { get; } /// /// Gets or sets the device id. /// /// The device id. string DeviceId { get; } /// /// Gets or sets the current user id. /// /// The current user id. string CurrentUserId { get; } /// /// Gets the access token. /// /// The access token. string AccessToken { get; } /// /// Sets the authentication information. /// /// The access token. /// The user identifier. void SetAuthenticationInfo(string accessToken, string userId); /// /// Sets the authentication information. /// /// The access token. void SetAuthenticationInfo(string accessToken); /// /// Clears the authentication information. /// void ClearAuthenticationInfo(); /// /// Changes the server location. /// /// The address. /// if set to true [keep existing authentication]. void ChangeServerLocation(string address, bool keepExistingAuth = false); /// /// Starts the receiving synchronize job updates. /// /// The interval ms. /// The job identifier. /// Task. Task StartReceivingSyncJobUpdates(int intervalMs, string jobId); /// /// Stops the receiving synchronize job updates. /// /// Task. Task StopReceivingSyncJobUpdates(); /// /// Starts the receiving synchronize jobs updates. /// /// The interval ms. /// The user identifier. /// The target identifier. /// Task. Task StartReceivingSyncJobsUpdates(int intervalMs, string userId, string targetId); /// /// Stops the receiving synchronize jobs updates. /// /// Task. Task StopReceivingSyncJobsUpdates(); /// /// Starts the receiving session updates. /// /// The interval ms. /// Task. Task StartReceivingSessionUpdates(int intervalMs); /// /// Stops the receiving session updates. /// /// Task. Task StopReceivingSessionUpdates(); /// /// Gets the image URL. /// /// The item. /// The options. /// System.String. /// item string GetImageUrl(BaseItemDto item, ImageOptions options); /// /// Gets the image URL. /// /// The item. /// The options. /// System.String. string GetImageUrl(ChannelInfoDto item, ImageOptions options); /// /// Gets the image URL. /// /// The item. /// The options. /// System.String. string GetImageUrl(RecordingInfoDto item, ImageOptions options); /// /// Gets the image URL. /// /// The item. /// The options. /// System.String. string GetImageUrl(ProgramInfoDto item, ImageOptions options); /// /// Gets the subtitle URL. /// /// The options. /// System.String. string GetSubtitleUrl(SubtitleDownloadOptions options); /// /// Gets an image url that can be used to download an image from the api /// /// The Id of the item /// The options. /// System.String. /// itemId string GetImageUrl(string itemId, ImageOptions options); /// /// Gets the user image URL. /// /// The user. /// The options. /// System.String. /// user string GetUserImageUrl(UserDto user, ImageOptions options); /// /// Gets an image url that can be used to download an image from the api /// /// The Id of the user /// The options. /// System.String. /// userId string GetUserImageUrl(string userId, ImageOptions options); /// /// Gets the person image URL. /// /// The item. /// The options. /// System.String. /// item string GetPersonImageUrl(BaseItemPerson item, ImageOptions options); /// /// Gets an image url that can be used to download an image from the api /// /// The name. /// The options. /// System.String. /// name string GetGenreImageUrl(string name, ImageOptions options); /// /// Gets the music genre image URL. /// /// The name. /// The options. /// System.String. string GetMusicGenreImageUrl(string name, ImageOptions options); /// /// Gets the game genre image URL. /// /// The name. /// The options. /// System.String. string GetGameGenreImageUrl(string name, ImageOptions options); /// /// This is a helper to get a list of backdrop url's from a given ApiBaseItemWrapper. If the actual item does not have any backdrops it will return backdrops from the first parent that does. /// /// A given item. /// The options. /// System.String[][]. /// item string[] GetBackdropImageUrls(BaseItemDto item, ImageOptions options); /// /// This is a helper to get the logo image url from a given ApiBaseItemWrapper. If the actual item does not have a logo, it will return the logo from the first parent that does, or null. /// /// A given item. /// The options. /// System.String. /// item string GetLogoImageUrl(BaseItemDto item, ImageOptions options); /// /// Gets the art image URL. /// /// The item. /// The options. /// System.String. string GetArtImageUrl(BaseItemDto item, ImageOptions options); /// /// Gets the thumb image URL. /// /// The item. /// The options. /// System.String. string GetThumbImageUrl(BaseItemDto item, ImageOptions options); /// /// Gets the live tv information asynchronous. /// /// The cancellation token. /// Task{LiveTvInfo}. Task GetLiveTvInfoAsync(CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv channels asynchronous. /// /// The query. /// The cancellation token. /// Task{LiveTvInfo}. Task> GetLiveTvChannelsAsync(LiveTvChannelQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv channel asynchronous. /// /// The identifier. /// The user identifier. /// The cancellation token. /// Task{ChannelInfoDto}. Task GetLiveTvChannelAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv recordings asynchronous. /// /// The query. /// The cancellation token. /// Task{QueryResult{RecordingInfoDto}}. Task> GetLiveTvRecordingsAsync(RecordingQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv recording asynchronous. /// /// The identifier. /// The user identifier. /// The cancellation token. /// Task{RecordingInfoDto}. Task GetLiveTvRecordingAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv recording groups asynchronous. /// /// The query. /// The cancellation token. /// Task{QueryResult{RecordingGroupDto}}. Task> GetLiveTvRecordingGroupsAsync(RecordingGroupQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv recording group asynchronous. /// /// The identifier. /// The user identifier. /// The cancellation token. /// Task{RecordingGroupDto}. Task GetLiveTvRecordingGroupAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv timers asynchronous. /// /// The query. /// The cancellation token. /// Task{QueryResult{TimerInfoDto}}. Task> GetLiveTvTimersAsync(TimerQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv programs asynchronous. /// /// The query. /// The cancellation token. /// Task{QueryResult{ProgramInfoDto}}. Task> GetLiveTvProgramsAsync(ProgramQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv program asynchronous. /// /// The identifier. /// The user identifier. /// The cancellation token. /// Task{ProgramInfoDto}. Task GetLiveTvProgramAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the recommended live tv programs asynchronous. /// /// The query. /// The cancellation token. /// Task{QueryResult{ProgramInfoDto}}. Task> GetRecommendedLiveTvProgramsAsync(RecommendedProgramQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Creates the live tv timer asynchronous. /// /// The timer. /// The cancellation token. /// Task. Task CreateLiveTvTimerAsync(BaseTimerInfoDto timer, CancellationToken cancellationToken = default(CancellationToken)); /// /// Updates the live tv timer asynchronous. /// /// The timer. /// The cancellation token. /// Task. Task UpdateLiveTvTimerAsync(TimerInfoDto timer, CancellationToken cancellationToken = default(CancellationToken)); /// /// Creates the live tv series timer asynchronous. /// /// The timer. /// The cancellation token. /// Task. Task CreateLiveTvSeriesTimerAsync(SeriesTimerInfoDto timer, CancellationToken cancellationToken = default(CancellationToken)); /// /// Updates the live tv series timer asynchronous. /// /// The timer. /// The cancellation token. /// Task. Task UpdateLiveTvSeriesTimerAsync(SeriesTimerInfoDto timer, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv timer asynchronous. /// /// The identifier. /// The cancellation token. /// Task{TimerInfoDto}. Task GetLiveTvTimerAsync(string id, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv series timers asynchronous. /// /// The query. /// The cancellation token. /// Task{QueryResult{SeriesTimerInfoDto}}. Task> GetLiveTvSeriesTimersAsync(SeriesTimerQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv series timer asynchronous. /// /// The identifier. /// The cancellation token. /// Task{SeriesTimerInfoDto}. Task GetLiveTvSeriesTimerAsync(string id, CancellationToken cancellationToken = default(CancellationToken)); /// /// Cancels the live tv timer asynchronous. /// /// The identifier. /// The cancellation token. /// Task. Task CancelLiveTvTimerAsync(string id, CancellationToken cancellationToken = default(CancellationToken)); /// /// Cancels the live tv series timer asynchronous. /// /// The identifier. /// The cancellation token. /// Task. Task CancelLiveTvSeriesTimerAsync(string id, CancellationToken cancellationToken = default(CancellationToken)); /// /// Deletes the live tv recording asynchronous. /// /// The identifier. /// The cancellation token. /// Task. Task DeleteLiveTvRecordingAsync(string id, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the default timer information. /// /// The cancellation token. /// Task{SeriesTimerInfoDto}. Task GetDefaultLiveTvTimerInfo(CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the live tv guide information. /// /// The cancellation token. /// Task{GuideInfo}. Task GetLiveTvGuideInfo(CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the default timer information. /// /// The program identifier. /// The cancellation token. /// Task{SeriesTimerInfoDto}. Task GetDefaultLiveTvTimerInfo(string programId, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the channel features. /// /// The channel identifier. /// The cancellation token. /// Task{ChannelFeatures}. Task GetChannelFeatures(string channelId, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the channel items. /// /// The query. /// The cancellation token. /// Task{QueryResult{BaseItemDto}}. Task> GetChannelItems(ChannelItemQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the channels. /// /// The query. /// The cancellation token. /// Task{QueryResult{BaseItemDto}}. Task> GetChannels(ChannelQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the latest channel items. /// /// The query. /// The cancellation token. /// Task{QueryResult{BaseItemDto}}. Task> GetLatestChannelItems(AllChannelMediaQuery query, CancellationToken cancellationToken = default(CancellationToken)); /// /// Creates the playlist. /// /// The request. /// Task<PlaylistCreationResult>. Task CreatePlaylist(PlaylistCreationRequest request); /// /// Adds to playlist. /// /// The playlist identifier. /// The item ids. /// The user identifier. /// Task. Task AddToPlaylist(string playlistId, IEnumerable itemIds, string userId); /// /// Removes from playlist. /// /// The playlist identifier. /// The entry ids. /// Task. Task RemoveFromPlaylist(string playlistId, IEnumerable entryIds); /// /// Gets the playlist items. /// /// The query. /// Task<QueryResult<BaseItemDto>>. Task> GetPlaylistItems(PlaylistItemQuery query); /// /// Sends the context message asynchronous. /// /// Type of the item. /// The item identifier. /// Name of the item. /// The context. /// The cancellation token. /// Task. Task SendContextMessageAsync(string itemType, string itemId, string itemName, string context, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the content upload history. /// /// The device identifier. /// Task<ContentUploadHistory>. Task GetContentUploadHistory(string deviceId); /// /// Uploads the file. /// /// The stream. /// The file. /// The cancellation token. /// Task. Task UploadFile(Stream stream, LocalFileInfo file, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the devices options options. /// /// Task<DevicesOptions>. Task GetDevicesOptions(); /// /// Updates the item. /// /// The item. /// Task. Task UpdateItem(BaseItemDto item); /// /// Creates the synchronize job. /// /// The request. /// Task<SyncJob>. Task CreateSyncJob(SyncJobRequest request); /// /// Updates the synchronize job. /// /// The job. /// Task. Task UpdateSyncJob(SyncJob job); /// /// Gets the synchronize jobs. /// /// The query. /// Task<QueryResult<SyncJob>>. Task> GetSyncJobs(SyncJobQuery query); /// /// Gets the synchronize job items. /// /// The query. /// Task<QueryResult<SyncJobItem>>. Task> GetSyncJobItems(SyncJobItemQuery query); /// /// Reports the synchronize job item transferred. /// /// The identifier. /// Task. Task ReportSyncJobItemTransferred(string id); /// /// Gets the synchronize job item file. /// /// The identifier. /// The cancellation token. /// Task<Stream>. Task GetSyncJobItemFile(string id, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the synchronize job item additional file. /// /// The identifier. /// The name. /// The cancellation token. /// Task<Stream>. Task GetSyncJobItemAdditionalFile(string id, string name, CancellationToken cancellationToken); /// /// Opens the web socket. /// /// The web socket factory. /// The keep alive timer ms. void OpenWebSocket(Func webSocketFactory, int keepAliveTimerMs = 60000); /// /// Reports the offline actions. /// /// The actions. /// Task. Task ReportOfflineActions(List actions); /// /// Gets the ready synchronize items. /// /// The target identifier. /// List<SyncedItem>. Task> GetReadySyncItems(string targetId); /// /// Synchronizes the data. /// /// The request. /// Task<SyncDataResponse>. Task SyncData(SyncDataRequest request); /// /// Gets the synchronize job item file URL. /// /// The identifier. /// System.String. string GetSyncJobItemFileUrl(string id); /// /// Marks the synchronize job item for removal. /// /// The identifier. /// Task. Task MarkSyncJobItemForRemoval(string id); /// /// Unmarks the synchronize job item for removal. /// /// The identifier. /// Task. Task UnmarkSyncJobItemForRemoval(string id); /// /// Queues the failed synchronize job item for retry. /// /// The identifier. /// Task. Task QueueFailedSyncJobItemForRetry(string id); /// /// Cancels the synchronize job. /// /// The identifier. /// Task. Task CancelSyncJob(string id); /// /// Cancels the synchronize job item. /// /// The identifier. /// Task. Task CancelSyncJobItem(string id); /// /// Enables the cancelled synchronize job item. /// /// The identifier. /// Task. Task EnableCancelledSyncJobItem(string id); /// /// Gets the synchronize options. /// /// The job information. /// Task<SyncOptions>. Task GetSyncOptions(SyncJobRequest jobInfo); /// /// Gets the synchronize options. /// /// The job information. /// Task<SyncDialogOptions>. Task GetSyncOptions(SyncJob jobInfo); /// /// Gets the movie recommendations. /// /// The query. /// Task<List<RecommendationDto>>. Task> GetMovieRecommendations(MovieRecommendationQuery query); } }