// *** 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.cognito;

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


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

    public static final UserPoolUICustomizationArgs Empty = new UserPoolUICustomizationArgs();

    /**
     * The client ID for the client app. Defaults to `ALL`. If `ALL` is specified, the `css` and/or `image_file` settings will be used for every client that has no UI customization set previously.
     * 
     */
    @Import(name="clientId")
    private @Nullable Output<String> clientId;

    /**
     * @return The client ID for the client app. Defaults to `ALL`. If `ALL` is specified, the `css` and/or `image_file` settings will be used for every client that has no UI customization set previously.
     * 
     */
    public Optional<Output<String>> clientId() {
        return Optional.ofNullable(this.clientId);
    }

    /**
     * The CSS values in the UI customization, provided as a String. At least one of `css` or `image_file` is required.
     * 
     */
    @Import(name="css")
    private @Nullable Output<String> css;

    /**
     * @return The CSS values in the UI customization, provided as a String. At least one of `css` or `image_file` is required.
     * 
     */
    public Optional<Output<String>> css() {
        return Optional.ofNullable(this.css);
    }

    /**
     * The uploaded logo image for the UI customization, provided as a base64-encoded String. Drift detection is not possible for this argument. At least one of `css` or `image_file` is required.
     * 
     */
    @Import(name="imageFile")
    private @Nullable Output<String> imageFile;

    /**
     * @return The uploaded logo image for the UI customization, provided as a base64-encoded String. Drift detection is not possible for this argument. At least one of `css` or `image_file` is required.
     * 
     */
    public Optional<Output<String>> imageFile() {
        return Optional.ofNullable(this.imageFile);
    }

    /**
     * The user pool ID for the user pool.
     * 
     */
    @Import(name="userPoolId", required=true)
    private Output<String> userPoolId;

    /**
     * @return The user pool ID for the user pool.
     * 
     */
    public Output<String> userPoolId() {
        return this.userPoolId;
    }

    private UserPoolUICustomizationArgs() {}

    private UserPoolUICustomizationArgs(UserPoolUICustomizationArgs $) {
        this.clientId = $.clientId;
        this.css = $.css;
        this.imageFile = $.imageFile;
        this.userPoolId = $.userPoolId;
    }

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

    public static final class Builder {
        private UserPoolUICustomizationArgs $;

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

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

        /**
         * @param clientId The client ID for the client app. Defaults to `ALL`. If `ALL` is specified, the `css` and/or `image_file` settings will be used for every client that has no UI customization set previously.
         * 
         * @return builder
         * 
         */
        public Builder clientId(@Nullable Output<String> clientId) {
            $.clientId = clientId;
            return this;
        }

        /**
         * @param clientId The client ID for the client app. Defaults to `ALL`. If `ALL` is specified, the `css` and/or `image_file` settings will be used for every client that has no UI customization set previously.
         * 
         * @return builder
         * 
         */
        public Builder clientId(String clientId) {
            return clientId(Output.of(clientId));
        }

        /**
         * @param css The CSS values in the UI customization, provided as a String. At least one of `css` or `image_file` is required.
         * 
         * @return builder
         * 
         */
        public Builder css(@Nullable Output<String> css) {
            $.css = css;
            return this;
        }

        /**
         * @param css The CSS values in the UI customization, provided as a String. At least one of `css` or `image_file` is required.
         * 
         * @return builder
         * 
         */
        public Builder css(String css) {
            return css(Output.of(css));
        }

        /**
         * @param imageFile The uploaded logo image for the UI customization, provided as a base64-encoded String. Drift detection is not possible for this argument. At least one of `css` or `image_file` is required.
         * 
         * @return builder
         * 
         */
        public Builder imageFile(@Nullable Output<String> imageFile) {
            $.imageFile = imageFile;
            return this;
        }

        /**
         * @param imageFile The uploaded logo image for the UI customization, provided as a base64-encoded String. Drift detection is not possible for this argument. At least one of `css` or `image_file` is required.
         * 
         * @return builder
         * 
         */
        public Builder imageFile(String imageFile) {
            return imageFile(Output.of(imageFile));
        }

        /**
         * @param userPoolId The user pool ID for the user pool.
         * 
         * @return builder
         * 
         */
        public Builder userPoolId(Output<String> userPoolId) {
            $.userPoolId = userPoolId;
            return this;
        }

        /**
         * @param userPoolId The user pool ID for the user pool.
         * 
         * @return builder
         * 
         */
        public Builder userPoolId(String userPoolId) {
            return userPoolId(Output.of(userPoolId));
        }

        public UserPoolUICustomizationArgs build() {
            $.userPoolId = Objects.requireNonNull($.userPoolId, "expected parameter 'userPoolId' to be non-null");
            return $;
        }
    }

}
