// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. import Foundation extension Operations { /// A model object public struct GetLibraryItemsMetadata { /// Unix epoch datetime in seconds public let addedAt: Int public let guid: String public let key: String /// The rating key (Media ID) of this media item. /// Note: This is always an integer, but is represented as a string in the API. /// public let ratingKey: String public let summary: String public let title: String /// The type of media content /// public let type: Operations.GetLibraryItemsType public let art: String? @DecimalSerialized public private(set) var audienceRating: Double? public let audienceRatingImage: String? public let banner: String? public let chapterSource: String? public let childCount: Int? public let collection: [Operations.Collection]? public let contentRating: String? public let country: [Operations.GetLibraryItemsCountry]? public let director: [Operations.GetLibraryItemsDirector]? public let duration: Int? public let flattenSeasons: Operations.FlattenSeasons? public let genre: [Operations.GetLibraryItemsGenre]? public let grandparentArt: String? public let grandparentGuid: String? public let grandparentKey: String? public let grandparentRatingKey: String? public let grandparentSlug: String? public let grandparentTheme: String? public let grandparentThumb: String? public let grandparentTitle: String? public let hasPremiumExtras: String? public let hasPremiumPrimaryExtra: String? public let image: [Operations.GetLibraryItemsImage]? public let index: Int? public let lastViewedAt: Int? public let leafCount: Int? /// The Media object is only included when type query is `4` or higher. /// public let media: [Operations.GetLibraryItemsMedia]? /// The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. /// public let mediaGuid: [Operations.MediaGuid]? @DateOnly public private(set) var originallyAvailableAt: Date? public let originalTitle: String? public let parentGuid: String? public let parentIndex: Int? public let parentKey: String? /// The rating key of the parent item. /// public let parentRatingKey: String? public let parentStudio: String? public let parentTheme: String? public let parentThumb: String? public let parentTitle: String? public let parentYear: Int? public let primaryExtraKey: String? @DecimalSerialized public private(set) var rating: Double? public let ratingImage: String? public let role: [Operations.GetLibraryItemsRole]? public let seasonCount: Int? /// Setting that indicates the episode ordering for the show /// None = Library default, /// tmdbAiring = The Movie Database (Aired), /// aired = TheTVDB (Aired), /// dvd = TheTVDB (DVD), /// absolute = TheTVDB (Absolute)). /// public let showOrdering: Operations.ShowOrdering? public let skipChildren: Bool? public let skipCount: Int? public let slug: String? public let studio: String? public let tagline: String? public let theme: String? public let thumb: String? public let titleSort: String? public let ultraBlurColors: Operations.UltraBlurColors? /// Unix epoch datetime in seconds public let updatedAt: Int? public let viewCount: Int? public let viewedLeafCount: Int? public let viewOffset: Int? public let writer: [Operations.GetLibraryItemsWriter]? public let year: Int? /// Creates an object with the specified parameters /// /// - Parameter addedAt: Unix epoch datetime in seconds /// - Parameter ratingKey: The rating key (Media ID) of this media item. /// Note: This is always an integer, but is represented as a string in the API. /// /// - Parameter type: The type of media content /// /// - Parameter media: The Media object is only included when type query is `4` or higher. /// /// - Parameter mediaGuid: The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. /// /// - Parameter parentRatingKey: The rating key of the parent item. /// /// - Parameter showOrdering: Setting that indicates the episode ordering for the show /// None = Library default, /// tmdbAiring = The Movie Database (Aired), /// aired = TheTVDB (Aired), /// dvd = TheTVDB (DVD), /// absolute = TheTVDB (Absolute)). /// /// - Parameter updatedAt: Unix epoch datetime in seconds /// public init(addedAt: Int, guid: String, key: String, ratingKey: String, summary: String, title: String, type: Operations.GetLibraryItemsType, art: String? = nil, audienceRating: Double? = nil, audienceRatingImage: String? = nil, banner: String? = nil, chapterSource: String? = nil, childCount: Int? = nil, collection: [Operations.Collection]? = nil, contentRating: String? = nil, country: [Operations.GetLibraryItemsCountry]? = nil, director: [Operations.GetLibraryItemsDirector]? = nil, duration: Int? = nil, flattenSeasons: Operations.FlattenSeasons? = nil, genre: [Operations.GetLibraryItemsGenre]? = nil, grandparentArt: String? = nil, grandparentGuid: String? = nil, grandparentKey: String? = nil, grandparentRatingKey: String? = nil, grandparentSlug: String? = nil, grandparentTheme: String? = nil, grandparentThumb: String? = nil, grandparentTitle: String? = nil, hasPremiumExtras: String? = nil, hasPremiumPrimaryExtra: String? = nil, image: [Operations.GetLibraryItemsImage]? = nil, index: Int? = nil, lastViewedAt: Int? = nil, leafCount: Int? = nil, media: [Operations.GetLibraryItemsMedia]? = nil, mediaGuid: [Operations.MediaGuid]? = nil, originallyAvailableAt: Date? = nil, originalTitle: String? = nil, parentGuid: String? = nil, parentIndex: Int? = nil, parentKey: String? = nil, parentRatingKey: String? = nil, parentStudio: String? = nil, parentTheme: String? = nil, parentThumb: String? = nil, parentTitle: String? = nil, parentYear: Int? = nil, primaryExtraKey: String? = nil, rating: Double? = nil, ratingImage: String? = nil, role: [Operations.GetLibraryItemsRole]? = nil, seasonCount: Int? = nil, showOrdering: Operations.ShowOrdering? = nil, skipChildren: Bool? = nil, skipCount: Int? = nil, slug: String? = nil, studio: String? = nil, tagline: String? = nil, theme: String? = nil, thumb: String? = nil, titleSort: String? = nil, ultraBlurColors: Operations.UltraBlurColors? = nil, updatedAt: Int? = nil, viewCount: Int? = nil, viewedLeafCount: Int? = nil, viewOffset: Int? = nil, writer: [Operations.GetLibraryItemsWriter]? = nil, year: Int? = nil) { self.addedAt = addedAt self.guid = guid self.key = key self.ratingKey = ratingKey self.summary = summary self.title = title self.type = type self.art = art self._audienceRating = DecimalSerialized(wrappedValue: audienceRating) self.audienceRatingImage = audienceRatingImage self.banner = banner self.chapterSource = chapterSource self.childCount = childCount self.collection = collection self.contentRating = contentRating self.country = country self.director = director self.duration = duration self.flattenSeasons = flattenSeasons self.genre = genre self.grandparentArt = grandparentArt self.grandparentGuid = grandparentGuid self.grandparentKey = grandparentKey self.grandparentRatingKey = grandparentRatingKey self.grandparentSlug = grandparentSlug self.grandparentTheme = grandparentTheme self.grandparentThumb = grandparentThumb self.grandparentTitle = grandparentTitle self.hasPremiumExtras = hasPremiumExtras self.hasPremiumPrimaryExtra = hasPremiumPrimaryExtra self.image = image self.index = index self.lastViewedAt = lastViewedAt self.leafCount = leafCount self.media = media self.mediaGuid = mediaGuid self._originallyAvailableAt = DateOnly(wrappedValue: originallyAvailableAt) self.originalTitle = originalTitle self.parentGuid = parentGuid self.parentIndex = parentIndex self.parentKey = parentKey self.parentRatingKey = parentRatingKey self.parentStudio = parentStudio self.parentTheme = parentTheme self.parentThumb = parentThumb self.parentTitle = parentTitle self.parentYear = parentYear self.primaryExtraKey = primaryExtraKey self._rating = DecimalSerialized(wrappedValue: rating) self.ratingImage = ratingImage self.role = role self.seasonCount = seasonCount self.showOrdering = showOrdering self.skipChildren = skipChildren self.skipCount = skipCount self.slug = slug self.studio = studio self.tagline = tagline self.theme = theme self.thumb = thumb self.titleSort = titleSort self.ultraBlurColors = ultraBlurColors self.updatedAt = updatedAt self.viewCount = viewCount self.viewedLeafCount = viewedLeafCount self.viewOffset = viewOffset self.writer = writer self.year = year } }} extension Operations.GetLibraryItemsMetadata: Codable { enum CodingKeys: String, CodingKey { case addedAt case guid case key case ratingKey case summary case title case type case art case audienceRating case audienceRatingImage case banner case chapterSource case childCount case collection = "Collection" case contentRating case country = "Country" case director = "Director" case duration case flattenSeasons case genre = "Genre" case grandparentArt case grandparentGuid case grandparentKey case grandparentRatingKey case grandparentSlug case grandparentTheme case grandparentThumb case grandparentTitle case hasPremiumExtras case hasPremiumPrimaryExtra case image = "Image" case index case lastViewedAt case leafCount case media = "Media" case mediaGuid = "Guid" case originallyAvailableAt case originalTitle case parentGuid case parentIndex case parentKey case parentRatingKey case parentStudio case parentTheme case parentThumb case parentTitle case parentYear case primaryExtraKey case rating case ratingImage case role = "Role" case seasonCount case showOrdering case skipChildren case skipCount case slug case studio case tagline case theme case thumb case titleSort case ultraBlurColors = "UltraBlurColors" case updatedAt case viewCount case viewedLeafCount case viewOffset case writer = "Writer" case year } public init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) self.addedAt = try container.decode(Int.self, forKey: .addedAt) self.guid = try container.decode(String.self, forKey: .guid) self.key = try container.decode(String.self, forKey: .key) self.ratingKey = try container.decode(String.self, forKey: .ratingKey) self.summary = try container.decode(String.self, forKey: .summary) self.title = try container.decode(String.self, forKey: .title) self.type = try container.decode(Operations.GetLibraryItemsType.self, forKey: .type) self.art = try container.decodeIfPresent(String.self, forKey: .art) self._audienceRating = try container.decodeIfPresent(DecimalSerialized.self, forKey: .audienceRating) ?? DecimalSerialized(wrappedValue: nil) self.audienceRatingImage = try container.decodeIfPresent(String.self, forKey: .audienceRatingImage) self.banner = try container.decodeIfPresent(String.self, forKey: .banner) self.chapterSource = try container.decodeIfPresent(String.self, forKey: .chapterSource) self.childCount = try container.decodeIfPresent(Int.self, forKey: .childCount) self.collection = try container.decodeIfPresent([Operations.Collection].self, forKey: .collection) self.contentRating = try container.decodeIfPresent(String.self, forKey: .contentRating) self.country = try container.decodeIfPresent([Operations.GetLibraryItemsCountry].self, forKey: .country) self.director = try container.decodeIfPresent([Operations.GetLibraryItemsDirector].self, forKey: .director) self.duration = try container.decodeIfPresent(Int.self, forKey: .duration) self.flattenSeasons = try container.decodeIfPresent(Operations.FlattenSeasons.self, forKey: .flattenSeasons) self.genre = try container.decodeIfPresent([Operations.GetLibraryItemsGenre].self, forKey: .genre) self.grandparentArt = try container.decodeIfPresent(String.self, forKey: .grandparentArt) self.grandparentGuid = try container.decodeIfPresent(String.self, forKey: .grandparentGuid) self.grandparentKey = try container.decodeIfPresent(String.self, forKey: .grandparentKey) self.grandparentRatingKey = try container.decodeIfPresent(String.self, forKey: .grandparentRatingKey) self.grandparentSlug = try container.decodeIfPresent(String.self, forKey: .grandparentSlug) self.grandparentTheme = try container.decodeIfPresent(String.self, forKey: .grandparentTheme) self.grandparentThumb = try container.decodeIfPresent(String.self, forKey: .grandparentThumb) self.grandparentTitle = try container.decodeIfPresent(String.self, forKey: .grandparentTitle) self.hasPremiumExtras = try container.decodeIfPresent(String.self, forKey: .hasPremiumExtras) self.hasPremiumPrimaryExtra = try container.decodeIfPresent(String.self, forKey: .hasPremiumPrimaryExtra) self.image = try container.decodeIfPresent([Operations.GetLibraryItemsImage].self, forKey: .image) self.index = try container.decodeIfPresent(Int.self, forKey: .index) self.lastViewedAt = try container.decodeIfPresent(Int.self, forKey: .lastViewedAt) self.leafCount = try container.decodeIfPresent(Int.self, forKey: .leafCount) self.media = try container.decodeIfPresent([Operations.GetLibraryItemsMedia].self, forKey: .media) self.mediaGuid = try container.decodeIfPresent([Operations.MediaGuid].self, forKey: .mediaGuid) self._originallyAvailableAt = try container.decodeIfPresent(DateOnly.self, forKey: .originallyAvailableAt) ?? DateOnly(wrappedValue: nil) self.originalTitle = try container.decodeIfPresent(String.self, forKey: .originalTitle) self.parentGuid = try container.decodeIfPresent(String.self, forKey: .parentGuid) self.parentIndex = try container.decodeIfPresent(Int.self, forKey: .parentIndex) self.parentKey = try container.decodeIfPresent(String.self, forKey: .parentKey) self.parentRatingKey = try container.decodeIfPresent(String.self, forKey: .parentRatingKey) self.parentStudio = try container.decodeIfPresent(String.self, forKey: .parentStudio) self.parentTheme = try container.decodeIfPresent(String.self, forKey: .parentTheme) self.parentThumb = try container.decodeIfPresent(String.self, forKey: .parentThumb) self.parentTitle = try container.decodeIfPresent(String.self, forKey: .parentTitle) self.parentYear = try container.decodeIfPresent(Int.self, forKey: .parentYear) self.primaryExtraKey = try container.decodeIfPresent(String.self, forKey: .primaryExtraKey) self._rating = try container.decodeIfPresent(DecimalSerialized.self, forKey: .rating) ?? DecimalSerialized(wrappedValue: nil) self.ratingImage = try container.decodeIfPresent(String.self, forKey: .ratingImage) self.role = try container.decodeIfPresent([Operations.GetLibraryItemsRole].self, forKey: .role) self.seasonCount = try container.decodeIfPresent(Int.self, forKey: .seasonCount) self.showOrdering = try container.decodeIfPresent(Operations.ShowOrdering.self, forKey: .showOrdering) self.skipChildren = try container.decodeIfPresent(Bool.self, forKey: .skipChildren) self.skipCount = try container.decodeIfPresent(Int.self, forKey: .skipCount) self.slug = try container.decodeIfPresent(String.self, forKey: .slug) self.studio = try container.decodeIfPresent(String.self, forKey: .studio) self.tagline = try container.decodeIfPresent(String.self, forKey: .tagline) self.theme = try container.decodeIfPresent(String.self, forKey: .theme) self.thumb = try container.decodeIfPresent(String.self, forKey: .thumb) self.titleSort = try container.decodeIfPresent(String.self, forKey: .titleSort) self.ultraBlurColors = try container.decodeIfPresent(Operations.UltraBlurColors.self, forKey: .ultraBlurColors) self.updatedAt = try container.decodeIfPresent(Int.self, forKey: .updatedAt) self.viewCount = try container.decodeIfPresent(Int.self, forKey: .viewCount) self.viewedLeafCount = try container.decodeIfPresent(Int.self, forKey: .viewedLeafCount) self.viewOffset = try container.decodeIfPresent(Int.self, forKey: .viewOffset) self.writer = try container.decodeIfPresent([Operations.GetLibraryItemsWriter].self, forKey: .writer) self.year = try container.decodeIfPresent(Int.self, forKey: .year) } public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(self.addedAt, forKey: .addedAt) try container.encode(self.guid, forKey: .guid) try container.encode(self.key, forKey: .key) try container.encode(self.ratingKey, forKey: .ratingKey) try container.encode(self.summary, forKey: .summary) try container.encode(self.title, forKey: .title) try container.encode(self.type, forKey: .type) try container.encodeIfPresent(self.art, forKey: .art) if self.audienceRating != nil { try container.encode(self._audienceRating, forKey: .audienceRating) } try container.encodeIfPresent(self.audienceRatingImage, forKey: .audienceRatingImage) try container.encodeIfPresent(self.banner, forKey: .banner) try container.encodeIfPresent(self.chapterSource, forKey: .chapterSource) try container.encodeIfPresent(self.childCount, forKey: .childCount) try container.encodeIfPresent(self.collection, forKey: .collection) try container.encodeIfPresent(self.contentRating, forKey: .contentRating) try container.encodeIfPresent(self.country, forKey: .country) try container.encodeIfPresent(self.director, forKey: .director) try container.encodeIfPresent(self.duration, forKey: .duration) try container.encodeIfPresent(self.flattenSeasons, forKey: .flattenSeasons) try container.encodeIfPresent(self.genre, forKey: .genre) try container.encodeIfPresent(self.grandparentArt, forKey: .grandparentArt) try container.encodeIfPresent(self.grandparentGuid, forKey: .grandparentGuid) try container.encodeIfPresent(self.grandparentKey, forKey: .grandparentKey) try container.encodeIfPresent(self.grandparentRatingKey, forKey: .grandparentRatingKey) try container.encodeIfPresent(self.grandparentSlug, forKey: .grandparentSlug) try container.encodeIfPresent(self.grandparentTheme, forKey: .grandparentTheme) try container.encodeIfPresent(self.grandparentThumb, forKey: .grandparentThumb) try container.encodeIfPresent(self.grandparentTitle, forKey: .grandparentTitle) try container.encodeIfPresent(self.hasPremiumExtras, forKey: .hasPremiumExtras) try container.encodeIfPresent(self.hasPremiumPrimaryExtra, forKey: .hasPremiumPrimaryExtra) try container.encodeIfPresent(self.image, forKey: .image) try container.encodeIfPresent(self.index, forKey: .index) try container.encodeIfPresent(self.lastViewedAt, forKey: .lastViewedAt) try container.encodeIfPresent(self.leafCount, forKey: .leafCount) try container.encodeIfPresent(self.media, forKey: .media) try container.encodeIfPresent(self.mediaGuid, forKey: .mediaGuid) if self.originallyAvailableAt != nil { try container.encode(self._originallyAvailableAt, forKey: .originallyAvailableAt) } try container.encodeIfPresent(self.originalTitle, forKey: .originalTitle) try container.encodeIfPresent(self.parentGuid, forKey: .parentGuid) try container.encodeIfPresent(self.parentIndex, forKey: .parentIndex) try container.encodeIfPresent(self.parentKey, forKey: .parentKey) try container.encodeIfPresent(self.parentRatingKey, forKey: .parentRatingKey) try container.encodeIfPresent(self.parentStudio, forKey: .parentStudio) try container.encodeIfPresent(self.parentTheme, forKey: .parentTheme) try container.encodeIfPresent(self.parentThumb, forKey: .parentThumb) try container.encodeIfPresent(self.parentTitle, forKey: .parentTitle) try container.encodeIfPresent(self.parentYear, forKey: .parentYear) try container.encodeIfPresent(self.primaryExtraKey, forKey: .primaryExtraKey) if self.rating != nil { try container.encode(self._rating, forKey: .rating) } try container.encodeIfPresent(self.ratingImage, forKey: .ratingImage) try container.encodeIfPresent(self.role, forKey: .role) try container.encodeIfPresent(self.seasonCount, forKey: .seasonCount) try container.encodeIfPresent(self.showOrdering, forKey: .showOrdering) try container.encodeIfPresent(self.skipChildren, forKey: .skipChildren) try container.encodeIfPresent(self.skipCount, forKey: .skipCount) try container.encodeIfPresent(self.slug, forKey: .slug) try container.encodeIfPresent(self.studio, forKey: .studio) try container.encodeIfPresent(self.tagline, forKey: .tagline) try container.encodeIfPresent(self.theme, forKey: .theme) try container.encodeIfPresent(self.thumb, forKey: .thumb) try container.encodeIfPresent(self.titleSort, forKey: .titleSort) try container.encodeIfPresent(self.ultraBlurColors, forKey: .ultraBlurColors) try container.encodeIfPresent(self.updatedAt, forKey: .updatedAt) try container.encodeIfPresent(self.viewCount, forKey: .viewCount) try container.encodeIfPresent(self.viewedLeafCount, forKey: .viewedLeafCount) try container.encodeIfPresent(self.viewOffset, forKey: .viewOffset) try container.encodeIfPresent(self.writer, forKey: .writer) try container.encodeIfPresent(self.year, forKey: .year) } } extension Operations.GetLibraryItemsMetadata { var ratingWrapper: DecimalSerialized { return _rating } var audienceRatingWrapper: DecimalSerialized { return _audienceRating } var originallyAvailableAtWrapper: DateOnly { return _originallyAvailableAt } }