// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.aws.fms.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class PolicyExcludeMapArgs extends com.pulumi.resources.ResourceArgs {

    public static final PolicyExcludeMapArgs Empty = new PolicyExcludeMapArgs();

    /**
     * A list of AWS Organization member Accounts that you want to include for this AWS FMS Policy.
     * 
     */
    @Import(name="accounts")
    private @Nullable Output<List<String>> accounts;

    /**
     * @return A list of AWS Organization member Accounts that you want to include for this AWS FMS Policy.
     * 
     */
    public Optional<Output<List<String>>> accounts() {
        return Optional.ofNullable(this.accounts);
    }

    /**
     * A list of IDs of the AWS Organizational Units that you want to include for this AWS FMS Policy. Specifying an OU is the equivalent of specifying all accounts in the OU and in any of its child OUs, including any child OUs and accounts that are added at a later time.
     * 
     * You can specify inclusions or exclusions, but not both. If you specify an `include_map`, AWS Firewall Manager applies the policy to all accounts specified by the `include_map`, and does not evaluate any `exclude_map` specifications. If you do not specify an `include_map`, then Firewall Manager applies the policy to all accounts except for those specified by the `exclude_map`.
     * 
     */
    @Import(name="orgunits")
    private @Nullable Output<List<String>> orgunits;

    /**
     * @return A list of IDs of the AWS Organizational Units that you want to include for this AWS FMS Policy. Specifying an OU is the equivalent of specifying all accounts in the OU and in any of its child OUs, including any child OUs and accounts that are added at a later time.
     * 
     * You can specify inclusions or exclusions, but not both. If you specify an `include_map`, AWS Firewall Manager applies the policy to all accounts specified by the `include_map`, and does not evaluate any `exclude_map` specifications. If you do not specify an `include_map`, then Firewall Manager applies the policy to all accounts except for those specified by the `exclude_map`.
     * 
     */
    public Optional<Output<List<String>>> orgunits() {
        return Optional.ofNullable(this.orgunits);
    }

    private PolicyExcludeMapArgs() {}

    private PolicyExcludeMapArgs(PolicyExcludeMapArgs $) {
        this.accounts = $.accounts;
        this.orgunits = $.orgunits;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(PolicyExcludeMapArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private PolicyExcludeMapArgs $;

        public Builder() {
            $ = new PolicyExcludeMapArgs();
        }

        public Builder(PolicyExcludeMapArgs defaults) {
            $ = new PolicyExcludeMapArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param accounts A list of AWS Organization member Accounts that you want to include for this AWS FMS Policy.
         * 
         * @return builder
         * 
         */
        public Builder accounts(@Nullable Output<List<String>> accounts) {
            $.accounts = accounts;
            return this;
        }

        /**
         * @param accounts A list of AWS Organization member Accounts that you want to include for this AWS FMS Policy.
         * 
         * @return builder
         * 
         */
        public Builder accounts(List<String> accounts) {
            return accounts(Output.of(accounts));
        }

        /**
         * @param accounts A list of AWS Organization member Accounts that you want to include for this AWS FMS Policy.
         * 
         * @return builder
         * 
         */
        public Builder accounts(String... accounts) {
            return accounts(List.of(accounts));
        }

        /**
         * @param orgunits A list of IDs of the AWS Organizational Units that you want to include for this AWS FMS Policy. Specifying an OU is the equivalent of specifying all accounts in the OU and in any of its child OUs, including any child OUs and accounts that are added at a later time.
         * 
         * You can specify inclusions or exclusions, but not both. If you specify an `include_map`, AWS Firewall Manager applies the policy to all accounts specified by the `include_map`, and does not evaluate any `exclude_map` specifications. If you do not specify an `include_map`, then Firewall Manager applies the policy to all accounts except for those specified by the `exclude_map`.
         * 
         * @return builder
         * 
         */
        public Builder orgunits(@Nullable Output<List<String>> orgunits) {
            $.orgunits = orgunits;
            return this;
        }

        /**
         * @param orgunits A list of IDs of the AWS Organizational Units that you want to include for this AWS FMS Policy. Specifying an OU is the equivalent of specifying all accounts in the OU and in any of its child OUs, including any child OUs and accounts that are added at a later time.
         * 
         * You can specify inclusions or exclusions, but not both. If you specify an `include_map`, AWS Firewall Manager applies the policy to all accounts specified by the `include_map`, and does not evaluate any `exclude_map` specifications. If you do not specify an `include_map`, then Firewall Manager applies the policy to all accounts except for those specified by the `exclude_map`.
         * 
         * @return builder
         * 
         */
        public Builder orgunits(List<String> orgunits) {
            return orgunits(Output.of(orgunits));
        }

        /**
         * @param orgunits A list of IDs of the AWS Organizational Units that you want to include for this AWS FMS Policy. Specifying an OU is the equivalent of specifying all accounts in the OU and in any of its child OUs, including any child OUs and accounts that are added at a later time.
         * 
         * You can specify inclusions or exclusions, but not both. If you specify an `include_map`, AWS Firewall Manager applies the policy to all accounts specified by the `include_map`, and does not evaluate any `exclude_map` specifications. If you do not specify an `include_map`, then Firewall Manager applies the policy to all accounts except for those specified by the `exclude_map`.
         * 
         * @return builder
         * 
         */
        public Builder orgunits(String... orgunits) {
            return orgunits(List.of(orgunits));
        }

        public PolicyExcludeMapArgs build() {
            return $;
        }
    }

}
