/*
 * 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 pinpoint-sms-voice-v2-2022-03-31.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.PinpointSMSVoiceV2.Model
{
    /// 
    /// This is the response object from the CreatePool operation.
    /// 
    public partial class CreatePoolResponse : AmazonWebServiceResponse
    {
        private DateTime? _createdTimestamp;
        private bool? _deletionProtectionEnabled;
        private MessageType _messageType;
        private string _optOutListName;
        private string _poolArn;
        private string _poolId;
        private bool? _selfManagedOptOutsEnabled;
        private bool? _sharedRoutesEnabled;
        private PoolStatus _status;
        private List _tags = new List();
        private string _twoWayChannelArn;
        private bool? _twoWayEnabled;
        /// 
        /// Gets and sets the property CreatedTimestamp. 
        /// 
        /// The time when the pool was created, in UNIX
        /// epoch time format.
        /// 
        /// 
        public DateTime CreatedTimestamp
        {
            get { return this._createdTimestamp.GetValueOrDefault(); }
            set { this._createdTimestamp = value; }
        }
        // Check to see if CreatedTimestamp property is set
        internal bool IsSetCreatedTimestamp()
        {
            return this._createdTimestamp.HasValue; 
        }
        /// 
        /// Gets and sets the property DeletionProtectionEnabled. 
        /// 
        /// When set to true deletion protection is enabled. By default this is set to false.
        /// 
        /// 
        /// 
        public bool DeletionProtectionEnabled
        {
            get { return this._deletionProtectionEnabled.GetValueOrDefault(); }
            set { this._deletionProtectionEnabled = value; }
        }
        // Check to see if DeletionProtectionEnabled property is set
        internal bool IsSetDeletionProtectionEnabled()
        {
            return this._deletionProtectionEnabled.HasValue; 
        }
        /// 
        /// Gets and sets the property MessageType. 
        /// 
        /// The type of message for the pool to use.
        /// 
        /// 
        public MessageType MessageType
        {
            get { return this._messageType; }
            set { this._messageType = value; }
        }
        // Check to see if MessageType property is set
        internal bool IsSetMessageType()
        {
            return this._messageType != null;
        }
        /// 
        /// Gets and sets the property OptOutListName. 
        /// 
        /// The name of the OptOutList associated with the pool.
        /// 
        /// 
        [AWSProperty(Min=1, Max=64)]
        public string OptOutListName
        {
            get { return this._optOutListName; }
            set { this._optOutListName = value; }
        }
        // Check to see if OptOutListName property is set
        internal bool IsSetOptOutListName()
        {
            return this._optOutListName != null;
        }
        /// 
        /// Gets and sets the property PoolArn. 
        /// 
        /// The Amazon Resource Name (ARN) for the pool.
        /// 
        /// 
        public string PoolArn
        {
            get { return this._poolArn; }
            set { this._poolArn = value; }
        }
        // Check to see if PoolArn property is set
        internal bool IsSetPoolArn()
        {
            return this._poolArn != null;
        }
        /// 
        /// Gets and sets the property PoolId. 
        /// 
        /// The unique identifier for the pool.
        /// 
        /// 
        public string PoolId
        {
            get { return this._poolId; }
            set { this._poolId = value; }
        }
        // Check to see if PoolId property is set
        internal bool IsSetPoolId()
        {
            return this._poolId != null;
        }
        /// 
        /// Gets and sets the property SelfManagedOptOutsEnabled. 
        /// 
        /// By default this is set to false. When an end recipient sends a message that begins
        /// with HELP or STOP to one of your dedicated numbers, Amazon Pinpoint automatically
        /// replies with a customizable message and adds the end recipient to the OptOutList.
        /// When set to true you're responsible for responding to HELP and STOP requests. You're
        /// also responsible for tracking and honoring opt-out requests.
        /// 
        /// 
        public bool SelfManagedOptOutsEnabled
        {
            get { return this._selfManagedOptOutsEnabled.GetValueOrDefault(); }
            set { this._selfManagedOptOutsEnabled = value; }
        }
        // Check to see if SelfManagedOptOutsEnabled property is set
        internal bool IsSetSelfManagedOptOutsEnabled()
        {
            return this._selfManagedOptOutsEnabled.HasValue; 
        }
        /// 
        /// Gets and sets the property SharedRoutesEnabled. 
        /// 
        /// Indicates whether shared routes are enabled for the pool.
        /// 
        /// 
        public bool SharedRoutesEnabled
        {
            get { return this._sharedRoutesEnabled.GetValueOrDefault(); }
            set { this._sharedRoutesEnabled = value; }
        }
        // Check to see if SharedRoutesEnabled property is set
        internal bool IsSetSharedRoutesEnabled()
        {
            return this._sharedRoutesEnabled.HasValue; 
        }
        /// 
        /// Gets and sets the property Status. 
        /// 
        /// The current status of the pool.
        /// 
        ///   -  
        /// 
        /// CREATING: The pool is currently being created and isn't yet available for use.
        /// 
        ///  
-  
        /// 
        /// ACTIVE: The pool is active and available for use.
        /// 
        ///  
-  
        /// 
        /// DELETING: The pool is being deleted.
        /// 
        ///  
/// 
        public PoolStatus 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 Tags. 
        /// 
        /// An array of tags (key and value pairs) associated with the pool.
        /// 
        /// 
        [AWSProperty(Min=0, Max=200)]
        public List Tags
        {
            get { return this._tags; }
            set { this._tags = value; }
        }
        // Check to see if Tags property is set
        internal bool IsSetTags()
        {
            return this._tags != null && this._tags.Count > 0; 
        }
        /// 
        /// Gets and sets the property TwoWayChannelArn. 
        /// 
        /// The Amazon Resource Name (ARN) of the two way channel.
        /// 
        /// 
        [AWSProperty(Min=20, Max=2048)]
        public string TwoWayChannelArn
        {
            get { return this._twoWayChannelArn; }
            set { this._twoWayChannelArn = value; }
        }
        // Check to see if TwoWayChannelArn property is set
        internal bool IsSetTwoWayChannelArn()
        {
            return this._twoWayChannelArn != null;
        }
        /// 
        /// Gets and sets the property TwoWayEnabled. 
        /// 
        /// By default this is set to false. When set to true you can receive incoming text messages
        /// from your end recipients.
        /// 
        /// 
        public bool TwoWayEnabled
        {
            get { return this._twoWayEnabled.GetValueOrDefault(); }
            set { this._twoWayEnabled = value; }
        }
        // Check to see if TwoWayEnabled property is set
        internal bool IsSetTwoWayEnabled()
        {
            return this._twoWayEnabled.HasValue; 
        }
    }
}