// <auto-generated>
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.
// </auto-generated>

namespace Microsoft.Bonsai.SimulatorApi.Models
{
    using Newtonsoft.Json;
    using System.Linq;

    /// <summary>
    /// A summary of a SimulatorSession, returned from ListSessions
    /// </summary>
    public partial class SimulatorSessionSummary
    {
        /// <summary>
        /// Initializes a new instance of the SimulatorSessionSummary class.
        /// </summary>
        public SimulatorSessionSummary()
        {
            CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the SimulatorSessionSummary class.
        /// </summary>
        /// <param name="sessionStatus">Possible values include:
        /// 'Deregistered', 'Attachable', 'Attached', 'Detaching',
        /// 'Rejected'</param>
        /// <param name="simulatorName">From the registration's
        /// SimulatorInterface</param>
        public SimulatorSessionSummary(string sessionId = default(string), SimulatorSessionTypesStatus? sessionStatus = default(SimulatorSessionTypesStatus?), string simulatorName = default(string), SimulatorContext simulatorContext = default(SimulatorContext))
        {
            SessionId = sessionId;
            SessionStatus = sessionStatus;
            SimulatorName = simulatorName;
            SimulatorContext = simulatorContext;
            CustomInit();
        }

        /// <summary>
        /// An initialization method that performs custom operations like setting defaults
        /// </summary>
        partial void CustomInit();

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "sessionId")]
        public string SessionId { get; set; }

        /// <summary>
        /// Gets or sets possible values include: 'Deregistered', 'Attachable',
        /// 'Attached', 'Detaching', 'Rejected'
        /// </summary>
        [JsonProperty(PropertyName = "sessionStatus")]
        public SimulatorSessionTypesStatus? SessionStatus { get; set; }

        /// <summary>
        /// Gets or sets from the registration's SimulatorInterface
        /// </summary>
        [JsonProperty(PropertyName = "simulatorName")]
        public string SimulatorName { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "simulatorContext")]
        public SimulatorContext SimulatorContext { get; set; }

    }
}
