/*
 * 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 fms-2018-01-01.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.FMS.Model
{
    /// 
    /// Configures the accounts within the administrator's Organizations organization that
    /// the specified Firewall Manager administrator can apply policies to.
    /// 
    public partial class AccountScope
    {
        private List _accounts = new List();
        private bool? _allAccountsEnabled;
        private bool? _excludeSpecifiedAccounts;
        /// 
        /// Gets and sets the property Accounts. 
        /// 
        /// The list of accounts within the organization that the specified Firewall Manager administrator
        /// either can or cannot apply policies to, based on the value of ExcludeSpecifiedAccounts.
        /// If ExcludeSpecifiedAccounts is set to true, then the Firewall
        /// Manager administrator can apply policies to all members of the organization except
        /// for the accounts in this list. If ExcludeSpecifiedAccounts is set to
        /// false, then the Firewall Manager administrator can only apply policies
        /// to the accounts in this list.
        /// 
        /// 
        public List Accounts
        {
            get { return this._accounts; }
            set { this._accounts = value; }
        }
        // Check to see if Accounts property is set
        internal bool IsSetAccounts()
        {
            return this._accounts != null && this._accounts.Count > 0; 
        }
        /// 
        /// Gets and sets the property AllAccountsEnabled. 
        /// 
        /// A boolean value that indicates if the administrator can apply policies to all accounts
        /// within an organization. If true, the administrator can apply policies to all accounts
        /// within the organization. You can either enable management of all accounts through
        /// this operation, or you can specify a list of accounts to manage in AccountScope$Accounts.
        /// You cannot specify both.
        /// 
        /// 
        public bool AllAccountsEnabled
        {
            get { return this._allAccountsEnabled.GetValueOrDefault(); }
            set { this._allAccountsEnabled = value; }
        }
        // Check to see if AllAccountsEnabled property is set
        internal bool IsSetAllAccountsEnabled()
        {
            return this._allAccountsEnabled.HasValue; 
        }
        /// 
        /// Gets and sets the property ExcludeSpecifiedAccounts. 
        /// 
        /// A boolean value that excludes the accounts in AccountScope$Accounts from
        /// the administrator's scope. If true, the Firewall Manager administrator can apply policies
        /// to all members of the organization except for the accounts listed in AccountScope$Accounts.
        /// You can either specify a list of accounts to exclude by AccountScope$Accounts,
        /// or you can enable management of all accounts by AccountScope$AllAccountsEnabled.
        /// You cannot specify both.
        /// 
        /// 
        public bool ExcludeSpecifiedAccounts
        {
            get { return this._excludeSpecifiedAccounts.GetValueOrDefault(); }
            set { this._excludeSpecifiedAccounts = value; }
        }
        // Check to see if ExcludeSpecifiedAccounts property is set
        internal bool IsSetExcludeSpecifiedAccounts()
        {
            return this._excludeSpecifiedAccounts.HasValue; 
        }
    }
}