using System.Text.Json.Serialization;

namespace YandexMusic.API.Models.Account
{
    public class YShortAccountInfo : YAuthBase
    {
        [JsonPropertyName("public_id")]
        public string PublicId { get; set; }

        public string Uid { get; set; }

        public string FirstName { get; set; }

        public string LastName { get; set; }

        public string Birthday { get; set; }

        [JsonPropertyName("has_password")]
        public bool HasPassword { get; set; }

        public List<string> Partitions { get; set; }

        [JsonPropertyName("primary_alias_type")]
        public int PrimaryAliasType { get; set; }

        [JsonPropertyName("display_name")]
        public string DisplayName { get; set; }

        [JsonPropertyName("normalized_display_login")]
        public string NormalizedDisplayLogin { get; set; }

        [JsonPropertyName("x_token_issued_at")]
        public int XTokenIssuedAt { get; set; }

        [JsonPropertyName("display_login")]
        public string DisplayLogin { get; set; }

        [JsonPropertyName("public_name")]
        public string PublicName { get; set; }

        [JsonPropertyName("avatar_url")]
        public string AvatarUrl { get; set; }

        [JsonPropertyName("native_default_email")]
        public string NativeDefaultEmail { get; set; }

        [JsonPropertyName("has_plus")]
        public bool HasPlus { get; set; }

        [JsonPropertyName("location_id")]
        public int LocationId { get; set; }

        [JsonPropertyName("gender")]
        public string Gender { get; set; }

        [JsonPropertyName("is_avatar_empty")]
        public bool IsAvatarEmpty { get; set; }

        [JsonPropertyName("machine_readable_login")]
        public string MachineReadableLogin { get; set; }

        [JsonPropertyName("has_cards")]
        public bool HasCards { get; set; }

        [JsonPropertyName("has_family")]
        public bool HasFamily { get; set; }

        [JsonPropertyName("picture_login_forbidden")]
        public bool PictureLoginForbidden { get; set; }

        [JsonPropertyName("can_account_join_master")]
        public bool CanAccountJoinMaster { get; set; }

        [JsonPropertyName("secure_phone_number")]
        public string SecurePhoneNumber { get; set; }

        [JsonPropertyName("x_token_client_id")]
        public string XTokenClientId { get; set; }

        [JsonPropertyName("x_token_need_reset")]
        public bool XTokenNeedReset { get; set; }
    }
}
