// *** 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.quicksight.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 AccountSubscriptionState extends com.pulumi.resources.ResourceArgs {

    public static final AccountSubscriptionState Empty = new AccountSubscriptionState();

    /**
     * Name of your Amazon QuickSight account. This name is unique over all of AWS, and it appears only when users sign in.
     * 
     */
    @Import(name="accountName")
    private @Nullable Output<String> accountName;

    /**
     * @return Name of your Amazon QuickSight account. This name is unique over all of AWS, and it appears only when users sign in.
     * 
     */
    public Optional<Output<String>> accountName() {
        return Optional.ofNullable(this.accountName);
    }

    /**
     * Status of the Amazon QuickSight account&#39;s subscription.
     * 
     */
    @Import(name="accountSubscriptionStatus")
    private @Nullable Output<String> accountSubscriptionStatus;

    /**
     * @return Status of the Amazon QuickSight account&#39;s subscription.
     * 
     */
    public Optional<Output<String>> accountSubscriptionStatus() {
        return Optional.ofNullable(this.accountSubscriptionStatus);
    }

    /**
     * Name of your Active Directory. This field is required if `ACTIVE_DIRECTORY` is the selected authentication method of the new Amazon QuickSight account.
     * 
     */
    @Import(name="activeDirectoryName")
    private @Nullable Output<String> activeDirectoryName;

    /**
     * @return Name of your Active Directory. This field is required if `ACTIVE_DIRECTORY` is the selected authentication method of the new Amazon QuickSight account.
     * 
     */
    public Optional<Output<String>> activeDirectoryName() {
        return Optional.ofNullable(this.activeDirectoryName);
    }

    /**
     * Admin group associated with your Active Directory. This field is required if `ACTIVE_DIRECTORY` is the selected authentication method of the new Amazon QuickSight account.
     * 
     */
    @Import(name="adminGroups")
    private @Nullable Output<List<String>> adminGroups;

    /**
     * @return Admin group associated with your Active Directory. This field is required if `ACTIVE_DIRECTORY` is the selected authentication method of the new Amazon QuickSight account.
     * 
     */
    public Optional<Output<List<String>>> adminGroups() {
        return Optional.ofNullable(this.adminGroups);
    }

    /**
     * Method that you want to use to authenticate your Amazon QuickSight account. Currently, the valid values for this parameter are `IAM_AND_QUICKSIGHT`, `IAM_ONLY`, and `ACTIVE_DIRECTORY`.
     * 
     */
    @Import(name="authenticationMethod")
    private @Nullable Output<String> authenticationMethod;

    /**
     * @return Method that you want to use to authenticate your Amazon QuickSight account. Currently, the valid values for this parameter are `IAM_AND_QUICKSIGHT`, `IAM_ONLY`, and `ACTIVE_DIRECTORY`.
     * 
     */
    public Optional<Output<String>> authenticationMethod() {
        return Optional.ofNullable(this.authenticationMethod);
    }

    /**
     * Author group associated with your Active Directory.
     * 
     */
    @Import(name="authorGroups")
    private @Nullable Output<List<String>> authorGroups;

    /**
     * @return Author group associated with your Active Directory.
     * 
     */
    public Optional<Output<List<String>>> authorGroups() {
        return Optional.ofNullable(this.authorGroups);
    }

    /**
     * AWS account ID hosting the QuickSight account. Default to provider account.
     * 
     */
    @Import(name="awsAccountId")
    private @Nullable Output<String> awsAccountId;

    /**
     * @return AWS account ID hosting the QuickSight account. Default to provider account.
     * 
     */
    public Optional<Output<String>> awsAccountId() {
        return Optional.ofNullable(this.awsAccountId);
    }

    /**
     * A 10-digit phone number for the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
     * 
     */
    @Import(name="contactNumber")
    private @Nullable Output<String> contactNumber;

    /**
     * @return A 10-digit phone number for the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
     * 
     */
    public Optional<Output<String>> contactNumber() {
        return Optional.ofNullable(this.contactNumber);
    }

    /**
     * Active Directory ID that is associated with your Amazon QuickSight account.
     * 
     */
    @Import(name="directoryId")
    private @Nullable Output<String> directoryId;

    /**
     * @return Active Directory ID that is associated with your Amazon QuickSight account.
     * 
     */
    public Optional<Output<String>> directoryId() {
        return Optional.ofNullable(this.directoryId);
    }

    /**
     * Edition of Amazon QuickSight that you want your account to have. Currently, you can choose from `STANDARD`, `ENTERPRISE` or `ENTERPRISE_AND_Q`.
     * 
     */
    @Import(name="edition")
    private @Nullable Output<String> edition;

    /**
     * @return Edition of Amazon QuickSight that you want your account to have. Currently, you can choose from `STANDARD`, `ENTERPRISE` or `ENTERPRISE_AND_Q`.
     * 
     */
    public Optional<Output<String>> edition() {
        return Optional.ofNullable(this.edition);
    }

    /**
     * Email address of the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
     * 
     */
    @Import(name="emailAddress")
    private @Nullable Output<String> emailAddress;

    /**
     * @return Email address of the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
     * 
     */
    public Optional<Output<String>> emailAddress() {
        return Optional.ofNullable(this.emailAddress);
    }

    /**
     * First name of the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
     * 
     */
    @Import(name="firstName")
    private @Nullable Output<String> firstName;

    /**
     * @return First name of the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
     * 
     */
    public Optional<Output<String>> firstName() {
        return Optional.ofNullable(this.firstName);
    }

    /**
     * Last name of the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
     * 
     */
    @Import(name="lastName")
    private @Nullable Output<String> lastName;

    /**
     * @return Last name of the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
     * 
     */
    public Optional<Output<String>> lastName() {
        return Optional.ofNullable(this.lastName);
    }

    /**
     * Email address that you want Amazon QuickSight to send notifications to regarding your Amazon QuickSight account or Amazon QuickSight subscription.
     * 
     * The following arguments are optional:
     * 
     */
    @Import(name="notificationEmail")
    private @Nullable Output<String> notificationEmail;

    /**
     * @return Email address that you want Amazon QuickSight to send notifications to regarding your Amazon QuickSight account or Amazon QuickSight subscription.
     * 
     * The following arguments are optional:
     * 
     */
    public Optional<Output<String>> notificationEmail() {
        return Optional.ofNullable(this.notificationEmail);
    }

    /**
     * Reader group associated with your Active Direcrtory.
     * 
     */
    @Import(name="readerGroups")
    private @Nullable Output<List<String>> readerGroups;

    /**
     * @return Reader group associated with your Active Direcrtory.
     * 
     */
    public Optional<Output<List<String>>> readerGroups() {
        return Optional.ofNullable(this.readerGroups);
    }

    /**
     * Realm of the Active Directory that is associated with your Amazon QuickSight account.
     * 
     */
    @Import(name="realm")
    private @Nullable Output<String> realm;

    /**
     * @return Realm of the Active Directory that is associated with your Amazon QuickSight account.
     * 
     */
    public Optional<Output<String>> realm() {
        return Optional.ofNullable(this.realm);
    }

    private AccountSubscriptionState() {}

    private AccountSubscriptionState(AccountSubscriptionState $) {
        this.accountName = $.accountName;
        this.accountSubscriptionStatus = $.accountSubscriptionStatus;
        this.activeDirectoryName = $.activeDirectoryName;
        this.adminGroups = $.adminGroups;
        this.authenticationMethod = $.authenticationMethod;
        this.authorGroups = $.authorGroups;
        this.awsAccountId = $.awsAccountId;
        this.contactNumber = $.contactNumber;
        this.directoryId = $.directoryId;
        this.edition = $.edition;
        this.emailAddress = $.emailAddress;
        this.firstName = $.firstName;
        this.lastName = $.lastName;
        this.notificationEmail = $.notificationEmail;
        this.readerGroups = $.readerGroups;
        this.realm = $.realm;
    }

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

    public static final class Builder {
        private AccountSubscriptionState $;

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

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

        /**
         * @param accountName Name of your Amazon QuickSight account. This name is unique over all of AWS, and it appears only when users sign in.
         * 
         * @return builder
         * 
         */
        public Builder accountName(@Nullable Output<String> accountName) {
            $.accountName = accountName;
            return this;
        }

        /**
         * @param accountName Name of your Amazon QuickSight account. This name is unique over all of AWS, and it appears only when users sign in.
         * 
         * @return builder
         * 
         */
        public Builder accountName(String accountName) {
            return accountName(Output.of(accountName));
        }

        /**
         * @param accountSubscriptionStatus Status of the Amazon QuickSight account&#39;s subscription.
         * 
         * @return builder
         * 
         */
        public Builder accountSubscriptionStatus(@Nullable Output<String> accountSubscriptionStatus) {
            $.accountSubscriptionStatus = accountSubscriptionStatus;
            return this;
        }

        /**
         * @param accountSubscriptionStatus Status of the Amazon QuickSight account&#39;s subscription.
         * 
         * @return builder
         * 
         */
        public Builder accountSubscriptionStatus(String accountSubscriptionStatus) {
            return accountSubscriptionStatus(Output.of(accountSubscriptionStatus));
        }

        /**
         * @param activeDirectoryName Name of your Active Directory. This field is required if `ACTIVE_DIRECTORY` is the selected authentication method of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder activeDirectoryName(@Nullable Output<String> activeDirectoryName) {
            $.activeDirectoryName = activeDirectoryName;
            return this;
        }

        /**
         * @param activeDirectoryName Name of your Active Directory. This field is required if `ACTIVE_DIRECTORY` is the selected authentication method of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder activeDirectoryName(String activeDirectoryName) {
            return activeDirectoryName(Output.of(activeDirectoryName));
        }

        /**
         * @param adminGroups Admin group associated with your Active Directory. This field is required if `ACTIVE_DIRECTORY` is the selected authentication method of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder adminGroups(@Nullable Output<List<String>> adminGroups) {
            $.adminGroups = adminGroups;
            return this;
        }

        /**
         * @param adminGroups Admin group associated with your Active Directory. This field is required if `ACTIVE_DIRECTORY` is the selected authentication method of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder adminGroups(List<String> adminGroups) {
            return adminGroups(Output.of(adminGroups));
        }

        /**
         * @param adminGroups Admin group associated with your Active Directory. This field is required if `ACTIVE_DIRECTORY` is the selected authentication method of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder adminGroups(String... adminGroups) {
            return adminGroups(List.of(adminGroups));
        }

        /**
         * @param authenticationMethod Method that you want to use to authenticate your Amazon QuickSight account. Currently, the valid values for this parameter are `IAM_AND_QUICKSIGHT`, `IAM_ONLY`, and `ACTIVE_DIRECTORY`.
         * 
         * @return builder
         * 
         */
        public Builder authenticationMethod(@Nullable Output<String> authenticationMethod) {
            $.authenticationMethod = authenticationMethod;
            return this;
        }

        /**
         * @param authenticationMethod Method that you want to use to authenticate your Amazon QuickSight account. Currently, the valid values for this parameter are `IAM_AND_QUICKSIGHT`, `IAM_ONLY`, and `ACTIVE_DIRECTORY`.
         * 
         * @return builder
         * 
         */
        public Builder authenticationMethod(String authenticationMethod) {
            return authenticationMethod(Output.of(authenticationMethod));
        }

        /**
         * @param authorGroups Author group associated with your Active Directory.
         * 
         * @return builder
         * 
         */
        public Builder authorGroups(@Nullable Output<List<String>> authorGroups) {
            $.authorGroups = authorGroups;
            return this;
        }

        /**
         * @param authorGroups Author group associated with your Active Directory.
         * 
         * @return builder
         * 
         */
        public Builder authorGroups(List<String> authorGroups) {
            return authorGroups(Output.of(authorGroups));
        }

        /**
         * @param authorGroups Author group associated with your Active Directory.
         * 
         * @return builder
         * 
         */
        public Builder authorGroups(String... authorGroups) {
            return authorGroups(List.of(authorGroups));
        }

        /**
         * @param awsAccountId AWS account ID hosting the QuickSight account. Default to provider account.
         * 
         * @return builder
         * 
         */
        public Builder awsAccountId(@Nullable Output<String> awsAccountId) {
            $.awsAccountId = awsAccountId;
            return this;
        }

        /**
         * @param awsAccountId AWS account ID hosting the QuickSight account. Default to provider account.
         * 
         * @return builder
         * 
         */
        public Builder awsAccountId(String awsAccountId) {
            return awsAccountId(Output.of(awsAccountId));
        }

        /**
         * @param contactNumber A 10-digit phone number for the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder contactNumber(@Nullable Output<String> contactNumber) {
            $.contactNumber = contactNumber;
            return this;
        }

        /**
         * @param contactNumber A 10-digit phone number for the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder contactNumber(String contactNumber) {
            return contactNumber(Output.of(contactNumber));
        }

        /**
         * @param directoryId Active Directory ID that is associated with your Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder directoryId(@Nullable Output<String> directoryId) {
            $.directoryId = directoryId;
            return this;
        }

        /**
         * @param directoryId Active Directory ID that is associated with your Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder directoryId(String directoryId) {
            return directoryId(Output.of(directoryId));
        }

        /**
         * @param edition Edition of Amazon QuickSight that you want your account to have. Currently, you can choose from `STANDARD`, `ENTERPRISE` or `ENTERPRISE_AND_Q`.
         * 
         * @return builder
         * 
         */
        public Builder edition(@Nullable Output<String> edition) {
            $.edition = edition;
            return this;
        }

        /**
         * @param edition Edition of Amazon QuickSight that you want your account to have. Currently, you can choose from `STANDARD`, `ENTERPRISE` or `ENTERPRISE_AND_Q`.
         * 
         * @return builder
         * 
         */
        public Builder edition(String edition) {
            return edition(Output.of(edition));
        }

        /**
         * @param emailAddress Email address of the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder emailAddress(@Nullable Output<String> emailAddress) {
            $.emailAddress = emailAddress;
            return this;
        }

        /**
         * @param emailAddress Email address of the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder emailAddress(String emailAddress) {
            return emailAddress(Output.of(emailAddress));
        }

        /**
         * @param firstName First name of the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder firstName(@Nullable Output<String> firstName) {
            $.firstName = firstName;
            return this;
        }

        /**
         * @param firstName First name of the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder firstName(String firstName) {
            return firstName(Output.of(firstName));
        }

        /**
         * @param lastName Last name of the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder lastName(@Nullable Output<String> lastName) {
            $.lastName = lastName;
            return this;
        }

        /**
         * @param lastName Last name of the author of the Amazon QuickSight account to use for future communications. This field is required if `ENTERPPRISE_AND_Q` is the selected edition of the new Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder lastName(String lastName) {
            return lastName(Output.of(lastName));
        }

        /**
         * @param notificationEmail Email address that you want Amazon QuickSight to send notifications to regarding your Amazon QuickSight account or Amazon QuickSight subscription.
         * 
         * The following arguments are optional:
         * 
         * @return builder
         * 
         */
        public Builder notificationEmail(@Nullable Output<String> notificationEmail) {
            $.notificationEmail = notificationEmail;
            return this;
        }

        /**
         * @param notificationEmail Email address that you want Amazon QuickSight to send notifications to regarding your Amazon QuickSight account or Amazon QuickSight subscription.
         * 
         * The following arguments are optional:
         * 
         * @return builder
         * 
         */
        public Builder notificationEmail(String notificationEmail) {
            return notificationEmail(Output.of(notificationEmail));
        }

        /**
         * @param readerGroups Reader group associated with your Active Direcrtory.
         * 
         * @return builder
         * 
         */
        public Builder readerGroups(@Nullable Output<List<String>> readerGroups) {
            $.readerGroups = readerGroups;
            return this;
        }

        /**
         * @param readerGroups Reader group associated with your Active Direcrtory.
         * 
         * @return builder
         * 
         */
        public Builder readerGroups(List<String> readerGroups) {
            return readerGroups(Output.of(readerGroups));
        }

        /**
         * @param readerGroups Reader group associated with your Active Direcrtory.
         * 
         * @return builder
         * 
         */
        public Builder readerGroups(String... readerGroups) {
            return readerGroups(List.of(readerGroups));
        }

        /**
         * @param realm Realm of the Active Directory that is associated with your Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder realm(@Nullable Output<String> realm) {
            $.realm = realm;
            return this;
        }

        /**
         * @param realm Realm of the Active Directory that is associated with your Amazon QuickSight account.
         * 
         * @return builder
         * 
         */
        public Builder realm(String realm) {
            return realm(Output.of(realm));
        }

        public AccountSubscriptionState build() {
            return $;
        }
    }

}
