/*
 * 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 finspace-data-2020-07-13.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.FinSpaceData.Model
{
    /// 
    /// The structure of a user account associated with a permission group.
    /// 
    public partial class UserByPermissionGroup
    {
        private ApiAccess _apiAccess;
        private string _apiAccessPrincipalArn;
        private string _emailAddress;
        private string _firstName;
        private string _lastName;
        private PermissionGroupMembershipStatus _membershipStatus;
        private UserStatus _status;
        private UserType _type;
        private string _userId;
        /// 
        /// Gets and sets the property ApiAccess. 
        /// 
        /// Indicates whether the user can access FinSpace API operations.
        /// 
        ///   -  
        /// 
        ///  ENABLED– The user has permissions to use the API operations.
        /// 
        ///
-  
        /// 
        ///  DISABLED– The user does not have permissions to use any API operations.
        /// 
        ///
/// 
        public ApiAccess ApiAccess
        {
            get { return this._apiAccess; }
            set { this._apiAccess = value; }
        }
        // Check to see if ApiAccess property is set
        internal bool IsSetApiAccess()
        {
            return this._apiAccess != null;
        }
        /// 
        /// Gets and sets the property ApiAccessPrincipalArn. 
        /// 
        /// The IAM ARN identifier that is attached to FinSpace API calls.
        /// 
        /// 
        [AWSProperty(Min=20, Max=2048)]
        public string ApiAccessPrincipalArn
        {
            get { return this._apiAccessPrincipalArn; }
            set { this._apiAccessPrincipalArn = value; }
        }
        // Check to see if ApiAccessPrincipalArn property is set
        internal bool IsSetApiAccessPrincipalArn()
        {
            return this._apiAccessPrincipalArn != null;
        }
        /// 
        /// Gets and sets the property EmailAddress. 
        /// 
        /// The email address of the user. The email address serves as a unique identifier for
        /// each user and cannot be changed after it's created.
        /// 
        /// 
        [AWSProperty(Sensitive=true, Min=4, Max=320)]
        public string EmailAddress
        {
            get { return this._emailAddress; }
            set { this._emailAddress = value; }
        }
        // Check to see if EmailAddress property is set
        internal bool IsSetEmailAddress()
        {
            return this._emailAddress != null;
        }
        /// 
        /// Gets and sets the property FirstName. 
        /// 
        /// The first name of the user.
        /// 
        /// 
        [AWSProperty(Sensitive=true, Min=1, Max=50)]
        public string FirstName
        {
            get { return this._firstName; }
            set { this._firstName = value; }
        }
        // Check to see if FirstName property is set
        internal bool IsSetFirstName()
        {
            return this._firstName != null;
        }
        /// 
        /// Gets and sets the property LastName. 
        /// 
        /// The last name of the user.
        /// 
        /// 
        [AWSProperty(Sensitive=true, Min=1, Max=50)]
        public string LastName
        {
            get { return this._lastName; }
            set { this._lastName = value; }
        }
        // Check to see if LastName property is set
        internal bool IsSetLastName()
        {
            return this._lastName != null;
        }
        /// 
        /// Gets and sets the property MembershipStatus. 
        /// 
        /// Indicates the status of the user account within a permission group.
        /// 
        /// -  
        /// 
        ///  ADDITION_IN_PROGRESS– The user account is currently being added to
        /// the permission group.
        /// 
        ///
-  
        /// 
        ///  ADDITION_SUCCESS– The user account is successfully added to the permission
        /// group.
        /// 
        ///
-  
        /// 
        ///  REMOVAL_IN_PROGRESS– The user is currently being removed from the permission
        /// group.
        /// 
        ///
/// 
        public PermissionGroupMembershipStatus MembershipStatus
        {
            get { return this._membershipStatus; }
            set { this._membershipStatus = value; }
        }
        // Check to see if MembershipStatus property is set
        internal bool IsSetMembershipStatus()
        {
            return this._membershipStatus != null;
        }
        /// 
        /// Gets and sets the property Status. 
        /// 
        /// The current status of the user account. 
        /// 
        /// -  
        /// 
        ///  CREATING– The user account creation is in progress.
        /// 
        ///
-  
        /// 
        ///  ENABLED– The user account is created and is currently active.
        /// 
        ///
-  
        /// 
        ///  DISABLED– The user account is currently inactive.
        /// 
        ///
/// 
        public UserStatus 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 Type. 
        /// 
        ///  Indicates the type of user.
        /// 
        /// -  
        /// 
        ///  SUPER_USER– A user with permission to all the functionality and data
        /// in FinSpace.
        /// 
        ///
-  
        /// 
        ///  APP_USER– A user with specific permissions in FinSpace. The users are
        /// assigned permissions by adding them to a permission group.
        /// 
        ///
/// 
        public UserType Type
        {
            get { return this._type; }
            set { this._type = value; }
        }
        // Check to see if Type property is set
        internal bool IsSetType()
        {
            return this._type != null;
        }
        /// 
        /// Gets and sets the property UserId. 
        /// 
        /// The unique identifier for the user.
        /// 
        /// 
        [AWSProperty(Min=1, Max=26)]
        public string UserId
        {
            get { return this._userId; }
            set { this._userId = value; }
        }
        // Check to see if UserId property is set
        internal bool IsSetUserId()
        {
            return this._userId != null;
        }
    }
}