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

import com.pulumi.aws.appflow.inputs.ConnectorProfileConnectorProfileConfigConnectorProfilePropertiesCustomConnectorOauth2PropertiesArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final ConnectorProfileConnectorProfileConfigConnectorProfilePropertiesCustomConnectorArgs Empty = new ConnectorProfileConnectorProfileConfigConnectorProfilePropertiesCustomConnectorArgs();

    /**
     * The OAuth 2.0 properties required for OAuth 2.0 authentication.
     * 
     */
    @Import(name="oauth2Properties")
    private @Nullable Output<ConnectorProfileConnectorProfileConfigConnectorProfilePropertiesCustomConnectorOauth2PropertiesArgs> oauth2Properties;

    /**
     * @return The OAuth 2.0 properties required for OAuth 2.0 authentication.
     * 
     */
    public Optional<Output<ConnectorProfileConnectorProfileConfigConnectorProfilePropertiesCustomConnectorOauth2PropertiesArgs>> oauth2Properties() {
        return Optional.ofNullable(this.oauth2Properties);
    }

    /**
     * A map of properties that are required to create a profile for the custom connector.
     * 
     */
    @Import(name="profileProperties")
    private @Nullable Output<Map<String,String>> profileProperties;

    /**
     * @return A map of properties that are required to create a profile for the custom connector.
     * 
     */
    public Optional<Output<Map<String,String>>> profileProperties() {
        return Optional.ofNullable(this.profileProperties);
    }

    private ConnectorProfileConnectorProfileConfigConnectorProfilePropertiesCustomConnectorArgs() {}

    private ConnectorProfileConnectorProfileConfigConnectorProfilePropertiesCustomConnectorArgs(ConnectorProfileConnectorProfileConfigConnectorProfilePropertiesCustomConnectorArgs $) {
        this.oauth2Properties = $.oauth2Properties;
        this.profileProperties = $.profileProperties;
    }

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

    public static final class Builder {
        private ConnectorProfileConnectorProfileConfigConnectorProfilePropertiesCustomConnectorArgs $;

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

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

        /**
         * @param oauth2Properties The OAuth 2.0 properties required for OAuth 2.0 authentication.
         * 
         * @return builder
         * 
         */
        public Builder oauth2Properties(@Nullable Output<ConnectorProfileConnectorProfileConfigConnectorProfilePropertiesCustomConnectorOauth2PropertiesArgs> oauth2Properties) {
            $.oauth2Properties = oauth2Properties;
            return this;
        }

        /**
         * @param oauth2Properties The OAuth 2.0 properties required for OAuth 2.0 authentication.
         * 
         * @return builder
         * 
         */
        public Builder oauth2Properties(ConnectorProfileConnectorProfileConfigConnectorProfilePropertiesCustomConnectorOauth2PropertiesArgs oauth2Properties) {
            return oauth2Properties(Output.of(oauth2Properties));
        }

        /**
         * @param profileProperties A map of properties that are required to create a profile for the custom connector.
         * 
         * @return builder
         * 
         */
        public Builder profileProperties(@Nullable Output<Map<String,String>> profileProperties) {
            $.profileProperties = profileProperties;
            return this;
        }

        /**
         * @param profileProperties A map of properties that are required to create a profile for the custom connector.
         * 
         * @return builder
         * 
         */
        public Builder profileProperties(Map<String,String> profileProperties) {
            return profileProperties(Output.of(profileProperties));
        }

        public ConnectorProfileConnectorProfileConfigConnectorProfilePropertiesCustomConnectorArgs build() {
            return $;
        }
    }

}
