/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the apprunner-2020-05-15.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.AppRunner.Model
{
    /// 
    /// The App Runner resource that specifies an App Runner endpoint for incoming traffic.
    /// It establishes a connection between a VPC interface endpoint and a App Runner service,
    /// to make your App Runner service accessible from only within an Amazon VPC.
    /// 
    public partial class VpcIngressConnection
    {
        private string _accountId;
        private DateTime? _createdAt;
        private DateTime? _deletedAt;
        private string _domainName;
        private IngressVpcConfiguration _ingressVpcConfiguration;
        private string _serviceArn;
        private VpcIngressConnectionStatus _status;
        private string _vpcIngressConnectionArn;
        private string _vpcIngressConnectionName;
        /// 
        /// Gets and sets the property AccountId. 
        /// 
        /// The Account Id you use to create the VPC Ingress Connection resource.
        /// 
        /// 
        [AWSProperty(Min=12, Max=12)]
        public string AccountId
        {
            get { return this._accountId; }
            set { this._accountId = value; }
        }
        // Check to see if AccountId property is set
        internal bool IsSetAccountId()
        {
            return this._accountId != null;
        }
        /// 
        /// Gets and sets the property CreatedAt. 
        /// 
        /// The time when the VPC Ingress Connection was created. It's in the Unix time stamp
        /// format.
        /// 
        ///   -  
        /// 
        ///  Type: Timestamp 
        /// 
        ///  
-  
        /// 
        ///  Required: Yes 
        /// 
        ///  
/// 
        public DateTime CreatedAt
        {
            get { return this._createdAt.GetValueOrDefault(); }
            set { this._createdAt = value; }
        }
        // Check to see if CreatedAt property is set
        internal bool IsSetCreatedAt()
        {
            return this._createdAt.HasValue; 
        }
        /// 
        /// Gets and sets the property DeletedAt. 
        /// 
        /// The time when the App Runner service was deleted. It's in the Unix time stamp format.
        /// 
        /// -  
        /// 
        ///  Type: Timestamp 
        /// 
        ///  
-  
        /// 
        ///  Required: No 
        /// 
        ///  
/// 
        public DateTime DeletedAt
        {
            get { return this._deletedAt.GetValueOrDefault(); }
            set { this._deletedAt = value; }
        }
        // Check to see if DeletedAt property is set
        internal bool IsSetDeletedAt()
        {
            return this._deletedAt.HasValue; 
        }
        /// 
        /// Gets and sets the property DomainName. 
        /// 
        /// The domain name associated with the VPC Ingress Connection resource.
        /// 
        /// 
        [AWSProperty(Min=1, Max=255)]
        public string DomainName
        {
            get { return this._domainName; }
            set { this._domainName = value; }
        }
        // Check to see if DomainName property is set
        internal bool IsSetDomainName()
        {
            return this._domainName != null;
        }
        /// 
        /// Gets and sets the property IngressVpcConfiguration. 
        /// 
        /// Specifications for the customer’s VPC and related PrivateLink VPC endpoint that are
        /// used to associate with the VPC Ingress Connection resource.
        /// 
        /// 
        public IngressVpcConfiguration IngressVpcConfiguration
        {
            get { return this._ingressVpcConfiguration; }
            set { this._ingressVpcConfiguration = value; }
        }
        // Check to see if IngressVpcConfiguration property is set
        internal bool IsSetIngressVpcConfiguration()
        {
            return this._ingressVpcConfiguration != null;
        }
        /// 
        /// Gets and sets the property ServiceArn. 
        /// 
        /// The Amazon Resource Name (ARN) of the service associated with the VPC Ingress Connection.
        /// 
        /// 
        /// 
        [AWSProperty(Min=1, Max=1011)]
        public string ServiceArn
        {
            get { return this._serviceArn; }
            set { this._serviceArn = value; }
        }
        // Check to see if ServiceArn property is set
        internal bool IsSetServiceArn()
        {
            return this._serviceArn != null;
        }
        /// 
        /// Gets and sets the property Status. 
        /// 
        /// The current status of the VPC Ingress Connection. The VPC Ingress Connection displays
        /// one of the following statuses:AVAILABLE, PENDING_CREATION,
        /// PENDING_UPDATE, PENDING_DELETION,FAILED_CREATION,
        /// FAILED_UPDATE, FAILED_DELETION, and DELETED..
        /// 
        /// 
        /// 
        public VpcIngressConnectionStatus Status
        {
            get { return this._status; }
            set { this._status = value; }
        }
        // Check to see if Status property is set
        internal bool IsSetStatus()
        {
            return this._status != null;
        }
        /// 
        /// Gets and sets the property VpcIngressConnectionArn. 
        /// 
        /// The Amazon Resource Name (ARN) of the VPC Ingress Connection. 
        /// 
        /// 
        [AWSProperty(Min=1, Max=1011)]
        public string VpcIngressConnectionArn
        {
            get { return this._vpcIngressConnectionArn; }
            set { this._vpcIngressConnectionArn = value; }
        }
        // Check to see if VpcIngressConnectionArn property is set
        internal bool IsSetVpcIngressConnectionArn()
        {
            return this._vpcIngressConnectionArn != null;
        }
        /// 
        /// Gets and sets the property VpcIngressConnectionName. 
        /// 
        /// The customer-provided VPC Ingress Connection name.
        /// 
        /// 
        [AWSProperty(Min=4, Max=40)]
        public string VpcIngressConnectionName
        {
            get { return this._vpcIngressConnectionName; }
            set { this._vpcIngressConnectionName = value; }
        }
        // Check to see if VpcIngressConnectionName property is set
        internal bool IsSetVpcIngressConnectionName()
        {
            return this._vpcIngressConnectionName != null;
        }
    }
}