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

import com.pulumi.aws.wafv2.inputs.WebAclLoggingConfigurationRedactedFieldAllQueryArgumentsArgs;
import com.pulumi.aws.wafv2.inputs.WebAclLoggingConfigurationRedactedFieldBodyArgs;
import com.pulumi.aws.wafv2.inputs.WebAclLoggingConfigurationRedactedFieldMethodArgs;
import com.pulumi.aws.wafv2.inputs.WebAclLoggingConfigurationRedactedFieldQueryStringArgs;
import com.pulumi.aws.wafv2.inputs.WebAclLoggingConfigurationRedactedFieldSingleHeaderArgs;
import com.pulumi.aws.wafv2.inputs.WebAclLoggingConfigurationRedactedFieldSingleQueryArgumentArgs;
import com.pulumi.aws.wafv2.inputs.WebAclLoggingConfigurationRedactedFieldUriPathArgs;
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 WebAclLoggingConfigurationRedactedFieldArgs extends com.pulumi.resources.ResourceArgs {

    public static final WebAclLoggingConfigurationRedactedFieldArgs Empty = new WebAclLoggingConfigurationRedactedFieldArgs();

    /**
     * Redact all query arguments.
     * 
     * @deprecated
     * Not supported by WAFv2 API
     * 
     */
    @Deprecated /* Not supported by WAFv2 API */
    @Import(name="allQueryArguments")
    private @Nullable Output<WebAclLoggingConfigurationRedactedFieldAllQueryArgumentsArgs> allQueryArguments;

    /**
     * @return Redact all query arguments.
     * 
     * @deprecated
     * Not supported by WAFv2 API
     * 
     */
    @Deprecated /* Not supported by WAFv2 API */
    public Optional<Output<WebAclLoggingConfigurationRedactedFieldAllQueryArgumentsArgs>> allQueryArguments() {
        return Optional.ofNullable(this.allQueryArguments);
    }

    /**
     * Redact the request body, which immediately follows the request headers.
     * 
     * @deprecated
     * Not supported by WAFv2 API
     * 
     */
    @Deprecated /* Not supported by WAFv2 API */
    @Import(name="body")
    private @Nullable Output<WebAclLoggingConfigurationRedactedFieldBodyArgs> body;

    /**
     * @return Redact the request body, which immediately follows the request headers.
     * 
     * @deprecated
     * Not supported by WAFv2 API
     * 
     */
    @Deprecated /* Not supported by WAFv2 API */
    public Optional<Output<WebAclLoggingConfigurationRedactedFieldBodyArgs>> body() {
        return Optional.ofNullable(this.body);
    }

    /**
     * Redact the HTTP method. Must be specified as an empty configuration block `{}`. The method indicates the type of operation that the request is asking the origin to perform.
     * 
     */
    @Import(name="method")
    private @Nullable Output<WebAclLoggingConfigurationRedactedFieldMethodArgs> method;

    /**
     * @return Redact the HTTP method. Must be specified as an empty configuration block `{}`. The method indicates the type of operation that the request is asking the origin to perform.
     * 
     */
    public Optional<Output<WebAclLoggingConfigurationRedactedFieldMethodArgs>> method() {
        return Optional.ofNullable(this.method);
    }

    /**
     * Redact the query string. Must be specified as an empty configuration block `{}`. This is the part of a URL that appears after a `?` character, if any.
     * 
     */
    @Import(name="queryString")
    private @Nullable Output<WebAclLoggingConfigurationRedactedFieldQueryStringArgs> queryString;

    /**
     * @return Redact the query string. Must be specified as an empty configuration block `{}`. This is the part of a URL that appears after a `?` character, if any.
     * 
     */
    public Optional<Output<WebAclLoggingConfigurationRedactedFieldQueryStringArgs>> queryString() {
        return Optional.ofNullable(this.queryString);
    }

    /**
     * Redact a single header. See Single Header below for details.
     * 
     */
    @Import(name="singleHeader")
    private @Nullable Output<WebAclLoggingConfigurationRedactedFieldSingleHeaderArgs> singleHeader;

    /**
     * @return Redact a single header. See Single Header below for details.
     * 
     */
    public Optional<Output<WebAclLoggingConfigurationRedactedFieldSingleHeaderArgs>> singleHeader() {
        return Optional.ofNullable(this.singleHeader);
    }

    /**
     * Redact a single query argument. See Single Query Argument below for details.
     * 
     * @deprecated
     * Not supported by WAFv2 API
     * 
     */
    @Deprecated /* Not supported by WAFv2 API */
    @Import(name="singleQueryArgument")
    private @Nullable Output<WebAclLoggingConfigurationRedactedFieldSingleQueryArgumentArgs> singleQueryArgument;

    /**
     * @return Redact a single query argument. See Single Query Argument below for details.
     * 
     * @deprecated
     * Not supported by WAFv2 API
     * 
     */
    @Deprecated /* Not supported by WAFv2 API */
    public Optional<Output<WebAclLoggingConfigurationRedactedFieldSingleQueryArgumentArgs>> singleQueryArgument() {
        return Optional.ofNullable(this.singleQueryArgument);
    }

    /**
     * Redact the request URI path. Must be specified as an empty configuration block `{}`. This is the part of a web request that identifies a resource, for example, `/images/daily-ad.jpg`.
     * 
     */
    @Import(name="uriPath")
    private @Nullable Output<WebAclLoggingConfigurationRedactedFieldUriPathArgs> uriPath;

    /**
     * @return Redact the request URI path. Must be specified as an empty configuration block `{}`. This is the part of a web request that identifies a resource, for example, `/images/daily-ad.jpg`.
     * 
     */
    public Optional<Output<WebAclLoggingConfigurationRedactedFieldUriPathArgs>> uriPath() {
        return Optional.ofNullable(this.uriPath);
    }

    private WebAclLoggingConfigurationRedactedFieldArgs() {}

    private WebAclLoggingConfigurationRedactedFieldArgs(WebAclLoggingConfigurationRedactedFieldArgs $) {
        this.allQueryArguments = $.allQueryArguments;
        this.body = $.body;
        this.method = $.method;
        this.queryString = $.queryString;
        this.singleHeader = $.singleHeader;
        this.singleQueryArgument = $.singleQueryArgument;
        this.uriPath = $.uriPath;
    }

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

    public static final class Builder {
        private WebAclLoggingConfigurationRedactedFieldArgs $;

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

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

        /**
         * @param allQueryArguments Redact all query arguments.
         * 
         * @return builder
         * 
         * @deprecated
         * Not supported by WAFv2 API
         * 
         */
        @Deprecated /* Not supported by WAFv2 API */
        public Builder allQueryArguments(@Nullable Output<WebAclLoggingConfigurationRedactedFieldAllQueryArgumentsArgs> allQueryArguments) {
            $.allQueryArguments = allQueryArguments;
            return this;
        }

        /**
         * @param allQueryArguments Redact all query arguments.
         * 
         * @return builder
         * 
         * @deprecated
         * Not supported by WAFv2 API
         * 
         */
        @Deprecated /* Not supported by WAFv2 API */
        public Builder allQueryArguments(WebAclLoggingConfigurationRedactedFieldAllQueryArgumentsArgs allQueryArguments) {
            return allQueryArguments(Output.of(allQueryArguments));
        }

        /**
         * @param body Redact the request body, which immediately follows the request headers.
         * 
         * @return builder
         * 
         * @deprecated
         * Not supported by WAFv2 API
         * 
         */
        @Deprecated /* Not supported by WAFv2 API */
        public Builder body(@Nullable Output<WebAclLoggingConfigurationRedactedFieldBodyArgs> body) {
            $.body = body;
            return this;
        }

        /**
         * @param body Redact the request body, which immediately follows the request headers.
         * 
         * @return builder
         * 
         * @deprecated
         * Not supported by WAFv2 API
         * 
         */
        @Deprecated /* Not supported by WAFv2 API */
        public Builder body(WebAclLoggingConfigurationRedactedFieldBodyArgs body) {
            return body(Output.of(body));
        }

        /**
         * @param method Redact the HTTP method. Must be specified as an empty configuration block `{}`. The method indicates the type of operation that the request is asking the origin to perform.
         * 
         * @return builder
         * 
         */
        public Builder method(@Nullable Output<WebAclLoggingConfigurationRedactedFieldMethodArgs> method) {
            $.method = method;
            return this;
        }

        /**
         * @param method Redact the HTTP method. Must be specified as an empty configuration block `{}`. The method indicates the type of operation that the request is asking the origin to perform.
         * 
         * @return builder
         * 
         */
        public Builder method(WebAclLoggingConfigurationRedactedFieldMethodArgs method) {
            return method(Output.of(method));
        }

        /**
         * @param queryString Redact the query string. Must be specified as an empty configuration block `{}`. This is the part of a URL that appears after a `?` character, if any.
         * 
         * @return builder
         * 
         */
        public Builder queryString(@Nullable Output<WebAclLoggingConfigurationRedactedFieldQueryStringArgs> queryString) {
            $.queryString = queryString;
            return this;
        }

        /**
         * @param queryString Redact the query string. Must be specified as an empty configuration block `{}`. This is the part of a URL that appears after a `?` character, if any.
         * 
         * @return builder
         * 
         */
        public Builder queryString(WebAclLoggingConfigurationRedactedFieldQueryStringArgs queryString) {
            return queryString(Output.of(queryString));
        }

        /**
         * @param singleHeader Redact a single header. See Single Header below for details.
         * 
         * @return builder
         * 
         */
        public Builder singleHeader(@Nullable Output<WebAclLoggingConfigurationRedactedFieldSingleHeaderArgs> singleHeader) {
            $.singleHeader = singleHeader;
            return this;
        }

        /**
         * @param singleHeader Redact a single header. See Single Header below for details.
         * 
         * @return builder
         * 
         */
        public Builder singleHeader(WebAclLoggingConfigurationRedactedFieldSingleHeaderArgs singleHeader) {
            return singleHeader(Output.of(singleHeader));
        }

        /**
         * @param singleQueryArgument Redact a single query argument. See Single Query Argument below for details.
         * 
         * @return builder
         * 
         * @deprecated
         * Not supported by WAFv2 API
         * 
         */
        @Deprecated /* Not supported by WAFv2 API */
        public Builder singleQueryArgument(@Nullable Output<WebAclLoggingConfigurationRedactedFieldSingleQueryArgumentArgs> singleQueryArgument) {
            $.singleQueryArgument = singleQueryArgument;
            return this;
        }

        /**
         * @param singleQueryArgument Redact a single query argument. See Single Query Argument below for details.
         * 
         * @return builder
         * 
         * @deprecated
         * Not supported by WAFv2 API
         * 
         */
        @Deprecated /* Not supported by WAFv2 API */
        public Builder singleQueryArgument(WebAclLoggingConfigurationRedactedFieldSingleQueryArgumentArgs singleQueryArgument) {
            return singleQueryArgument(Output.of(singleQueryArgument));
        }

        /**
         * @param uriPath Redact the request URI path. Must be specified as an empty configuration block `{}`. This is the part of a web request that identifies a resource, for example, `/images/daily-ad.jpg`.
         * 
         * @return builder
         * 
         */
        public Builder uriPath(@Nullable Output<WebAclLoggingConfigurationRedactedFieldUriPathArgs> uriPath) {
            $.uriPath = uriPath;
            return this;
        }

        /**
         * @param uriPath Redact the request URI path. Must be specified as an empty configuration block `{}`. This is the part of a web request that identifies a resource, for example, `/images/daily-ad.jpg`.
         * 
         * @return builder
         * 
         */
        public Builder uriPath(WebAclLoggingConfigurationRedactedFieldUriPathArgs uriPath) {
            return uriPath(Output.of(uriPath));
        }

        public WebAclLoggingConfigurationRedactedFieldArgs build() {
            return $;
        }
    }

}
