// // JellyfinItemField.swift // // Copyright 2026 Brendan Szymanski // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // SPDX-License-Identifier: GPL-3.0-or-later // /// Optional metadata a Jellyfin server only populates when explicitly asked for. /// /// Item responses are lean by default: overviews, genres, media streams, and similar heavy fields /// stay `nil` unless the corresponding field is requested. Request only what a screen renders -- /// every added field costs server work and response size. package enum JellyfinItemField: String, CaseIterable, Hashable, Sendable { /// The long-form synopsis. case overview = "Overview" /// The genres attached to the item. case genres = "Genres" /// Marketing taglines. case taglines = "Taglines" /// Free-form tags. case tags = "Tags" /// The producing studios. case studios = "Studios" /// Cast and crew. case people = "People" /// External database identifiers such as IMDb or TMDb. case providerIDs = "ProviderIds" /// The playable media sources, including container and bitrate. case mediaSources = "MediaSources" /// The audio, video, and subtitle streams of each media source. case mediaStreams = "MediaStreams" /// Chapter markers. case chapters = "Chapters" /// Trickplay tile metadata used for seek previews. case trickplay = "Trickplay" /// Whether the current user may play the item. case playAccess = "PlayAccess" /// The identifier of the containing item. case parentID = "ParentId" /// The studio of the parent series, for episodes. case seriesStudio = "SeriesStudio" /// The title in the original production language. case originalTitle = "OriginalTitle" /// How many direct children the item has. case childCount = "ChildCount" /// How many descendants the item has in total. case recursiveItemCount = "RecursiveItemCount" /// Whether the current user may delete the item. case canDelete = "CanDelete" /// Whether the current user may download the item. case canDownload = "CanDownload" /// The video width in pixels. case width = "Width" /// The video height in pixels. case height = "Height" /// Whether the item is high definition. case isHighDefinition = "IsHD" /// When the item was added to the library. case dateCreated = "DateCreated" /// The server-computed sort title. case sortName = "SortName" /// The aspect ratio of the primary image. case primaryImageAspectRatio = "PrimaryImageAspectRatio" }