use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; #[derive(Serialize, Deserialize, Debug, Clone)] pub struct AccessSchedule { #[serde(skip_serializing_if = "Option::is_none")] pub id: Option, #[serde(skip_serializing_if = "Option::is_none")] pub user_id: Option, #[serde(skip_serializing_if = "Option::is_none")] pub day_of_week: Option, #[serde(skip_serializing_if = "Option::is_none")] pub start_hour: Option, #[serde(skip_serializing_if = "Option::is_none")] pub end_hour: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ActivityLogEntry { #[serde(skip_serializing_if = "Option::is_none")] pub id: Option, #[serde(skip_serializing_if = "Option::is_none")] pub name: Option, #[serde(skip_serializing_if = "Option::is_none")] pub overview: Option, #[serde(skip_serializing_if = "Option::is_none")] pub short_overview: Option, #[serde(skip_serializing_if = "Option::is_none")] pub r#type: Option, #[serde(skip_serializing_if = "Option::is_none")] pub item_id: Option, #[serde(skip_serializing_if = "Option::is_none")] pub date: Option, #[serde(skip_serializing_if = "Option::is_none")] pub user_id: Option, #[serde(skip_serializing_if = "Option::is_none")] pub user_primary_image_tag: Option, #[serde(skip_serializing_if = "Option::is_none")] pub severity: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ActivityLogEntryMessage { #[serde(skip_serializing_if = "Option::is_none")] pub data: Option>, #[serde(skip_serializing_if = "Option::is_none")] pub message_id: Option, #[serde(skip_serializing_if = "Option::is_none")] pub message_type: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ActivityLogEntryQueryResult { #[serde(skip_serializing_if = "Option::is_none")] pub items: Option>, #[serde(skip_serializing_if = "Option::is_none")] pub total_record_count: Option, #[serde(skip_serializing_if = "Option::is_none")] pub start_index: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ActivityLogEntryStartMessage { #[serde(skip_serializing_if = "Option::is_none")] pub data: Option, #[serde(skip_serializing_if = "Option::is_none")] pub message_type: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ActivityLogEntryStopMessage { #[serde(skip_serializing_if = "Option::is_none")] pub message_type: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct AddVirtualFolderDto { #[serde(skip_serializing_if = "Option::is_none")] pub library_options: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct AlbumInfo { #[serde(skip_serializing_if = "Option::is_none")] pub name: Option, #[serde(skip_serializing_if = "Option::is_none")] pub original_title: Option, #[serde(skip_serializing_if = "Option::is_none")] pub path: Option, #[serde(skip_serializing_if = "Option::is_none")] pub metadata_language: Option, #[serde(skip_serializing_if = "Option::is_none")] pub metadata_country_code: Option, #[serde(skip_serializing_if = "Option::is_none")] pub provider_ids: Option>>, #[serde(skip_serializing_if = "Option::is_none")] pub year: Option, #[serde(skip_serializing_if = "Option::is_none")] pub index_number: Option, #[serde(skip_serializing_if = "Option::is_none")] pub parent_index_number: Option, #[serde(skip_serializing_if = "Option::is_none")] pub premiere_date: Option, #[serde(skip_serializing_if = "Option::is_none")] pub is_automated: Option, #[serde(skip_serializing_if = "Option::is_none")] pub album_artists: Option>, #[serde(skip_serializing_if = "Option::is_none")] pub artist_provider_ids: Option>>, #[serde(skip_serializing_if = "Option::is_none")] pub song_infos: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct AlbumInfoRemoteSearchQuery { #[serde(skip_serializing_if = "Option::is_none")] pub search_info: Option, #[serde(skip_serializing_if = "Option::is_none")] pub item_id: Option, #[serde(skip_serializing_if = "Option::is_none")] pub search_provider_name: Option, #[serde(skip_serializing_if = "Option::is_none")] pub include_disabled_providers: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct AllThemeMediaResult { #[serde(skip_serializing_if = "Option::is_none")] pub theme_videos_result: Option, #[serde(skip_serializing_if = "Option::is_none")] pub theme_songs_result: Option, #[serde(skip_serializing_if = "Option::is_none")] pub soundtrack_songs_result: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ApiName(pub String); #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ArtistInfo { #[serde(skip_serializing_if = "Option::is_none")] pub name: Option, #[serde(skip_serializing_if = "Option::is_none")] pub original_title: Option, #[serde(skip_serializing_if = "Option::is_none")] pub path: Option, #[serde(skip_serializing_if = "Option::is_none")] pub metadata_language: Option, #[serde(skip_serializing_if = "Option::is_none")] pub metadata_country_code: Option, #[serde(skip_serializing_if = "Option::is_none")] pub provider_ids: Option>>, #[serde(skip_serializing_if = "Option::is_none")] pub year: Option, #[serde(skip_serializing_if = "Option::is_none")] pub index_number: Option, #[serde(skip_serializing_if = "Option::is_none")] pub parent_index_number: Option, #[serde(skip_serializing_if = "Option::is_none")] pub premiere_date: Option, #[serde(skip_serializing_if = "Option::is_none")] pub is_automated: Option, #[serde(skip_serializing_if = "Option::is_none")] pub song_infos: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ArtistInfoRemoteSearchQuery { #[serde(skip_serializing_if = "Option::is_none")] pub search_info: Option, #[serde(skip_serializing_if = "Option::is_none")] pub item_id: Option, #[serde(skip_serializing_if = "Option::is_none")] pub search_provider_name: Option, #[serde(skip_serializing_if = "Option::is_none")] pub include_disabled_providers: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum AudioSpatialFormat { None, DolbyAtmos, DTSX, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct AuthenticateUserByName { pub username: Option, pub pw: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct AuthenticationInfo { pub id: Option, pub access_token: Option, pub device_id: Option, pub app_name: Option, pub app_version: Option, pub device_name: Option, pub user_id: Option, pub is_active: Option, pub date_created: Option, pub date_revoked: Option, pub date_last_activity: Option, pub user_name: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct AuthenticationInfoQueryResult { pub items: Option>, pub total_record_count: Option, pub start_index: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct AuthenticationResult { pub user: Option, pub session_info: Option, pub access_token: Option, pub server_id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct BaseItemDto { pub name: Option, pub original_title: Option, pub server_id: Option, pub id: String, pub etag: Option, pub source_type: Option, pub playlist_item_id: Option, pub date_created: Option, pub date_last_media_added: Option, pub extra_type: Option, pub airs_before_season_number: Option, pub airs_after_season_number: Option, pub airs_before_episode_number: Option, pub can_delete: Option, pub can_download: Option, pub has_lyrics: Option, pub has_subtitles: Option, pub preferred_metadata_language: Option, pub preferred_metadata_country_code: Option, pub container: Option, pub sort_name: Option, pub forced_sort_name: Option, pub video_3_d_format: Option, pub premiere_date: Option, pub external_urls: Option>, pub media_sources: Option>, pub critic_rating: Option, pub production_locations: Option>, pub path: Option, pub enable_media_source_display: Option, pub official_rating: Option, pub custom_rating: Option, pub channel_id: Option, pub channel_name: Option, pub overview: Option, pub taglines: Option>, pub genres: Option>, pub community_rating: Option, pub cumulative_run_time_ticks: Option, pub run_time_ticks: Option, pub play_access: Option, pub aspect_ratio: Option, pub production_year: Option, pub is_placeholder: Option, pub number: Option, pub channel_number: Option, pub index_number: Option, pub index_number_end: Option, pub parent_index_number: Option, pub remote_trailers: Option>, pub provider_ids: Option>>, pub is_hd: Option, pub is_folder: Option, pub parent_id: Option, pub r#type: Option, pub people: Option>, pub studios: Option>, pub genre_items: Option>, pub parent_logo_item_id: Option, pub parent_backdrop_item_id: Option, pub parent_backdrop_image_tags: Option>, pub local_trailer_count: Option, pub user_data: Option, pub recursive_item_count: Option, pub child_count: Option, pub series_name: Option, pub series_id: Option, pub season_id: Option, pub special_feature_count: Option, pub display_preferences_id: Option, pub status: Option, pub air_time: Option, pub air_days: Option>, pub tags: Option>, pub primary_image_aspect_ratio: Option, pub artists: Option>, pub artist_items: Option>, pub album: Option, pub collection_type: Option, pub display_order: Option, pub album_id: Option, pub album_primary_image_tag: Option, pub series_primary_image_tag: Option, pub album_artist: Option, pub album_artists: Option>, pub season_name: Option, pub media_streams: Option>, pub video_type: Option, pub part_count: Option, pub media_source_count: Option, pub image_tags: Option>, pub backdrop_image_tags: Option>, pub screenshot_image_tags: Option>, pub parent_logo_image_tag: Option, pub parent_art_item_id: Option, pub parent_art_image_tag: Option, pub series_thumb_image_tag: Option, pub image_blur_hashes: Option, pub series_studio: Option, pub parent_thumb_item_id: Option, pub parent_thumb_image_tag: Option, pub parent_primary_image_item_id: Option, pub parent_primary_image_tag: Option, pub chapters: Option>, pub trickplay: Option>>, pub location_type: Option, pub iso_type: Option, pub media_type: Option, pub end_date: Option, pub locked_fields: Option>, pub trailer_count: Option, pub movie_count: Option, pub series_count: Option, pub program_count: Option, pub episode_count: Option, pub song_count: Option, pub album_count: Option, pub artist_count: Option, pub music_video_count: Option, pub lock_data: Option, pub width: Option, pub height: Option, pub camera_make: Option, pub camera_model: Option, pub software: Option, pub exposure_time: Option, pub focal_length: Option, pub image_orientation: Option, pub aperture: Option, pub shutter_speed: Option, pub latitude: Option, pub longitude: Option, pub altitude: Option, pub iso_speed_rating: Option, pub series_timer_id: Option, pub program_id: Option, pub channel_primary_image_tag: Option, pub start_date: Option, pub completion_percentage: Option, pub is_repeat: Option, pub episode_title: Option, pub channel_type: Option, pub audio: Option, pub is_movie: Option, pub is_sports: Option, pub is_series: Option, pub is_live: Option, pub is_news: Option, pub is_kids: Option, pub is_premiere: Option, pub timer_id: Option, pub normalization_gain: Option, pub current_program: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct BaseItemDtoQueryResult { pub items: Option>, pub total_record_count: Option, pub start_index: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum BaseItemKind { AggregateFolder, Audio, AudioBook, BasePluginFolder, Book, BoxSet, Channel, ChannelFolderItem, CollectionFolder, Episode, Folder, Genre, ManualPlaylistsFolder, Movie, LiveTvChannel, LiveTvProgram, MusicAlbum, MusicArtist, MusicGenre, MusicVideo, Person, Photo, PhotoAlbum, Playlist, PlaylistsFolder, Program, Recording, Season, Series, Studio, Trailer, TvChannel, TvProgram, UserRootFolder, UserView, Video, Year, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct BaseItemPerson { pub name: Option, pub id: String, pub role: Option, pub r#type: Option, pub primary_image_tag: Option, pub image_blur_hashes: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct BasePluginConfiguration { // no properties } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct BookInfo { pub name: Option, pub original_title: Option, pub path: Option, pub metadata_language: Option, pub metadata_country_code: Option, pub provider_ids: Option>>, pub year: Option, pub index_number: Option, pub parent_index_number: Option, pub premiere_date: Option, pub is_automated: Option, pub series_name: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct BookInfoRemoteSearchQuery { pub search_info: Option, pub item_id: Option, pub search_provider_name: Option, pub include_disabled_providers: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct BoxSetInfo { pub name: Option, pub original_title: Option, pub path: Option, pub metadata_language: Option, pub metadata_country_code: Option, pub provider_ids: Option>>, pub year: Option, pub index_number: Option, pub parent_index_number: Option, pub premiere_date: Option, pub is_automated: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct BoxSetInfoRemoteSearchQuery { pub search_info: Option, pub item_id: Option, pub search_provider_name: Option, pub include_disabled_providers: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct BrandingOptions { pub login_disclaimer: Option, pub custom_css: Option, pub splashscreen_enabled: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct BufferRequestDto { pub when: Option, pub position_ticks: Option, pub is_playing: Option, pub playlist_item_id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct CastReceiverApplication { pub id: String, pub name: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ChannelFeatures { pub name: String, pub id: String, pub can_search: Option, pub media_types: Option>, pub content_types: Option>, pub max_page_size: Option, pub auto_refresh_levels: Option, pub default_sort_fields: Option>, pub supports_sort_order_toggle: Option, pub supports_latest_media: Option, pub can_filter: Option, pub supports_content_downloading: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ChannelItemSortField { Name, CommunityRating, PremiereDate, DateCreated, Runtime, PlayCount, CommunityPlayCount, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ChannelMappingOptionsDto { pub tuner_channels: Option>, pub provider_channels: Option>, pub mappings: Option>, pub provider_name: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ChannelMediaContentType { Clip, Podcast, Trailer, Movie, Episode, Song, MovieExtra, TvExtra, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ChannelMediaType { Audio, Video, Photo, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ChannelType { TV, Radio, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ChapterInfo { pub start_position_ticks: Option, pub name: Option, pub image_path: Option, pub image_date_modified: Option, pub image_tag: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct CheckpointId { pub id: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ClientCapabilitiesDto { pub playable_media_types: Option>, pub supported_commands: Option>, pub supports_media_control: Option, pub supports_persistent_identifier: Option, pub device_profile: Option, pub app_store_url: Option, pub icon_url: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ClientLogDocumentResponseDto { pub file_name: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct CodecProfile { pub r#type: Option, pub conditions: Option>, pub apply_conditions: Option>, pub codec: Option, pub container: Option, pub sub_container: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum CodecType { Video, VideoAudio, Audio, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct CollectionCreationResult { pub id: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum CollectionType { Unknown, Movies, Tvshows, Music, Musicvideos, Trailers, Homevideos, Boxsets, Books, Photos, Livetv, Playlists, Folders, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum CollectionTypeOptions { Movies, Tvshows, Music, Musicvideos, Homevideos, Boxsets, Books, Mixed, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ConfigImageTypes { pub backdrop_sizes: Option>, pub base_url: Option, pub logo_sizes: Option>, pub poster_sizes: Option>, pub profile_sizes: Option>, pub secure_base_url: Option, pub still_sizes: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ConfigurationPageInfo { pub name: String, pub enable_in_main_menu: Option, pub menu_section: Option, pub menu_icon: Option, pub display_name: Option, pub plugin_id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ContainerProfile { pub r#type: Option, pub conditions: Option>, pub container: Option, pub sub_container: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum CountryInfo { Name(String), DisplayName(String), TwoLetterISORegionName(String), ThreeLetterISORegionName(String), } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct CreatePlaylistDto { pub name: String, pub ids: Option>, pub user_id: Option, pub media_type: Option, pub users: Option>, pub is_public: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct CreateUserByName { pub name: String, pub password: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct CultureDto { pub name: String, pub display_name: String, pub two_letter_i_s_o_language_name: String, pub three_letter_i_s_o_language_name: Option, pub three_letter_i_s_o_language_names: Vec, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum DayOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum DayPattern { Daily, Weekdays, Weekends, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct DefaultDirectoryBrowserInfoDto { pub path: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum DeinterlaceMethod { Yadif, Bwdif, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum DeviceInfoDto { Name: Option, CustomName: Option, AccessToken: Option, Id: Option, LastUserName: Option, AppName: Option, AppVersion: Option, LastUserId: Option, DateLastActivity: Option, Capabilities: Option, IconUrl: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct DeviceInfoDtoQueryResult { pub items: Option>, pub total_record_count: Option, pub start_index: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct DeviceOptionsDto { pub id: Option, pub device_id: Option, pub custom_name: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct DeviceProfile { pub name: Option, pub id: Option, pub max_streaming_bitrate: Option, pub max_static_bitrate: Option, pub music_streaming_transcoding_bitrate: Option, pub max_static_music_bitrate: Option, pub direct_play_profiles: Option>, pub transcoding_profiles: Option>, pub container_profiles: Option>, pub codec_profiles: Option>, pub subtitle_profiles: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct DirectPlayProfile { pub container: Option, pub audio_codec: Option, pub video_codec: Option, pub r#type: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct DisplayPreferencesDto { pub id: Option, pub view_type: Option, pub sort_by: Option, pub index_by: Option, pub remember_indexing: Option, pub primary_image_height: Option, pub primary_image_width: Option, pub custom_prefs: Option>>, pub scroll_direction: Option, pub show_backdrop: Option, pub remember_sorting: Option, pub sort_order: Option, pub show_sidebar: Option, pub client: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum DlnaProfileType { Audio, Video, Photo, Subtitle, Lyric, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum DownMixStereoAlgorithms { None, Dave750, NightmodeDialogue, Rfc7845, Ac4, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum EmbeddedSubtitleOptions { AllowAll, AllowText, AllowImage, AllowNone, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum EncoderPreset { Auto, Placebo, Varieslow, Slower, Slow, Medium, Fast, Faster, Veryfast, Superfast, Ultrafast, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum EncodingContext { Streaming, Static, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct EncodingOptions { pub encoding_thread_count: Option, pub transcoding_temp_path: Option, pub fallback_font_path: Option, pub enable_fallback_font: Option, pub enable_audio_vbr: Option, pub down_mix_audio_boost: Option, pub down_mix_stereo_algorithm: Option, pub max_muxing_queue_size: Option, pub enable_throttling: Option, pub throttle_delay_seconds: Option, pub enable_segment_deletion: Option, pub segment_keep_seconds: Option, pub hardware_acceleration_type: Option, pub encoder_app_path: Option, pub encoder_app_path_display: Option, pub vaapi_device: Option, pub qsv_device: Option, pub enable_tonemapping: Option, pub enable_vpp_tonemapping: Option, pub enable_video_toolbox_tonemapping: Option, pub tonemapping_algorithm: Option, pub tonemapping_mode: Option, pub tonemapping_range: Option, pub tonemapping_desat: Option, pub tonemapping_peak: Option, pub tonemapping_param: Option, pub vpp_tonemapping_brightness: Option, pub vpp_tonemapping_contrast: Option, pub h264_crf: Option, pub h265_crf: Option, pub encoder_preset: Option, pub deinterlace_double_rate: Option, pub deinterlace_method: Option, pub enable_decoding_color_depth_10_hevc: Option, pub enable_decoding_color_depth_10_vp9: Option, pub enable_decoding_color_depth_10_hevc_rext: Option, pub enable_decoding_color_depth_12_hevc_rext: Option, pub enable_enhanced_nvdec_decoder: Option, pub prefer_system_native_hw_decoder: Option, pub enable_intel_low_power_h264_hw_encoder: Option, pub enable_intel_low_power_hevc_hw_encoder: Option, pub enable_hardware_encoding: Option, pub allow_hevc_encoding: Option, pub allow_av1_encoding: Option, pub enable_subtitle_extraction: Option, pub hardware_decoding_codecs: Option>, pub allow_on_demand_metadata_based_keyframe_extraction_for_extensions: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum EndPointInfo { is_local: Option, is_in_network: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ExternalIdInfo { pub name: String, pub key: String, pub r#type: Option, pub url_format_string: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ExternalIdMediaType { Album, AlbumArtist, Artist, BoxSet, Episode, Movie, OtherArtist, Person, ReleaseGroup, Season, Series, Track, Book, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ExternalUrl { pub name: Option, pub url: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ExtraType { Unknown, Clip, Trailer, BehindTheScenes, DeletedScene, Interview, Scene, Sample, ThemeSong, ThemeVideo, Featurette, Short, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct FileSystemEntryInfo { pub name: String, pub path: String, pub r#type: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum FileSystemEntryType { File, Directory, NetworkComputer, NetworkShare, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct FontFile { pub name: Option, pub size: i64, pub date_created: String, pub date_modified: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ForceKeepAliveMessage { Data: Option, MessageId: String, MessageType: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ForgotPasswordAction { ContactAdmin, PinCode, InNetworkRequired, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ForgotPasswordDto { pub entered_username: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ForgotPasswordPinDto { pub pin: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ForgotPasswordResult { pub action: ForgotPasswordAction, pub pin_file: Option, pub pin_expiration_date: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct GeneralCommand { pub name: GeneralCommandType, pub controlling_user_id: Option, pub arguments: Option>>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct GeneralCommandMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum GeneralCommandType { MoveUp, MoveDown, MoveLeft, MoveRight, PageUp, PageDown, PreviousLetter, NextLetter, ToggleOsd, ToggleContextMenu, Select, Back, TakeScreenshot, SendKey, SendString, GoHome, GoToSettings, VolumeUp, VolumeDown, Mute, Unmute, ToggleMute, SetVolume, SetAudioStreamIndex, SetSubtitleStreamIndex, ToggleFullscreen, DisplayContent, GoToSearch, DisplayMessage, SetRepeatMode, ChannelUp, ChannelDown, Guide, ToggleStats, PlayMediaSource, PlayTrailers, SetShuffleQueue, PlayState, PlayNext, ToggleOsdMenu, Play, SetMaxStreamingBitrate, SetPlaybackOrder, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct GetProgramsDto { pub channel_ids: Option>, pub user_id: Option, pub min_start_date: Option, pub has_aired: Option, pub is_airing: Option, pub max_start_date: Option, pub min_end_date: Option, pub max_end_date: Option, pub is_movie: Option, pub is_series: Option, pub is_news: Option, pub is_kids: Option, pub is_sports: Option, pub start_index: Option, pub limit: Option, pub sort_by: Option>, pub sort_order: Option>, pub genres: Option>, pub genre_ids: Option>, pub enable_images: Option, pub enable_total_record_count: Option, pub image_type_limit: Option, pub enable_image_types: Option>, pub enable_user_data: Option, pub series_timer_id: Option, pub library_series_id: Option, pub fields: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct GroupInfoDto { pub group_id: String, pub group_name: String, pub state: GroupStateType, pub participants: Vec, pub last_updated_at: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct GroupInfoDtoGroupUpdate { pub group_id: String, pub r#type: GroupUpdateType, pub data: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum GroupQueueMode { Queue, QueueNext, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum GroupRepeatMode { RepeatOne, RepeatAll, RepeatNone, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum GroupShuffleMode { Sorted, Shuffle, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum GroupStateType { Idle, Waiting, Paused, Playing, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct GroupStateUpdate { pub state: GroupStateType, pub reason: PlaybackRequestType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct GroupStateUpdateGroupUpdate { pub group_id: String, pub r#type: GroupUpdateType, pub data: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum GroupUpdateType { UserJoined, UserLeft, GroupJoined, GroupLeft, StateUpdate, PlayQueue, NotInGroup, GroupDoesNotExist, CreateGroupDenied, JoinGroupDenied, LibraryAccessDenied, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct GuideInfo { pub start_date: String, pub end_date: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum HardwareAccelerationType { None, Amf, Qsv, Nvenc, V4l2m2m, Vaapi, Videotoolbox, Rkmpp, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct IgnoreWaitRequestDto { pub ignore_wait: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ImageFormat { Bmp, Gif, Jpg, Png, Webp, Svg, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ImageInfo { pub image_type: ImageType, pub image_index: Option, pub image_tag: Option, pub path: Option, pub blur_hash: Option, pub height: Option, pub width: Option, pub size: i64, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ImageOption { pub r#type: ImageType, pub limit: Option, pub min_width: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ImageOrientation { TopLeft, TopRight, BottomRight, BottomLeft, LeftTop, RightTop, RightBottom, LeftBottom, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ImageProviderInfo { pub name: String, pub supported_images: Vec, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ImageResolution { MatchSource, P144, P240, P360, P480, P720, P1080, P1440, P2160, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ImageSavingConvention { Legacy, Compatible, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ImageType { Primary, Art, Backdrop, Banner, Logo, Thumb, Disc, Box, Screenshot, Menu, Chapter, BoxRear, Profile, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct InboundKeepAliveMessage { pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct InboundWebSocketMessage { #[serde(flatten)] pub message: WebSocketMessage, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct InstallationInfo { pub guid: String, pub name: Option, pub version: Option, pub changelog: Option, pub source_url: Option, pub checksum: Option, pub package_info: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct IPlugin { pub name: Option, pub description: Option, pub id: String, pub version: Option, pub assembly_file_path: Option, pub can_uninstall: bool, pub data_folder_path: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum IsoType { Dvd, BluRay, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ItemCounts { pub movie_count: i32, pub series_count: i32, pub episode_count: i32, pub artist_count: i32, pub program_count: i32, pub trailer_count: i32, pub song_count: i32, pub album_count: i32, pub music_video_count: i32, pub box_set_count: i32, pub book_count: i32, pub item_count: i32, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ItemFields { AirTime, CanDelete, CanDownload, ChannelInfo, Chapters, Trickplay, ChildCount, CumulativeRunTimeTicks, CustomRating, DateCreated, DateLastMediaAdded, DisplayPreferencesId, Etag, ExternalUrls, Genres, HomePageUrl, ItemCounts, MediaSourceCount, MediaSources, OriginalTitle, Overview, ParentId, Path, People, PlayAccess, ProductionLocations, ProviderIds, PrimaryImageAspectRatio, RecursiveItemCount, Settings, ScreenshotImageTags, SeriesPrimaryImage, SeriesStudio, SortName, SpecialEpisodeNumbers, Studios, Taglines, Tags, RemoteTrailers, MediaStreams, SeasonUserData, ServiceName, ThemeSongIds, ThemeVideoIds, ExternalEtag, PresentationUniqueKey, InheritedParentalRatingValue, ExternalSeriesId, SeriesPresentationUniqueKey, DateLastRefreshed, DateLastSaved, RefreshState, ChannelImage, EnableMediaSourceDisplay, Width, Height, ExtraIds, LocalTrailerCount, IsHD, SpecialFeatureCount, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ItemFilter { IsFolder, IsNotFolder, IsUnplayed, IsPlayed, IsFavorite, IsResumable, Likes, Dislikes, IsFavoriteOrLikes, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ItemSortBy { Default, AiredEpisodeOrder, Album, AlbumArtist, Artist, DateCreated, OfficialRating, DatePlayed, PremiereDate, StartDate, SortName, Name, Random, Runtime, CommunityRating, ProductionYear, PlayCount, CriticRating, IsFolder, IsUnplayed, IsPlayed, SeriesSortName, VideoBitRate, AirTime, Studio, IsFavoriteOrLiked, DateLastContentAdded, SeriesDatePlayed, ParentIndexNumber, IndexNumber, SimilarityScore, SearchScore, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct JoinGroupRequestDto { pub group_id: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum KeepUntil { UntilDeleted, UntilSpaceNeeded, UntilWatched, UntilDate, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LibraryChangedMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LibraryOptionInfoDto { pub name: Option, pub default_enabled: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LibraryOptions { pub enabled: bool, pub enable_photos: bool, pub enable_realtime_monitor: bool, pub enable_lufs_scan: bool, pub enable_chapter_image_extraction: bool, pub extract_chapter_images_during_library_scan: bool, pub enable_trickplay_image_extraction: bool, pub extract_trickplay_images_during_library_scan: bool, pub path_infos: Option>, pub save_local_metadata: bool, pub enable_internet_providers: bool, pub enable_automatic_series_grouping: bool, pub enable_embedded_titles: bool, pub enable_embedded_extras_titles: bool, pub enable_embedded_episode_infos: bool, pub automatic_refresh_interval_days: Option, pub preferred_metadata_language: Option, pub metadata_country_code: Option, pub season_zero_display_name: String, pub metadata_savers: Option>, pub disabled_local_metadata_readers: Vec, pub local_metadata_reader_order: Option>, pub disabled_subtitle_fetchers: Vec, pub subtitle_fetcher_order: Vec, pub disabled_media_segment_providers: Vec, pub media_segment_provide_order: Vec, pub skip_subtitles_if_embedded_subtitles_present: bool, pub skip_subtitles_if_audio_track_matches: bool, pub subtitle_download_languages: Option>, pub require_perfect_subtitle_match: bool, pub save_subtitles_with_media: bool, pub save_lyrics_with_media: bool, pub save_trickplay_with_media: bool, pub disabled_lyric_fetchers: Vec, pub lyric_fetcher_order: Vec, pub prefer_nonstandard_artists_tag: bool, pub use_custom_tag_delimiters: bool, pub custom_tag_delimiters: Option>, pub delimiter_whitelist: Option>, pub automatically_add_to_collection: bool, pub allow_embedded_subtitles: EmbeddedSubtitleOptions, pub type_options: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LibraryOptionsResultDto { pub metadata_savers: Option>, pub metadata_readers: Option>, pub subtitle_fetchers: Option>, pub lyric_fetchers: Option>, pub type_options: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LibraryTypeOptionsDto { pub r#type: Option, pub metadata_fetchers: Option>, pub image_fetchers: Option>, pub supported_image_types: Option>, pub default_image_options: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LibraryUpdateInfo { pub folders_added_to: Option>, pub folders_removed_from: Option>, pub items_added: Option>, pub items_removed: Option>, pub items_updated: Option>, pub collection_folders: Option>, pub is_empty: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ListingsProviderInfo { pub id: Option, pub r#type: Option, pub username: Option, pub password: Option, pub listings_id: Option, pub zip_code: Option, pub country: Option, pub path: Option, pub enabled_tuners: Option>, pub enable_all_tuners: bool, pub news_categories: Option>, pub sports_categories: Option>, pub kids_categories: Option>, pub movie_categories: Option>, pub channel_mappings: Option>, pub movie_prefix: Option, pub preferred_language: Option, pub user_agent: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LiveStreamResponse { pub media_source: MediaSourceInfo, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LiveTvInfo { pub services: Vec, pub is_enabled: bool, pub enabled_users: Vec, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LiveTvOptions { pub guide_days: Option, pub recording_path: Option, pub movie_recording_path: Option, pub series_recording_path: Option, pub enable_recording_subfolders: bool, pub enable_original_audio_with_encoded_recordings: bool, pub tuner_hosts: Option>, pub listing_providers: Option>, pub pre_padding_seconds: i32, pub post_padding_seconds: i32, pub media_locations_created: Option>, pub recording_post_processor: Option, pub recording_post_processor_arguments: Option, pub save_recording_nfo: bool, pub save_recording_images: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LiveTvServiceInfo { pub name: Option, pub home_page_url: Option, pub status: LiveTvServiceStatus, pub status_message: Option, pub version: Option, pub has_update_available: bool, pub is_visible: bool, pub tuners: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum LiveTvServiceStatus { Ok, Unavailable, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LocalizationOption { pub name: Option, pub value: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LocationType { pub r#type: LocationTypeEnum, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum LocationTypeEnum { FileSystem, Remote, Virtual, Offline, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LogFile { pub date_created: String, pub date_modified: String, pub size: i64, pub name: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LoginInfoInput { pub username: String, pub password: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LyricDto { pub metadata: LyricMetadata, pub lyrics: Vec, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LyricLine { pub text: String, pub start: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct LyricMetadata { pub artist: Option, pub album: Option, pub title: Option, pub author: Option, pub length: Option, pub by: Option, pub offset: Option, pub creator: Option, pub version: Option, pub is_synced: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MediaAttachment { pub codec: Option, pub codec_tag: Option, pub comment: Option, pub index: i32, pub file_name: Option, pub mime_type: Option, pub delivery_url: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MediaPathDto { pub name: String, pub path: Option, pub path_info: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MediaPathInfo { pub path: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum MediaProtocol { File, Http, Rtmp, Rtsp, Udp, Rtp, Ftp, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MediaSegmentDto { pub id: String, pub item_id: String, pub r#type: MediaSegmentType, pub start_ticks: i64, pub end_ticks: i64, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum MediaSegmentType { Unknown, Commercial, Preview, Recap, Outro, Intro, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MediaSegmentDtoQueryResult { pub items: Option>, pub total_record_count: Option, pub start_index: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MediaSourceInfo { pub protocol: MediaProtocol, pub id: Option, pub path: Option, pub encoder_path: Option, pub encoder_protocol: Option, pub r#type: MediaSourceType, pub container: Option, pub size: Option, pub name: Option, pub is_remote: bool, pub etag: Option, pub run_time_ticks: Option, pub read_at_native_framerate: bool, pub ignore_dts: bool, pub ignore_index: bool, pub gen_pts_input: bool, pub supports_transcoding: bool, pub supports_direct_stream: bool, pub supports_direct_play: bool, pub is_infinite_stream: bool, pub use_most_compatible_transcoding_profile: bool, pub requires_opening: bool, pub open_token: Option, pub requires_closing: bool, pub live_stream_id: Option, pub buffer_ms: Option, pub requires_looping: bool, pub supports_probing: bool, pub video_type: Option, pub iso_type: Option, pub video_3_d_format: Option, pub media_streams: Option>, pub media_attachments: Option>, pub formats: Option>, pub bitrate: Option, pub fallback_max_streaming_bitrate: Option, pub timestamp: Option, pub required_http_headers: Option>>, pub transcoding_url: Option, pub transcoding_sub_protocol: Option, pub transcoding_container: Option, pub analyze_duration_ms: Option, pub default_audio_stream_index: Option, pub default_subtitle_stream_index: Option, pub has_segments: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum MediaSourceType { Default, Grouping, Placeholder, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MediaStream { pub codec: Option, pub codec_tag: Option, pub language: Option, pub color_range: Option, pub color_space: Option, pub color_transfer: Option, pub color_primaries: Option, pub dv_version_major: Option, pub dv_version_minor: Option, pub dv_profile: Option, pub dv_level: Option, pub rpu_present_flag: Option, pub el_present_flag: Option, pub bl_present_flag: Option, pub dv_bl_signal_compatibility_id: Option, pub rotation: Option, pub comment: Option, pub time_base: Option, pub codec_time_base: Option, pub title: Option, pub video_range: VideoRange, pub video_range_type: VideoRangeType, pub video_do_vi_title: Option, pub audio_spatial_format: AudioSpatialFormat, pub localized_undefined: Option, pub localized_default: Option, pub localized_forced: Option, pub localized_external: Option, pub localized_hearing_impaired: Option, pub display_title: Option, pub nal_length_size: Option, pub is_interlaced: bool, pub is_avc: Option, pub channel_layout: Option, pub bitrate: Option, pub bit_depth: Option, pub ref_frames: Option, pub packet_length: Option, pub channels: Option, pub sample_rate: Option, pub is_default: bool, pub is_forced: bool, pub is_hearing_impaired: bool, pub height: Option, pub width: Option, pub average_framerate: Option, pub real_framerate: Option, pub reference_framerate: Option, pub profile: Option, pub r#type: MediaStreamType, pub aspect_ratio: Option, pub index: i32, pub score: Option, pub is_external: bool, pub delivery_method: Option, pub delivery_url: Option, pub is_external_url: Option, pub is_text_subtitle_stream: bool, pub supports_external_stream: bool, pub path: Option, pub pixel_format: Option, pub level: Option, pub is_anamorphic: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum MediaStreamProtocol { Http, Hls, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum MediaStreamType { Audio, Video, Subtitle, EmbeddedImage, Data, Lyric, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum MediaType { Unknown, Video, Audio, Photo, Book, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MediaUpdateInfoDto { pub updates: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MediaUpdateInfoPathDto { pub path: Option, pub update_type: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MediaUrl { pub url: Option, pub name: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MessageCommand { pub header: Option, pub text: String, pub timeout_ms: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MetadataConfiguration { pub use_file_creation_time_for_date_added: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MetadataEditorInfo { pub parental_rating_options: Vec, pub countries: Vec, pub cultures: Vec, pub external_id_infos: Vec, pub content_type: Option, pub content_type_options: Vec, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MetadataField { pub r#type: MetadataFieldEnum, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum MetadataFieldEnum { Cast, Genres, ProductionLocations, Studios, Tags, Name, Overview, Runtime, OfficialRating, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MetadataOptions { pub item_type: Option, pub disabled_metadata_savers: Option>, pub local_metadata_reader_order: Option>, pub disabled_metadata_fetchers: Option>, pub metadata_fetcher_order: Option>, pub disabled_image_fetchers: Option>, pub image_fetcher_order: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum MetadataRefreshMode { None, ValidationOnly, Default, FullRefresh, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MovePlaylistItemRequestDto { pub playlist_item_id: String, pub new_index: i32, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MovieInfo { pub name: Option, pub original_title: Option, pub path: Option, pub metadata_language: Option, pub metadata_country_code: Option, pub provider_ids: Option>>, pub year: Option, pub index_number: Option, pub parent_index_number: Option, pub premiere_date: Option, pub is_automated: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MovieInfoRemoteSearchQuery { pub search_info: Option, pub item_id: String, pub search_provider_name: Option, pub include_disabled_providers: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MusicVideoInfo { pub name: Option, pub original_title: Option, pub path: Option, pub metadata_language: Option, pub metadata_country_code: Option, pub provider_ids: Option>>, pub year: Option, pub index_number: Option, pub parent_index_number: Option, pub premiere_date: Option, pub is_automated: bool, pub artists: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MusicVideoInfoRemoteSearchQuery { pub search_info: Option, pub item_id: String, pub search_provider_name: Option, pub include_disabled_providers: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct NameGuidPair { pub name: Option, pub id: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct NameIdPair { pub name: Option, pub id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct NameValuePair { pub name: Option, pub value: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct NetworkConfiguration { pub base_url: String, pub enable_https: bool, pub require_https: bool, pub certificate_path: String, pub certificate_password: String, pub internal_http_port: i32, pub internal_https_port: i32, pub public_http_port: i32, pub public_https_port: i32, pub auto_discovery: bool, pub enable_upnp: bool, pub enable_ipv4: bool, pub enable_ipv6: bool, pub enable_remote_access: bool, pub local_network_subnets: Vec, pub local_network_addresses: Vec, pub known_proxies: Vec, pub ignore_virtual_interfaces: bool, pub virtual_interface_names: Vec, pub enable_published_server_uri_by_request: bool, pub published_server_uri_by_subnet: Vec, pub remote_ip_filter: Vec, pub is_remote_ip_filter_blacklist: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct NewGroupRequestDto { pub group_name: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct NextItemRequestDto { pub playlist_item_id: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct OpenLiveStreamDto { pub open_token: Option, pub user_id: Option, pub play_session_id: Option, pub max_streaming_bitrate: Option, pub start_time_ticks: Option, pub audio_stream_index: Option, pub subtitle_stream_index: Option, pub max_audio_channels: Option, pub item_id: Option, pub enable_direct_play: Option, pub enable_direct_stream: Option, pub always_burn_in_subtitle_when_transcoding: Option, pub device_profile: Option, pub direct_play_protocols: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct OutboundKeepAliveMessage { pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct OutboundWebSocketMessage { #[serde(flatten)] pub message: WebSocketMessage, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PackageInfo { pub name: String, pub description: String, pub overview: String, pub owner: String, pub category: String, pub guid: String, pub versions: Vec, pub image_url: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ParameterInclude { pub r#type: ParameterIncludeEnum, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ParameterIncludeEnum { ProviderList, LocalIpAddress, LocalPort, Https, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ParentalRating { pub name: Option, pub value: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PathSubstitution { pub from: String, pub to: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PersonKind { pub r#type: PersonKindEnum, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum PersonKindEnum { Unknown, Actor, Director, Composer, Writer, GuestStar, Producer, Conductor, Lyricist, Arranger, Engineer, Mixer, Remixer, Creator, Artist, AlbumArtist, Author, Illustrator, Penciller, Inker, Colorist, Letterer, CoverArtist, Editor, Translator, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PersonLookupInfo { pub name: Option, pub original_title: Option, pub path: Option, pub metadata_language: Option, pub metadata_country_code: Option, pub provider_ids: Option>>, pub year: Option, pub index_number: Option, pub parent_index_number: Option, pub premiere_date: Option, pub is_automated: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PersonLookupInfoRemoteSearchQuery { pub search_info: Option, pub item_id: String, pub search_provider_name: Option, pub include_disabled_providers: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PingRequestDto { pub ping: i64, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PinRedeemResult { pub success: bool, pub users_reset: Vec, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum PlayAccess { Full, None, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum PlaybackErrorCode { NotAllowed, NoCompatibleStream, RateLimitExceeded, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PlaybackInfoDto { pub user_id: Option, pub max_streaming_bitrate: Option, pub start_time_ticks: Option, pub audio_stream_index: Option, pub subtitle_stream_index: Option, pub max_audio_channels: Option, pub media_source_id: Option, pub live_stream_id: Option, pub device_profile: Option, pub enable_direct_play: Option, pub enable_direct_stream: Option, pub enable_transcoding: Option, pub allow_video_stream_copy: Option, pub allow_audio_stream_copy: Option, pub auto_open_live_stream: Option, pub always_burn_in_subtitle_when_transcoding: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PlaybackInfoResponse { pub media_sources: Vec, pub play_session_id: Option, pub error_code: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum PlaybackOrder { Default, Shuffle, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PlaybackProgressInfo { pub can_seek: bool, pub item: Option, pub item_id: String, pub session_id: Option, pub media_source_id: Option, pub audio_stream_index: Option, pub subtitle_stream_index: Option, pub is_paused: bool, pub is_muted: bool, pub position_ticks: Option, pub playback_start_time_ticks: Option, pub volume_level: Option, pub brightness: Option, pub aspect_ratio: Option, pub play_method: PlayMethod, pub live_stream_id: Option, pub play_session_id: Option, pub repeat_mode: RepeatMode, pub playback_order: PlaybackOrder, pub now_playing_queue: Option>, pub playlist_item_id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum PlaybackRequestType { Play, SetPlaylistItem, RemoveFromPlaylist, MovePlaylistItem, Queue, Unpause, Pause, Stop, Seek, Buffer, Ready, NextItem, PreviousItem, SetRepeatMode, SetShuffleMode, Ping, IgnoreWait, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PlaybackStartInfo { pub can_seek: bool, pub item: Option, pub item_id: String, pub session_id: Option, pub media_source_id: Option, pub audio_stream_index: Option, pub subtitle_stream_index: Option, pub is_paused: bool, pub is_muted: bool, pub position_ticks: Option, pub playback_start_time_ticks: Option, pub volume_level: Option, pub brightness: Option, pub aspect_ratio: Option, pub play_method: PlayMethod, pub live_stream_id: Option, pub play_session_id: Option, pub repeat_mode: RepeatMode, pub playback_order: PlaybackOrder, pub now_playing_queue: Option>, pub playlist_item_id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PlaybackStopInfo { pub item: Option, pub item_id: String, pub session_id: Option, pub media_source_id: Option, pub position_ticks: Option, pub live_stream_id: Option, pub play_session_id: Option, pub failed: bool, pub next_media_type: Option, pub playlist_item_id: Option, pub now_playing_queue: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum PlayCommand { PlayNow, PlayNext, PlayLast, PlayInstantMix, PlayShuffle, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PlayQueueUpdate { pub reason: PlayQueueUpdateReason, pub last_update: String, pub playlist: Vec, pub playing_item_index: i32, pub start_position_ticks: i64, pub is_playing: bool, pub shuffle_mode: GroupShuffleMode, pub repeat_mode: GroupRepeatMode, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PlayQueueUpdateGroupUpdate { pub group_id: String, pub r#type: GroupUpdateType, pub data: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum PlayQueueUpdateReason { NewPlaylist, SetCurrentItem, RemoveItems, MoveItem, Queue, QueueNext, NextItem, PreviousItem, RepeatMode, ShuffleMode, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PlayRequest { pub item_ids: Option>, pub start_position_ticks: Option, pub play_command: Option, pub controlling_user_id: Option, pub subtitle_stream_index: Option, pub audio_stream_index: Option, pub media_source_id: Option, pub start_index: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PlayRequestDto { pub playing_queue: Vec, pub playing_item_position: i32, pub start_position_ticks: i64, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum PlaystateCommand { Stop, Pause, Unpause, NextTrack, PreviousTrack, Seek, Rewind, FastForward, PlayPause, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PlaystateRequest { pub command: PlaystateCommand, pub seek_position_ticks: Option, pub controlling_user_id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PluginInfo { pub name: String, pub version: String, pub configuration_file_name: Option, pub description: String, pub id: String, pub can_uninstall: bool, pub has_image: bool, pub status: PluginStatus, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum PluginStatus { Active, Restart, Deleted, Superceded, Malfunctioned, NotSupported, Disabled, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PluginInstallationCancelledMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PluginInstallationCompletedMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PluginInstallationFailedMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PluginInstallingMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PluginUninstalledMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PreviousItemRequestDto { pub playlist_item_id: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ProblemDetails { pub r#type: Option, pub title: Option, pub status: Option, pub detail: Option, pub instance: Option, #[serde(flatten)] pub additional: BTreeMap, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ProcessPriorityClass { Normal, Idle, High, RealTime, BelowNormal, AboveNormal, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ProfileCondition { pub condition: ProfileConditionType, pub property: ProfileConditionValue, pub value: Option, pub is_required: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ProfileConditionType { Equals, NotEquals, LessThanEqual, GreaterThanEqual, EqualsAny, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ProfileConditionValue { AudioChannels, AudioBitrate, AudioProfile, Width, Height, Has64BitOffsets, PacketLength, VideoBitDepth, VideoBitrate, VideoFramerate, VideoLevel, VideoProfile, VideoTimestamp, IsAnamorphic, RefFrames, NumAudioStreams, NumVideoStreams, IsSecondaryAudio, VideoCodecTag, IsAvc, IsInterlaced, AudioSampleRate, AudioBitDepth, VideoRangeType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ProgramAudio { Mono, Stereo, Dolby, DolbyDigital, Thx, Atmos, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PublicSystemInfo { pub local_address: Option, pub server_name: Option, pub version: Option, pub product_name: Option, pub operating_system: Option, pub id: Option, pub startup_wizard_completed: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct QueryFilters { pub genres: Option>, pub tags: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct QueryFiltersLegacy { pub genres: Option>, pub tags: Option>, pub official_ratings: Option>, pub years: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct QueueItem { pub id: String, pub playlist_item_id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct QueueRequestDto { pub item_ids: Vec, pub mode: GroupQueueMode, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct QuickConnectDto { pub secret: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct QuickConnectResult { pub authenticated: bool, pub secret: String, pub code: String, pub device_id: String, pub device_name: String, pub app_name: String, pub app_version: String, pub date_added: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum RatingType { Score, Likes, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ReadyRequestDto { pub when: String, pub position_ticks: i64, pub is_playing: bool, pub playlist_item_id: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RecommendationDto { pub items: Option>, pub recommendation_type: RecommendationType, pub baseline_item_name: Option, pub category_id: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum RecommendationType { SimilarToRecentlyPlayed, SimilarToLikedItem, HasDirectorFromRecentlyPlayed, HasActorFromRecentlyPlayed, HasLikedDirector, HasLikedActor, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum RecordingStatus { New, InProgress, Completed, Cancelled, ConflictedOk, ConflictedNotOk, Error, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RefreshProgressMessage { pub data: Option>>, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RemoteImageInfo { pub provider_name: Option, pub url: Option, pub thumbnail_url: Option, pub height: Option, pub width: Option, pub community_rating: Option, pub vote_count: Option, pub language: Option, pub r#type: ImageType, pub rating_type: RatingType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RemoteImageResult { pub images: Option>, pub total_record_count: i32, pub providers: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RemoteLyricInfoDto { pub id: String, pub provider_name: String, pub lyrics: LyricDto, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RemoteSearchResult { pub name: Option, pub provider_ids: Option>>, pub production_year: Option, pub index_number: Option, pub index_number_end: Option, pub parent_index_number: Option, pub premiere_date: Option, pub image_url: Option, pub search_provider_name: Option, pub overview: Option, pub album_artist: Option, pub artists: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RemoteSubtitleInfo { pub three_letter_i_s_o_language_name: Option, pub id: Option, pub provider_name: Option, pub name: Option, pub format: Option, pub author: Option, pub comment: Option, pub date_created: Option, pub community_rating: Option, pub frame_rate: Option, pub download_count: Option, pub is_hash_match: Option, pub ai_translated: Option, pub machine_translated: Option, pub forced: Option, pub hearing_impaired: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RemovedItem { pub item_id: String, pub series_id: Option, pub season: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RemovedItemQueryResult { pub items: Option>, pub total_record_count: i32, pub start_index: i32, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RemoveFromPlaylistRequestDto { pub playlist_item_ids: Option>, pub clear_playlist: bool, pub clear_playing_item: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum RepeatMode { RepeatNone, RepeatAll, RepeatOne, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RepositoryInfo { pub name: Option, pub url: Option, pub enabled: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct RestartRequiredMessage { pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ScheduledTaskEndedMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ScheduledTasksInfoMessage { pub data: Option>, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ScheduledTasksInfoStartMessage { pub data: Option, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ScheduledTasksInfoStopMessage { pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum ScrollDirection { Horizontal, Vertical, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SearchHint { pub item_id: Option, pub id: String, pub name: String, pub matched_term: Option, pub index_number: Option, pub production_year: Option, pub parent_index_number: Option, pub primary_image_tag: Option, pub thumb_image_tag: Option, pub thumb_image_item_id: Option, pub backdrop_image_tag: Option, pub backdrop_image_item_id: Option, pub r#type: Option, pub is_folder: Option, pub run_time_ticks: Option, pub media_type: Option, pub start_date: Option, pub end_date: Option, pub series: Option, pub status: Option, pub album: Option, pub album_id: Option, pub album_artist: Option, pub artists: Option>, pub song_count: Option, pub episode_count: Option, pub channel_id: Option, pub channel_name: Option, pub primary_image_aspect_ratio: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SearchHintResult { pub search_hints: Vec, pub total_record_count: i32, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SeekRequestDto { pub position_ticks: i64, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SendCommand { pub group_id: String, pub playlist_item_id: String, pub when: String, pub position_ticks: Option, pub command: SendCommandType, pub emitted_at: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum SendCommandType { Unpause, Pause, Stop, Seek, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SeriesInfo { pub name: Option, pub original_title: Option, pub path: Option, pub metadata_language: Option, pub metadata_country_code: Option, pub provider_ids: Option>>, pub year: Option, pub index_number: Option, pub parent_index_number: Option, pub premiere_date: Option, pub is_automated: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SeriesInfoRemoteSearchQuery { pub search_info: Option, pub item_id: String, pub search_provider_name: Option, pub include_disabled_providers: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum SeriesStatus { Continuing, Ended, Unreleased, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SeriesTimerCancelledMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SeriesTimerCreatedMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SeriesTimerInfoDto { pub id: Option, pub r#type: Option, pub server_id: Option, pub external_id: Option, pub channel_id: String, pub external_channel_id: Option, pub channel_name: Option, pub channel_primary_image_tag: Option, pub program_id: Option, pub external_program_id: Option, pub name: Option, pub overview: Option, pub start_date: String, pub end_date: String, pub service_name: Option, pub priority: i32, pub pre_padding_seconds: i32, pub post_padding_seconds: i32, pub is_pre_padding_required: bool, pub parent_backdrop_item_id: Option, pub parent_backdrop_image_tags: Option>, pub is_post_padding_required: bool, pub keep_until: KeepUntil, pub record_any_time: bool, pub skip_episodes_in_library: bool, pub record_any_channel: bool, pub keep_up_to: Option, pub record_new_only: bool, pub days: Option>, pub day_pattern: Option, pub image_tags: Option>, pub parent_thumb_item_id: Option, pub parent_thumb_image_tag: Option, pub parent_primary_image_item_id: Option, pub parent_primary_image_tag: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SeriesTimerInfoDtoQueryResult { pub items: Option>, pub total_record_count: i32, pub start_index: i32, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ServerConfiguration { pub log_file_retention_days: i32, pub is_startup_wizard_completed: bool, pub cache_path: Option, pub previous_version: Option, pub previous_version_str: Option, pub enable_metrics: bool, pub enable_normalized_item_by_name_ids: bool, pub is_port_authorized: bool, pub quick_connect_available: bool, pub enable_case_sensitive_item_ids: bool, pub disable_live_tv_channel_user_data_name: bool, pub metadata_path: Option, pub preferred_metadata_language: Option, pub metadata_country_code: Option, pub sort_replace_characters: Option>, pub sort_remove_characters: Option>, pub sort_remove_words: Option>, pub min_resume_pct: i32, pub max_resume_pct: i32, pub min_resume_duration_seconds: i32, pub min_audiobook_resume: i32, pub max_audiobook_resume: i32, pub inactive_session_threshold: i32, pub library_monitor_delay: i32, pub library_update_duration: i32, pub image_saving_convention: ImageSavingConvention, pub metadata_options: Option>, pub skip_deserialization_for_basic_types: bool, pub server_name: String, pub u_i_culture: String, pub save_metadata_hidden: bool, pub content_types: Option>, pub remote_client_bitrate_limit: i32, pub enable_folder_view: bool, pub enable_grouping_into_collections: bool, pub display_specials_within_seasons: bool, pub codecs_used: Option>, pub plugin_repositories: Option>, pub enable_external_content_in_suggestions: bool, pub image_extraction_timeout_ms: i32, pub path_substitutions: Option>, pub enable_slow_response_warning: bool, pub slow_response_threshold_ms: i64, pub cors_hosts: Option>, pub activity_log_retention_days: Option, pub library_scan_fanout_concurrency: i32, pub library_metadata_refresh_concurrency: i32, pub remove_old_plugins: bool, pub allow_client_log_upload: bool, pub dummy_chapter_duration: i32, pub chapter_image_resolution: ImageResolution, pub parallel_image_encoding_limit: i32, pub cast_receiver_applications: Option>, pub trickplay_options: TrickplayOptions, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ServerDiscoveryInfo { pub address: String, pub id: String, pub name: String, pub endpoint_address: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ServerRestartingMessage { pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ServerShuttingDownMessage { pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SessionInfoDto { pub play_state: Option, pub additional_users: Option>, pub capabilities: Option, pub remote_end_point: Option, pub playable_media_types: Option>, pub id: Option, pub user_id: String, pub user_name: Option, pub client: Option, pub last_activity_date: String, pub last_playback_check_in: String, pub last_paused_date: Option, pub device_name: Option, pub device_type: Option, pub now_playing_item: Option, pub now_viewing_item: Option, pub device_id: Option, pub application_version: Option, pub transcoding_info: Option, pub is_active: bool, pub supports_media_control: bool, pub supports_remote_control: bool, pub now_playing_queue: Option>, pub now_playing_queue_full_items: Option>, pub has_custom_device_name: bool, pub playlist_item_id: Option, pub server_id: Option, pub user_primary_image_tag: Option, pub supported_commands: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum SessionMessageType { ForceKeepAlive, GeneralCommand, UserDataChanged, Sessions, Play, SyncPlayCommand, SyncPlayGroupUpdate, Playstate, RestartRequired, ServerShuttingDown, ServerRestarting, LibraryChanged, UserDeleted, UserUpdated, SeriesTimerCreated, TimerCreated, SeriesTimerCancelled, TimerCancelled, RefreshProgress, ScheduledTaskEnded, PackageInstallationCancelled, PackageInstallationFailed, PackageInstallationCompleted, PackageInstalling, PackageUninstalled, ActivityLogEntry, ScheduledTasksInfo, ActivityLogEntryStart, ActivityLogEntryStop, SessionsStart, SessionsStop, ScheduledTasksInfoStart, ScheduledTasksInfoStop, KeepAlive, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SessionsMessage { pub data: Option>, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SessionsStartMessage { pub data: Option, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SessionsStopMessage { pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SessionUserInfo { pub user_id: String, pub user_name: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SetChannelMappingDto { pub provider_id: String, pub tuner_channel_id: String, pub provider_channel_id: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SetPlaylistItemRequestDto { pub playlist_item_id: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SetRepeatModeRequestDto { pub mode: GroupRepeatMode, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SetShuffleModeRequestDto { pub mode: GroupShuffleMode, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SongInfo { pub name: Option, pub original_title: Option, pub path: Option, pub metadata_language: Option, pub metadata_country_code: Option, pub provider_ids: Option>>, pub year: Option, pub index_number: Option, pub parent_index_number: Option, pub premiere_date: Option, pub is_automated: bool, pub album_artists: Option>, pub album: Option, pub artists: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum SortOrder { Ascending, Descending, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SpecialViewOptionDto { pub name: Option, pub id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct StartupConfigurationDto { pub u_i_culture: Option, pub metadata_country_code: Option, pub preferred_metadata_language: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct StartupRemoteAccessDto { pub enable_remote_access: bool, pub enable_automatic_port_mapping: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct StartupUserDto { pub name: Option, pub password: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum Status { Completed, Watching, Both, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct StringGroupUpdate { pub group_id: String, pub r#type: GroupUpdateType, pub data: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum SubtitleDeliveryMethod { Encode, Embed, External, Hls, Drop, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SubtitleOptions { pub skip_if_embedded_subtitles_present: bool, pub skip_if_audio_track_matches: bool, pub download_languages: Option>, pub download_movie_subtitles: bool, pub download_episode_subtitles: bool, pub open_subtitles_username: Option, pub open_subtitles_password_hash: Option, pub is_open_subtitle_vip_account: bool, pub require_perfect_match: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum SubtitlePlaybackMode { Default, Always, OnlyForced, None, Smart, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SubtitleProfile { pub format: Option, pub method: SubtitleDeliveryMethod, pub didl_mode: Option, pub language: Option, pub container: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum SyncAction { UpdateProvider, UpdateJellyfin, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SyncPlayCommandMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SyncPlayGroupUpdateCommandMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SyncPlayQueueItem { pub item_id: String, pub playlist_item_id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum SyncPlayUserAccessType { CreateAndJoinGroups, JoinGroups, None, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SyncStats { pub updated_folders: i32, pub removed_folders: i32, pub updated_box_sets: i32, pub removed_box_sets: i32, pub updated_playlists: i32, pub removed_playlists: i32, pub updated_tv_shows: i32, pub removed_tv_shows: i32, pub updated_seasons: i32, pub removed_seasons: i32, pub updated_videos: i32, pub removed_videos: i32, pub updated_collection_folders: i32, pub updated_user_data: i32, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct SystemInfo { pub local_address: Option, pub server_name: Option, pub version: Option, pub product_name: Option, pub operating_system: Option, pub id: Option, pub startup_wizard_completed: Option, pub operating_system_display_name: Option, pub package_name: Option, pub has_pending_restart: bool, pub is_shutting_down: bool, pub supports_library_monitor: bool, pub web_socket_port_number: i32, pub completed_installations: Option>, pub can_self_restart: bool, pub can_launch_web_browser: bool, pub program_data_path: Option, pub web_path: Option, pub items_by_name_path: Option, pub cache_path: Option, pub log_path: Option, pub internal_metadata_path: Option, pub transcoding_temp_path: Option, pub cast_receiver_applications: Option>, pub has_update_available: bool, pub encoder_location: String, pub system_architecture: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TaskCompletionStatus { pub r#type: TaskCompletionStatusEnum, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum TaskCompletionStatusEnum { Completed, Failed, Cancelled, Aborted, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TaskInfo { pub name: Option, pub state: TaskState, pub current_progress_percentage: Option, pub id: Option, pub last_execution_result: Option, pub triggers: Option>, pub description: Option, pub category: Option, pub is_hidden: bool, pub key: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TaskResult { pub start_time_utc: String, pub end_time_utc: String, pub status: TaskCompletionStatus, pub name: Option, pub key: Option, pub id: Option, pub error_message: Option, pub long_error_message: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum TaskState { Idle, Cancelling, Running, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TaskTriggerInfo { pub r#type: Option, pub time_of_day_ticks: Option, pub interval_ticks: Option, pub day_of_week: Option, pub max_runtime_ticks: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ThemeMediaResult { pub items: Option>, pub total_record_count: i32, pub start_index: i32, pub owner_id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TimerCancelledMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TimerCreatedMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TimerEventInfo { pub id: String, pub program_id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TimerInfoDto { pub id: Option, pub r#type: Option, pub server_id: Option, pub external_id: Option, pub channel_id: String, pub external_channel_id: Option, pub channel_name: Option, pub channel_primary_image_tag: Option, pub program_id: Option, pub external_program_id: Option, pub name: Option, pub overview: Option, pub start_date: String, pub end_date: String, pub service_name: Option, pub priority: i32, pub pre_padding_seconds: i32, pub post_padding_seconds: i32, pub is_pre_padding_required: bool, pub parent_backdrop_item_id: Option, pub parent_backdrop_image_tags: Option>, pub is_post_padding_required: bool, pub keep_until: KeepUntil, pub status: RecordingStatus, pub series_timer_id: Option, pub external_series_timer_id: Option, pub run_time_ticks: Option, pub program_info: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TimerInfoDtoQueryResult { pub items: Option>, pub total_record_count: i32, pub start_index: i32, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TonemappingAlgorithm { pub r#type: TonemappingAlgorithmEnum, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum TonemappingAlgorithmEnum { None, Clip, Linear, Gamma, Reinhard, Hable, Mobius, Bt2390, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TonemappingMode { pub r#type: TonemappingModeEnum, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum TonemappingModeEnum { Auto, Max, Rgb, Lum, Itp, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TonemappingRange { pub r#type: TonemappingRangeEnum, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum TonemappingRangeEnum { Auto, Tv, Pc, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TrailerInfo { pub name: Option, pub original_title: Option, pub path: Option, pub metadata_language: Option, pub metadata_country_code: Option, pub provider_ids: Option>>, pub year: Option, pub index_number: Option, pub parent_index_number: Option, pub premiere_date: Option, pub is_automated: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TrailerInfoRemoteSearchQuery { pub search_info: Option, pub item_id: String, pub search_provider_name: Option, pub include_disabled_providers: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TranscodeReason { pub r#type: TranscodeReasonEnum, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum TranscodeReasonEnum { ContainerNotSupported, VideoCodecNotSupported, AudioCodecNotSupported, SubtitleCodecNotSupported, AudioIsExternal, SecondaryAudioNotSupported, VideoProfileNotSupported, VideoLevelNotSupported, VideoResolutionNotSupported, VideoBitDepthNotSupported, VideoFramerateNotSupported, RefFramesNotSupported, AnamorphicVideoNotSupported, InterlacedVideoNotSupported, AudioChannelsNotSupported, AudioProfileNotSupported, AudioSampleRateNotSupported, AudioBitDepthNotSupported, ContainerBitrateExceedsLimit, VideoBitrateNotSupported, AudioBitrateNotSupported, UnknownVideoStreamInfo, UnknownAudioStreamInfo, DirectPlayError, VideoRangeTypeNotSupported, VideoCodecTagNotSupported, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TranscodeSeekInfo { pub r#type: TranscodeSeekInfoEnum, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum TranscodeSeekInfoEnum { Auto, Bytes, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TranscodingInfo { pub audio_codec: Option, pub video_codec: Option, pub container: Option, pub is_video_direct: bool, pub is_audio_direct: bool, pub bitrate: Option, pub framerate: Option, pub completion_percentage: Option, pub width: Option, pub height: Option, pub audio_channels: Option, pub hardware_acceleration_type: Option, pub transcoding_reasons: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TranscodingProfile { pub container: Option, pub r#type: DlnaProfileType, pub video_codec: Option, pub audio_codec: Option, pub protocol: MediaStreamProtocol, pub estimate_content_length: bool, pub enable_mpegts_m2_ts_mode: bool, pub transcoding_seek_info: TranscodeSeekInfo, pub copy_timestamps: bool, pub context: EncodingContext, pub enable_subtitles_in_manifest: bool, pub max_audio_channels: Option, pub min_segments: i32, pub segment_length: i32, pub break_on_non_key_frames: bool, pub conditions: Option>, pub enable_audio_vbr_encoding: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TransportStreamTimestamp { pub r#type: TransportStreamTimestampEnum, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum TransportStreamTimestampEnum { None, Zero, Valid, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TrickplayInfo { pub width: i32, pub height: i32, pub tile_width: i32, pub tile_height: i32, pub thumbnail_count: i32, pub interval: i32, pub bandwidth: i32, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TrickplayOptions { pub enable_hw_acceleration: bool, pub enable_hw_encoding: bool, pub enable_key_frame_only_extraction: bool, pub scan_behavior: TrickplayScanBehavior, pub process_priority: ProcessPriorityClass, pub interval: i32, pub width_resolutions: Option>, pub tile_width: i32, pub tile_height: i32, pub qscale: i32, pub jpeg_quality: i32, pub process_threads: i32, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum TrickplayScanBehavior { Blocking, NonBlocking, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TunerChannelMapping { pub name: Option, pub provider_channel_name: Option, pub provider_channel_id: Option, pub id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TunerHostInfo { pub id: Option, pub url: Option, pub r#type: Option, pub device_id: Option, pub friendly_name: Option, pub import_favorites_only: bool, pub allow_hw_transcoding: bool, pub allow_fmp4_transcoding_container: bool, pub allow_stream_sharing: bool, pub fallback_max_streaming_bitrate: i32, pub enable_stream_looping: bool, pub source: Option, pub tuner_count: i32, pub user_agent: Option, pub ignore_dts: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct TypeOptions { pub r#type: Option, pub metadata_fetchers: Option>, pub metadata_fetcher_order: Option>, pub image_fetchers: Option>, pub image_fetcher_order: Option>, pub image_options: Option>, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UnratedItem { pub r#type: UnratedItemEnum, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum UnratedItemEnum { Movie, Trailer, Series, Music, Book, LiveTvChannel, LiveTvProgram, ChannelContent, Other, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UpdateLibraryOptionsDto { pub id: String, pub library_options: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UpdateMediaPathRequestDto { pub name: String, pub path_info: MediaPathInfo, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UpdatePlaylistDto { pub name: Option, pub ids: Option>, pub users: Option>, pub is_public: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UpdatePlaylistUserDto { pub can_edit: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UpdateUserItemDataDto { pub rating: Option, pub played_percentage: Option, pub unplayed_item_count: Option, pub playback_position_ticks: i64, pub play_count: i32, pub is_favorite: bool, pub likes: Option, pub last_played_date: Option, pub played: bool, pub key: String, pub item_id: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UpdateUserPassword { pub current_password: Option, pub current_pw: Option, pub new_pw: Option, pub reset_password: bool, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UploadSubtitleDto { pub language: String, pub format: String, pub is_forced: bool, pub is_hearing_impaired: bool, pub data: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UserConfiguration { pub audio_language_preference: Option, pub play_default_audio_track: bool, pub subtitle_language_preference: Option, pub display_missing_episodes: bool, pub grouped_folders: Vec, pub subtitle_mode: SubtitlePlaybackMode, pub display_collections_view: bool, pub enable_local_password: bool, pub ordered_views: Vec, pub latest_items_excludes: Vec, pub my_media_excludes: Vec, pub hide_played_in_latest: bool, pub remember_audio_selections: bool, pub remember_subtitle_selections: bool, pub enable_next_episode_auto_play: bool, pub cast_receiver_id: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UserDataChangedMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UserDataChangeInfo { pub user_id: String, pub user_data_list: Vec, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UserDeletedMessage { pub data: String, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UserDto { pub name: Option, pub server_id: Option, pub server_name: Option, pub id: String, pub primary_image_tag: Option, pub has_password: bool, pub has_configured_password: bool, pub has_configured_easy_password: bool, pub enable_auto_login: Option, pub last_login_date: Option, pub last_activity_date: Option, pub configuration: Option, pub policy: Option, pub primary_image_aspect_ratio: Option, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UserItemDataDto { pub rating: Option, pub played_percentage: Option, pub unplayed_item_count: i32, pub playback_position_ticks: i64, pub play_count: i32, pub is_favorite: bool, pub likes: Option, pub last_played_date: Option, pub played: bool, pub key: String, pub item_id: String, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UserPolicy { pub is_administrator: bool, pub is_hidden: bool, pub enable_collection_management: bool, pub enable_subtitle_management: bool, pub enable_lyric_management: bool, pub is_disabled: bool, pub max_parental_rating: Option, pub blocked_tags: Option>, pub allowed_tags: Option>, pub enable_user_preference_access: bool, pub access_schedules: Option>, pub block_unrated_items: Option>, pub enable_remote_control_of_other_users: bool, pub enable_shared_device_control: bool, pub enable_remote_access: bool, pub enable_live_tv_management: bool, pub enable_live_tv_access: bool, pub enable_media_playback: bool, pub enable_audio_playback_transcoding: bool, pub enable_video_playback_transcoding: bool, pub enable_playback_remuxing: bool, pub force_remote_source_transcoding: bool, pub enable_content_deletion: bool, pub enable_content_deletion_from_folders: Option>, pub enable_content_downloading: bool, pub enable_sync_transcoding: bool, pub enable_media_conversion: bool, pub enabled_devices: Option>, pub enable_all_devices: bool, pub enabled_channels: Option>, pub enable_all_channels: bool, pub enabled_folders: Option>, pub enable_all_folders: bool, pub invalid_login_attempt_count: i32, pub login_attempts_before_lockout: i32, pub max_active_sessions: i32, pub enable_public_sharing: bool, pub blocked_media_folders: Option>, pub blocked_channels: Option>, pub remote_client_bitrate_limit: i32, pub authentication_provider_id: String, pub password_reset_provider_id: String, pub sync_play_access: SyncPlayUserAccessType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UserUpdatedMessage { pub data: Option, pub message_id: String, pub message_type: SessionMessageType, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UtcTimeResponse { pub request_reception_time: String, pub response_transmission_time: String, }