// *** 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.WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSetRequestInspection;
import com.pulumi.aws.wafv2.outputs.WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSetResponseInspection;
import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;

@CustomType
public final class WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSet {
    /**
     * @return The path of the login endpoint for your application.
     * 
     */
    private String loginPath;
    /**
     * @return The criteria for inspecting login requests, used by the ATP rule group to validate credentials usage. See `request_inspection` for more details.
     * 
     */
    private @Nullable WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSetRequestInspection requestInspection;
    /**
     * @return The criteria for inspecting responses to login requests, used by the ATP rule group to track login failure rates. Note that Response Inspection is available only on web ACLs that protect CloudFront distributions. See `response_inspection` for more details.
     * 
     */
    private @Nullable WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSetResponseInspection responseInspection;

    private WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSet() {}
    /**
     * @return The path of the login endpoint for your application.
     * 
     */
    public String loginPath() {
        return this.loginPath;
    }
    /**
     * @return The criteria for inspecting login requests, used by the ATP rule group to validate credentials usage. See `request_inspection` for more details.
     * 
     */
    public Optional<WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSetRequestInspection> requestInspection() {
        return Optional.ofNullable(this.requestInspection);
    }
    /**
     * @return The criteria for inspecting responses to login requests, used by the ATP rule group to track login failure rates. Note that Response Inspection is available only on web ACLs that protect CloudFront distributions. See `response_inspection` for more details.
     * 
     */
    public Optional<WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSetResponseInspection> responseInspection() {
        return Optional.ofNullable(this.responseInspection);
    }

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

    public static Builder builder(WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSet defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String loginPath;
        private @Nullable WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSetRequestInspection requestInspection;
        private @Nullable WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSetResponseInspection responseInspection;
        public Builder() {}
        public Builder(WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSet defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.loginPath = defaults.loginPath;
    	      this.requestInspection = defaults.requestInspection;
    	      this.responseInspection = defaults.responseInspection;
        }

        @CustomType.Setter
        public Builder loginPath(String loginPath) {
            this.loginPath = Objects.requireNonNull(loginPath);
            return this;
        }
        @CustomType.Setter
        public Builder requestInspection(@Nullable WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSetRequestInspection requestInspection) {
            this.requestInspection = requestInspection;
            return this;
        }
        @CustomType.Setter
        public Builder responseInspection(@Nullable WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSetResponseInspection responseInspection) {
            this.responseInspection = responseInspection;
            return this;
        }
        public WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSet build() {
            final var o = new WebAclRuleStatementManagedRuleGroupStatementManagedRuleGroupConfigAwsManagedRulesAtpRuleSet();
            o.loginPath = loginPath;
            o.requestInspection = requestInspection;
            o.responseInspection = responseInspection;
            return o;
        }
    }
}
