//------------------------------------------------------------------------------
// <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 System;
    
    /// <summary>
    /// The Pin with a non-null authToken when it has been verified by the user
    /// </summary>
    public class GetTokenByPinIdAuthPinContainer
    {

        [JsonProperty("id")]
        public long Id { get; set; } = default!;

        [JsonProperty("code")]
        public string Code { get; set; } = default!;

        [JsonProperty("product")]
        public string Product { get; set; } = default!;

        [JsonProperty("trusted")]
        public bool? Trusted { get; set; } = false;

        [JsonProperty("qr")]
        public string Qr { get; set; } = default!;

        /// <summary>
        /// The X-Client-Identifier used in the request
        /// </summary>
        [JsonProperty("clientIdentifier")]
        public string ClientIdentifier { get; set; } = default!;

        /// <summary>
        /// Geo location data
        /// </summary>
        [JsonProperty("location")]
        public GetTokenByPinIdGeoData Location { get; set; } = default!;

        /// <summary>
        /// The number of seconds this pin expires, by default 900 seconds
        /// </summary>
        [JsonProperty("expiresIn")]
        public long? ExpiresIn { get; set; } = 900;

        [JsonProperty("createdAt")]
        public DateTime CreatedAt { get; set; } = default!;

        [JsonProperty("expiresAt")]
        public DateTime ExpiresAt { get; set; } = default!;

        [JsonProperty("authToken")]
        public string? AuthToken { get; set; } = null;

        [JsonProperty("newRegistration")]
        public object? NewRegistration { get; set; } = null;
    }
}