/*
 * 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 mq-2017-11-27.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.MQ.Model
{
    /// 
    /// A user associated with the broker. For Amazon MQ for RabbitMQ brokers, one and only
    /// one administrative user is accepted and created when a broker is first provisioned.
    /// All subsequent broker users are created by making RabbitMQ API calls directly to brokers
    /// or via the RabbitMQ web console.
    /// 
    public partial class User
    {
        private bool? _consoleAccess;
        private List _groups = new List();
        private string _password;
        private bool? _replicationUser;
        private string _username;
        /// 
        /// Gets and sets the property ConsoleAccess. 
        /// 
        /// Enables access to the ActiveMQ Web Console for the ActiveMQ user. Does not apply to
        /// RabbitMQ brokers.
        /// 
        /// 
        public bool ConsoleAccess
        {
            get { return this._consoleAccess.GetValueOrDefault(); }
            set { this._consoleAccess = value; }
        }
        // Check to see if ConsoleAccess property is set
        internal bool IsSetConsoleAccess()
        {
            return this._consoleAccess.HasValue; 
        }
        /// 
        /// Gets and sets the property Groups. 
        /// 
        /// The list of groups (20 maximum) to which the ActiveMQ user belongs. This value can
        /// contain only alphanumeric characters, dashes, periods, underscores, and tildes (-
        /// . _ ~). This value must be 2-100 characters long. Does not apply to RabbitMQ brokers.
        /// 
        /// 
        public List Groups
        {
            get { return this._groups; }
            set { this._groups = value; }
        }
        // Check to see if Groups property is set
        internal bool IsSetGroups()
        {
            return this._groups != null && this._groups.Count > 0; 
        }
        /// 
        /// Gets and sets the property Password. 
        /// 
        /// Required. The password of the user. This value must be at least 12 characters long,
        /// must contain at least 4 unique characters, and must not contain commas, colons, or
        /// equal signs (,:=).
        /// 
        /// 
        [AWSProperty(Required=true)]
        public string Password
        {
            get { return this._password; }
            set { this._password = value; }
        }
        // Check to see if Password property is set
        internal bool IsSetPassword()
        {
            return this._password != null;
        }
        /// 
        /// Gets and sets the property ReplicationUser. 
        /// 
        /// Defines if this user is intended for CRDR replication purposes.
        /// 
        /// 
        public bool ReplicationUser
        {
            get { return this._replicationUser.GetValueOrDefault(); }
            set { this._replicationUser = value; }
        }
        // Check to see if ReplicationUser property is set
        internal bool IsSetReplicationUser()
        {
            return this._replicationUser.HasValue; 
        }
        /// 
        /// Gets and sets the property Username. 
        /// 
        /// The username of the broker user. The following restrictions apply to broker usernames:
        /// 
        ///  - 
        /// 
        /// For Amazon MQ for ActiveMQ brokers, this value can contain only alphanumeric characters,
        /// dashes, periods, underscores, and tildes (- . _ ~). This value must be 2-100 characters
        /// long.
        /// 
        /// 
  - 
        /// 
        /// para>For Amazon MQ for RabbitMQ brokers, this value can contain only alphanumeric
        /// characters, dashes, periods, underscores (- . _). This value must not contain a tilde
        /// (~) character. Amazon MQ prohibts using guest as a valid usename. This value must
        /// be 2-100 characters long.
        /// 
        /// 
 
 
        /// 
        /// Do not add personally identifiable information (PII) or other confidential or sensitive
        /// information in broker usernames. Broker usernames are accessible to other Amazon Web
        /// Services services, including CloudWatch Logs. Broker usernames are not intended to
        /// be used for private or sensitive data.
        /// 
        /// 
        /// 
        [AWSProperty(Required=true)]
        public string Username
        {
            get { return this._username; }
            set { this._username = value; }
        }
        // Check to see if Username property is set
        internal bool IsSetUsername()
        {
            return this._username != null;
        }
    }
}