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

import com.pulumi.aws.cloudwatch.inputs.EventConnectionAuthParametersApiKeyArgs;
import com.pulumi.aws.cloudwatch.inputs.EventConnectionAuthParametersBasicArgs;
import com.pulumi.aws.cloudwatch.inputs.EventConnectionAuthParametersInvocationHttpParametersArgs;
import com.pulumi.aws.cloudwatch.inputs.EventConnectionAuthParametersOauthArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final EventConnectionAuthParametersArgs Empty = new EventConnectionAuthParametersArgs();

    /**
     * Parameters used for API_KEY authorization. An API key to include in the header for each authentication request. A maximum of 1 are allowed. Conflicts with `basic` and `oauth`. Documented below.
     * 
     */
    @Import(name="apiKey")
    private @Nullable Output<EventConnectionAuthParametersApiKeyArgs> apiKey;

    /**
     * @return Parameters used for API_KEY authorization. An API key to include in the header for each authentication request. A maximum of 1 are allowed. Conflicts with `basic` and `oauth`. Documented below.
     * 
     */
    public Optional<Output<EventConnectionAuthParametersApiKeyArgs>> apiKey() {
        return Optional.ofNullable(this.apiKey);
    }

    /**
     * Parameters used for BASIC authorization. A maximum of 1 are allowed. Conflicts with `api_key` and `oauth`. Documented below.
     * 
     */
    @Import(name="basic")
    private @Nullable Output<EventConnectionAuthParametersBasicArgs> basic;

    /**
     * @return Parameters used for BASIC authorization. A maximum of 1 are allowed. Conflicts with `api_key` and `oauth`. Documented below.
     * 
     */
    public Optional<Output<EventConnectionAuthParametersBasicArgs>> basic() {
        return Optional.ofNullable(this.basic);
    }

    /**
     * Invocation Http Parameters are additional credentials used to sign each Invocation of the ApiDestination created from this Connection. If the ApiDestination Rule Target has additional HttpParameters, the values will be merged together, with the Connection Invocation Http Parameters taking precedence. Secret values are stored and managed by AWS Secrets Manager. A maximum of 1 are allowed. Documented below.
     * 
     */
    @Import(name="invocationHttpParameters")
    private @Nullable Output<EventConnectionAuthParametersInvocationHttpParametersArgs> invocationHttpParameters;

    /**
     * @return Invocation Http Parameters are additional credentials used to sign each Invocation of the ApiDestination created from this Connection. If the ApiDestination Rule Target has additional HttpParameters, the values will be merged together, with the Connection Invocation Http Parameters taking precedence. Secret values are stored and managed by AWS Secrets Manager. A maximum of 1 are allowed. Documented below.
     * 
     */
    public Optional<Output<EventConnectionAuthParametersInvocationHttpParametersArgs>> invocationHttpParameters() {
        return Optional.ofNullable(this.invocationHttpParameters);
    }

    /**
     * Parameters used for OAUTH_CLIENT_CREDENTIALS authorization. A maximum of 1 are allowed. Conflicts with `basic` and `api_key`. Documented below.
     * 
     */
    @Import(name="oauth")
    private @Nullable Output<EventConnectionAuthParametersOauthArgs> oauth;

    /**
     * @return Parameters used for OAUTH_CLIENT_CREDENTIALS authorization. A maximum of 1 are allowed. Conflicts with `basic` and `api_key`. Documented below.
     * 
     */
    public Optional<Output<EventConnectionAuthParametersOauthArgs>> oauth() {
        return Optional.ofNullable(this.oauth);
    }

    private EventConnectionAuthParametersArgs() {}

    private EventConnectionAuthParametersArgs(EventConnectionAuthParametersArgs $) {
        this.apiKey = $.apiKey;
        this.basic = $.basic;
        this.invocationHttpParameters = $.invocationHttpParameters;
        this.oauth = $.oauth;
    }

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

    public static final class Builder {
        private EventConnectionAuthParametersArgs $;

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

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

        /**
         * @param apiKey Parameters used for API_KEY authorization. An API key to include in the header for each authentication request. A maximum of 1 are allowed. Conflicts with `basic` and `oauth`. Documented below.
         * 
         * @return builder
         * 
         */
        public Builder apiKey(@Nullable Output<EventConnectionAuthParametersApiKeyArgs> apiKey) {
            $.apiKey = apiKey;
            return this;
        }

        /**
         * @param apiKey Parameters used for API_KEY authorization. An API key to include in the header for each authentication request. A maximum of 1 are allowed. Conflicts with `basic` and `oauth`. Documented below.
         * 
         * @return builder
         * 
         */
        public Builder apiKey(EventConnectionAuthParametersApiKeyArgs apiKey) {
            return apiKey(Output.of(apiKey));
        }

        /**
         * @param basic Parameters used for BASIC authorization. A maximum of 1 are allowed. Conflicts with `api_key` and `oauth`. Documented below.
         * 
         * @return builder
         * 
         */
        public Builder basic(@Nullable Output<EventConnectionAuthParametersBasicArgs> basic) {
            $.basic = basic;
            return this;
        }

        /**
         * @param basic Parameters used for BASIC authorization. A maximum of 1 are allowed. Conflicts with `api_key` and `oauth`. Documented below.
         * 
         * @return builder
         * 
         */
        public Builder basic(EventConnectionAuthParametersBasicArgs basic) {
            return basic(Output.of(basic));
        }

        /**
         * @param invocationHttpParameters Invocation Http Parameters are additional credentials used to sign each Invocation of the ApiDestination created from this Connection. If the ApiDestination Rule Target has additional HttpParameters, the values will be merged together, with the Connection Invocation Http Parameters taking precedence. Secret values are stored and managed by AWS Secrets Manager. A maximum of 1 are allowed. Documented below.
         * 
         * @return builder
         * 
         */
        public Builder invocationHttpParameters(@Nullable Output<EventConnectionAuthParametersInvocationHttpParametersArgs> invocationHttpParameters) {
            $.invocationHttpParameters = invocationHttpParameters;
            return this;
        }

        /**
         * @param invocationHttpParameters Invocation Http Parameters are additional credentials used to sign each Invocation of the ApiDestination created from this Connection. If the ApiDestination Rule Target has additional HttpParameters, the values will be merged together, with the Connection Invocation Http Parameters taking precedence. Secret values are stored and managed by AWS Secrets Manager. A maximum of 1 are allowed. Documented below.
         * 
         * @return builder
         * 
         */
        public Builder invocationHttpParameters(EventConnectionAuthParametersInvocationHttpParametersArgs invocationHttpParameters) {
            return invocationHttpParameters(Output.of(invocationHttpParameters));
        }

        /**
         * @param oauth Parameters used for OAUTH_CLIENT_CREDENTIALS authorization. A maximum of 1 are allowed. Conflicts with `basic` and `api_key`. Documented below.
         * 
         * @return builder
         * 
         */
        public Builder oauth(@Nullable Output<EventConnectionAuthParametersOauthArgs> oauth) {
            $.oauth = oauth;
            return this;
        }

        /**
         * @param oauth Parameters used for OAUTH_CLIENT_CREDENTIALS authorization. A maximum of 1 are allowed. Conflicts with `basic` and `api_key`. Documented below.
         * 
         * @return builder
         * 
         */
        public Builder oauth(EventConnectionAuthParametersOauthArgs oauth) {
            return oauth(Output.of(oauth));
        }

        public EventConnectionAuthParametersArgs build() {
            return $;
        }
    }

}
