// <auto-generated>
// 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.
// </auto-generated>

namespace Microsoft.Azure.Management.Network.Models
{
    using Microsoft.Rest;
    using Microsoft.Rest.Serialization;
    using Newtonsoft.Json;
    using System.Linq;

    /// <summary>
    /// SSL certificates of an application gateway.
    /// </summary>
    [Rest.Serialization.JsonTransformation]
    public partial class ApplicationGatewaySslCertificate : SubResource
    {
        /// <summary>
        /// Initializes a new instance of the ApplicationGatewaySslCertificate
        /// class.
        /// </summary>
        public ApplicationGatewaySslCertificate()
        {
            CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the ApplicationGatewaySslCertificate
        /// class.
        /// </summary>
        /// <param name="id">Resource ID.</param>
        /// <param name="data">Base-64 encoded pfx certificate. Only applicable
        /// in PUT Request.</param>
        /// <param name="password">Password for the pfx file specified in data.
        /// Only applicable in PUT request.</param>
        /// <param name="publicCertData">Base-64 encoded Public cert data
        /// corresponding to pfx specified in data. Only applicable in GET
        /// request.</param>
        /// <param name="keyVaultSecretId">Secret Id of (base-64 encoded
        /// unencrypted pfx) 'Secret' or 'Certificate' object stored in
        /// KeyVault.</param>
        /// <param name="provisioningState">The provisioning state of the SSL
        /// certificate resource. Possible values include: 'Succeeded',
        /// 'Updating', 'Deleting', 'Failed'</param>
        /// <param name="name">Name of the SSL certificate that is unique
        /// within an Application Gateway.</param>
        /// <param name="etag">A unique read-only string that changes whenever
        /// the resource is updated.</param>
        /// <param name="type">Type of the resource.</param>
        public ApplicationGatewaySslCertificate(string id = default(string), string data = default(string), string password = default(string), string publicCertData = default(string), string keyVaultSecretId = default(string), string provisioningState = default(string), string name = default(string), string etag = default(string), string type = default(string))
            : base(id)
        {
            Data = data;
            Password = password;
            PublicCertData = publicCertData;
            KeyVaultSecretId = keyVaultSecretId;
            ProvisioningState = provisioningState;
            Name = name;
            Etag = etag;
            Type = type;
            CustomInit();
        }

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

        /// <summary>
        /// Gets or sets base-64 encoded pfx certificate. Only applicable in
        /// PUT Request.
        /// </summary>
        [JsonProperty(PropertyName = "properties.data")]
        public string Data { get; set; }

        /// <summary>
        /// Gets or sets password for the pfx file specified in data. Only
        /// applicable in PUT request.
        /// </summary>
        [JsonProperty(PropertyName = "properties.password")]
        public string Password { get; set; }

        /// <summary>
        /// Gets base-64 encoded Public cert data corresponding to pfx
        /// specified in data. Only applicable in GET request.
        /// </summary>
        [JsonProperty(PropertyName = "properties.publicCertData")]
        public string PublicCertData { get; private set; }

        /// <summary>
        /// Gets or sets secret Id of (base-64 encoded unencrypted pfx)
        /// 'Secret' or 'Certificate' object stored in KeyVault.
        /// </summary>
        [JsonProperty(PropertyName = "properties.keyVaultSecretId")]
        public string KeyVaultSecretId { get; set; }

        /// <summary>
        /// Gets the provisioning state of the SSL certificate resource.
        /// Possible values include: 'Succeeded', 'Updating', 'Deleting',
        /// 'Failed'
        /// </summary>
        [JsonProperty(PropertyName = "properties.provisioningState")]
        public string ProvisioningState { get; private set; }

        /// <summary>
        /// Gets or sets name of the SSL certificate that is unique within an
        /// Application Gateway.
        /// </summary>
        [JsonProperty(PropertyName = "name")]
        public string Name { get; set; }

        /// <summary>
        /// Gets a unique read-only string that changes whenever the resource
        /// is updated.
        /// </summary>
        [JsonProperty(PropertyName = "etag")]
        public string Etag { get; private set; }

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

    }
}
