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

import com.pulumi.aws.wafv2.outputs.WebAclLoggingConfigurationRedactedFieldAllQueryArguments;
import com.pulumi.aws.wafv2.outputs.WebAclLoggingConfigurationRedactedFieldBody;
import com.pulumi.aws.wafv2.outputs.WebAclLoggingConfigurationRedactedFieldMethod;
import com.pulumi.aws.wafv2.outputs.WebAclLoggingConfigurationRedactedFieldQueryString;
import com.pulumi.aws.wafv2.outputs.WebAclLoggingConfigurationRedactedFieldSingleHeader;
import com.pulumi.aws.wafv2.outputs.WebAclLoggingConfigurationRedactedFieldSingleQueryArgument;
import com.pulumi.aws.wafv2.outputs.WebAclLoggingConfigurationRedactedFieldUriPath;
import com.pulumi.core.annotations.CustomType;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;

@CustomType
public final class WebAclLoggingConfigurationRedactedField {
    /**
     * @return Redact all query arguments.
     * 
     * @deprecated
     * Not supported by WAFv2 API
     * 
     */
    @Deprecated /* Not supported by WAFv2 API */
    private @Nullable WebAclLoggingConfigurationRedactedFieldAllQueryArguments allQueryArguments;
    /**
     * @return Redact the request body, which immediately follows the request headers.
     * 
     * @deprecated
     * Not supported by WAFv2 API
     * 
     */
    @Deprecated /* Not supported by WAFv2 API */
    private @Nullable WebAclLoggingConfigurationRedactedFieldBody body;
    /**
     * @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.
     * 
     */
    private @Nullable WebAclLoggingConfigurationRedactedFieldMethod method;
    /**
     * @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.
     * 
     */
    private @Nullable WebAclLoggingConfigurationRedactedFieldQueryString queryString;
    /**
     * @return Redact a single header. See Single Header below for details.
     * 
     */
    private @Nullable WebAclLoggingConfigurationRedactedFieldSingleHeader singleHeader;
    /**
     * @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 */
    private @Nullable WebAclLoggingConfigurationRedactedFieldSingleQueryArgument singleQueryArgument;
    /**
     * @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`.
     * 
     */
    private @Nullable WebAclLoggingConfigurationRedactedFieldUriPath uriPath;

    private WebAclLoggingConfigurationRedactedField() {}
    /**
     * @return Redact all query arguments.
     * 
     * @deprecated
     * Not supported by WAFv2 API
     * 
     */
    @Deprecated /* Not supported by WAFv2 API */
    public Optional<WebAclLoggingConfigurationRedactedFieldAllQueryArguments> allQueryArguments() {
        return Optional.ofNullable(this.allQueryArguments);
    }
    /**
     * @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<WebAclLoggingConfigurationRedactedFieldBody> body() {
        return Optional.ofNullable(this.body);
    }
    /**
     * @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<WebAclLoggingConfigurationRedactedFieldMethod> method() {
        return Optional.ofNullable(this.method);
    }
    /**
     * @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<WebAclLoggingConfigurationRedactedFieldQueryString> queryString() {
        return Optional.ofNullable(this.queryString);
    }
    /**
     * @return Redact a single header. See Single Header below for details.
     * 
     */
    public Optional<WebAclLoggingConfigurationRedactedFieldSingleHeader> singleHeader() {
        return Optional.ofNullable(this.singleHeader);
    }
    /**
     * @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<WebAclLoggingConfigurationRedactedFieldSingleQueryArgument> singleQueryArgument() {
        return Optional.ofNullable(this.singleQueryArgument);
    }
    /**
     * @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<WebAclLoggingConfigurationRedactedFieldUriPath> uriPath() {
        return Optional.ofNullable(this.uriPath);
    }

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

    public static Builder builder(WebAclLoggingConfigurationRedactedField defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private @Nullable WebAclLoggingConfigurationRedactedFieldAllQueryArguments allQueryArguments;
        private @Nullable WebAclLoggingConfigurationRedactedFieldBody body;
        private @Nullable WebAclLoggingConfigurationRedactedFieldMethod method;
        private @Nullable WebAclLoggingConfigurationRedactedFieldQueryString queryString;
        private @Nullable WebAclLoggingConfigurationRedactedFieldSingleHeader singleHeader;
        private @Nullable WebAclLoggingConfigurationRedactedFieldSingleQueryArgument singleQueryArgument;
        private @Nullable WebAclLoggingConfigurationRedactedFieldUriPath uriPath;
        public Builder() {}
        public Builder(WebAclLoggingConfigurationRedactedField defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.allQueryArguments = defaults.allQueryArguments;
    	      this.body = defaults.body;
    	      this.method = defaults.method;
    	      this.queryString = defaults.queryString;
    	      this.singleHeader = defaults.singleHeader;
    	      this.singleQueryArgument = defaults.singleQueryArgument;
    	      this.uriPath = defaults.uriPath;
        }

        @CustomType.Setter
        public Builder allQueryArguments(@Nullable WebAclLoggingConfigurationRedactedFieldAllQueryArguments allQueryArguments) {
            this.allQueryArguments = allQueryArguments;
            return this;
        }
        @CustomType.Setter
        public Builder body(@Nullable WebAclLoggingConfigurationRedactedFieldBody body) {
            this.body = body;
            return this;
        }
        @CustomType.Setter
        public Builder method(@Nullable WebAclLoggingConfigurationRedactedFieldMethod method) {
            this.method = method;
            return this;
        }
        @CustomType.Setter
        public Builder queryString(@Nullable WebAclLoggingConfigurationRedactedFieldQueryString queryString) {
            this.queryString = queryString;
            return this;
        }
        @CustomType.Setter
        public Builder singleHeader(@Nullable WebAclLoggingConfigurationRedactedFieldSingleHeader singleHeader) {
            this.singleHeader = singleHeader;
            return this;
        }
        @CustomType.Setter
        public Builder singleQueryArgument(@Nullable WebAclLoggingConfigurationRedactedFieldSingleQueryArgument singleQueryArgument) {
            this.singleQueryArgument = singleQueryArgument;
            return this;
        }
        @CustomType.Setter
        public Builder uriPath(@Nullable WebAclLoggingConfigurationRedactedFieldUriPath uriPath) {
            this.uriPath = uriPath;
            return this;
        }
        public WebAclLoggingConfigurationRedactedField build() {
            final var o = new WebAclLoggingConfigurationRedactedField();
            o.allQueryArguments = allQueryArguments;
            o.body = body;
            o.method = method;
            o.queryString = queryString;
            o.singleHeader = singleHeader;
            o.singleQueryArgument = singleQueryArgument;
            o.uriPath = uriPath;
            return o;
        }
    }
}
