//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
//
// Changes to this file may cause incorrect behavior and will be lost when
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
#nullable enable
namespace LukeHagar.PlexAPI.SDK.Models.Requests
{
    using LukeHagar.PlexAPI.SDK.Models.Requests;
    using LukeHagar.PlexAPI.SDK.Utils;
    using Newtonsoft.Json;
    using NodaTime;
    using System.Collections.Generic;
    
    public class GetMetaDataByRatingKeyMetadata
    {

        [JsonProperty("ratingKey")]
        public string? RatingKey { get; set; }

        [JsonProperty("key")]
        public string? Key { get; set; }

        [JsonProperty("guid")]
        public string? Guid { get; set; }

        [JsonProperty("studio")]
        public string? Studio { get; set; }

        [JsonProperty("type")]
        public string? Type { get; set; }

        [JsonProperty("title")]
        public string? Title { get; set; }

        [JsonProperty("librarySectionTitle")]
        public string? LibrarySectionTitle { get; set; }

        [JsonProperty("librarySectionID")]
        public int? LibrarySectionID { get; set; }

        [JsonProperty("librarySectionKey")]
        public string? LibrarySectionKey { get; set; }

        /// <summary>
        /// The name of the album artist for the track when audio, and the name of the TV show for the episode when video.
        /// </summary>
        [JsonProperty("grandparentTitle")]
        public string? GrandparentTitle { get; set; }

        /// <summary>
        /// The name of the album for the track when audio, and the name of the season for the episode when TV show.
        /// </summary>
        [JsonProperty("parentTitle")]
        public string? ParentTitle { get; set; }

        /// <summary>
        /// The orginal untranslated name of the media item when non-english.
        /// </summary>
        [JsonProperty("originalTitle")]
        public string? OriginalTitle { get; set; }

        /// <summary>
        /// The index starting from 0 of this media item in the MetaData array.
        /// </summary>
        [JsonProperty("index")]
        public long? Index { get; set; }

        /// <summary>
        /// The parent index starting from 0 of this media item in the parent MetaData array.
        /// </summary>
        [JsonProperty("parentIndex")]
        public long? ParentIndex { get; set; }

        [JsonProperty("contentRating")]
        public string? ContentRating { get; set; }

        [JsonProperty("summary")]
        public string? Summary { get; set; }

        [JsonProperty("rating")]
        public double? Rating { get; set; }

        [JsonProperty("audienceRating")]
        public double? AudienceRating { get; set; }

        [JsonProperty("year")]
        public int? Year { get; set; }

        [JsonProperty("tagline")]
        public string? Tagline { get; set; }

        [JsonProperty("thumb")]
        public string? Thumb { get; set; }

        [JsonProperty("art")]
        public string? Art { get; set; }

        [JsonProperty("duration")]
        public int? Duration { get; set; }

        [JsonProperty("originallyAvailableAt")]
        public LocalDate? OriginallyAvailableAt { get; set; }

        [JsonProperty("addedAt")]
        public int? AddedAt { get; set; }

        [JsonProperty("updatedAt")]
        public int? UpdatedAt { get; set; }

        [JsonProperty("audienceRatingImage")]
        public string? AudienceRatingImage { get; set; }

        [JsonProperty("hasPremiumPrimaryExtra")]
        public string? HasPremiumPrimaryExtra { get; set; }

        [JsonProperty("ratingImage")]
        public string? RatingImage { get; set; }

        [JsonProperty("Media")]
        public List<GetMetaDataByRatingKeyMedia>? Media { get; set; }

        [JsonProperty("Genre")]
        public List<GetMetaDataByRatingKeyGenre>? Genre { get; set; }

        [JsonProperty("Country")]
        public List<GetMetaDataByRatingKeyCountry>? Country { get; set; }

        [JsonProperty("Guid")]
        public List<Guids>? Guids { get; set; }

        [JsonProperty("Rating")]
        public List<Ratings>? Ratings { get; set; }

        [JsonProperty("Director")]
        public List<GetMetaDataByRatingKeyDirector>? Director { get; set; }

        [JsonProperty("Writer")]
        public List<GetMetaDataByRatingKeyWriter>? Writer { get; set; }

        [JsonProperty("Role")]
        public List<GetMetaDataByRatingKeyRole>? Role { get; set; }

        [JsonProperty("Producer")]
        public List<Producer>? Producer { get; set; }
    }
}