// <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.Search.Models
{
    using Newtonsoft.Json;
    using System.Linq;

    /// <summary>
    /// Describes the properties of an existing Shared Private Link Resource
    /// managed by the Azure Cognitive Search service.
    /// </summary>
    public partial class SharedPrivateLinkResourceProperties
    {
        /// <summary>
        /// Initializes a new instance of the
        /// SharedPrivateLinkResourceProperties class.
        /// </summary>
        public SharedPrivateLinkResourceProperties()
        {
            CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the
        /// SharedPrivateLinkResourceProperties class.
        /// </summary>
        /// <param name="privateLinkResourceId">The resource id of the resource
        /// the shared private link resource is for.</param>
        /// <param name="groupId">The group id from the provider of resource
        /// the shared private link resource is for.</param>
        /// <param name="requestMessage">The request message for requesting
        /// approval of the shared private link resource.</param>
        /// <param name="status">Status of the shared private link resource.
        /// Can be Pending, Approved, Rejected, Disconnected, or Timeout.
        /// Possible values include: 'Pending', 'Approved', 'Rejected',
        /// 'Disconnected', 'Timeout'</param>
        public SharedPrivateLinkResourceProperties(string privateLinkResourceId = default(string), string groupId = default(string), string requestMessage = default(string), SharedPrivateLinkResourceStatus? status = default(SharedPrivateLinkResourceStatus?))
        {
            PrivateLinkResourceId = privateLinkResourceId;
            GroupId = groupId;
            RequestMessage = requestMessage;
            Status = status;
            CustomInit();
        }

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

        /// <summary>
        /// Gets or sets the resource id of the resource the shared private
        /// link resource is for.
        /// </summary>
        [JsonProperty(PropertyName = "privateLinkResourceId")]
        public string PrivateLinkResourceId { get; set; }

        /// <summary>
        /// Gets or sets the group id from the provider of resource the shared
        /// private link resource is for.
        /// </summary>
        [JsonProperty(PropertyName = "groupId")]
        public string GroupId { get; set; }

        /// <summary>
        /// Gets or sets the request message for requesting approval of the
        /// shared private link resource.
        /// </summary>
        [JsonProperty(PropertyName = "requestMessage")]
        public string RequestMessage { get; set; }

        /// <summary>
        /// Gets or sets status of the shared private link resource. Can be
        /// Pending, Approved, Rejected, Disconnected, or Timeout. Possible
        /// values include: 'Pending', 'Approved', 'Rejected', 'Disconnected',
        /// 'Timeout'
        /// </summary>
        [JsonProperty(PropertyName = "status")]
        public SharedPrivateLinkResourceStatus? Status { get; set; }

    }
}
