// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for
// license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.

namespace Microsoft.Azure.Management.Automation.Models
{
    using Microsoft.Azure;
    using Microsoft.Azure.Management;
    using Microsoft.Azure.Management.Automation;
    using Microsoft.Rest;
    using Microsoft.Rest.Serialization;
    using Newtonsoft.Json;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;

    /// <summary>
    /// Definition of the connection type.
    /// </summary>
    [Rest.Serialization.JsonTransformation]
    public partial class ConnectionType
    {
        /// <summary>
        /// Initializes a new instance of the ConnectionType class.
        /// </summary>
        public ConnectionType()
        {
          CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the ConnectionType class.
        /// </summary>
        /// <param name="id">Gets the id of the resource.</param>
        /// <param name="name">Gets the name of the connection type.</param>
        /// <param name="isGlobal">Gets or sets a Boolean value to indicate if
        /// the connection type is global.</param>
        /// <param name="fieldDefinitions">Gets the field definitions of the
        /// connection type.</param>
        /// <param name="creationTime">Gets the creation time.</param>
        /// <param name="lastModifiedTime">Gets or sets the last modified
        /// time.</param>
        /// <param name="description">Gets or sets the description.</param>
        public ConnectionType(string id = default(string), string name = default(string), bool? isGlobal = default(bool?), IDictionary<string, FieldDefinition> fieldDefinitions = default(IDictionary<string, FieldDefinition>), System.DateTime? creationTime = default(System.DateTime?), System.DateTime? lastModifiedTime = default(System.DateTime?), string description = default(string))
        {
            Id = id;
            Name = name;
            IsGlobal = isGlobal;
            FieldDefinitions = fieldDefinitions;
            CreationTime = creationTime;
            LastModifiedTime = lastModifiedTime;
            Description = description;
            CustomInit();
        }

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

        /// <summary>
        /// Gets the id of the resource.
        /// </summary>
        [JsonProperty(PropertyName = "id")]
        public string Id { get; private set; }

        /// <summary>
        /// Gets the name of the connection type.
        /// </summary>
        [JsonProperty(PropertyName = "name")]
        public string Name { get; private set; }

        /// <summary>
        /// Gets or sets a Boolean value to indicate if the connection type is
        /// global.
        /// </summary>
        [JsonProperty(PropertyName = "properties.isGlobal")]
        public bool? IsGlobal { get; set; }

        /// <summary>
        /// Gets the field definitions of the connection type.
        /// </summary>
        [JsonProperty(PropertyName = "properties.fieldDefinitions")]
        public IDictionary<string, FieldDefinition> FieldDefinitions { get; private set; }

        /// <summary>
        /// Gets the creation time.
        /// </summary>
        [JsonProperty(PropertyName = "properties.creationTime")]
        public System.DateTime? CreationTime { get; private set; }

        /// <summary>
        /// Gets or sets the last modified time.
        /// </summary>
        [JsonProperty(PropertyName = "properties.lastModifiedTime")]
        public System.DateTime? LastModifiedTime { get; set; }

        /// <summary>
        /// Gets or sets the description.
        /// </summary>
        [JsonProperty(PropertyName = "properties.description")]
        public string Description { get; set; }

    }
}
