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

import com.pulumi.azure.monitoring.inputs.ScheduledQueryRulesLogCriteriaDimensionArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.List;
import java.util.Objects;


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

    public static final ScheduledQueryRulesLogCriteriaArgs Empty = new ScheduledQueryRulesLogCriteriaArgs();

    /**
     * A `dimension` block as defined below.
     * 
     */
    @Import(name="dimensions", required=true)
    private Output<List<ScheduledQueryRulesLogCriteriaDimensionArgs>> dimensions;

    /**
     * @return A `dimension` block as defined below.
     * 
     */
    public Output<List<ScheduledQueryRulesLogCriteriaDimensionArgs>> dimensions() {
        return this.dimensions;
    }

    /**
     * Name of the metric. Supported metrics are listed in the Azure Monitor [Microsoft.OperationalInsights/workspaces](https://docs.microsoft.com/azure/azure-monitor/platform/metrics-supported#microsoftoperationalinsightsworkspaces) metrics namespace.
     * 
     */
    @Import(name="metricName", required=true)
    private Output<String> metricName;

    /**
     * @return Name of the metric. Supported metrics are listed in the Azure Monitor [Microsoft.OperationalInsights/workspaces](https://docs.microsoft.com/azure/azure-monitor/platform/metrics-supported#microsoftoperationalinsightsworkspaces) metrics namespace.
     * 
     */
    public Output<String> metricName() {
        return this.metricName;
    }

    private ScheduledQueryRulesLogCriteriaArgs() {}

    private ScheduledQueryRulesLogCriteriaArgs(ScheduledQueryRulesLogCriteriaArgs $) {
        this.dimensions = $.dimensions;
        this.metricName = $.metricName;
    }

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

    public static final class Builder {
        private ScheduledQueryRulesLogCriteriaArgs $;

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

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

        /**
         * @param dimensions A `dimension` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder dimensions(Output<List<ScheduledQueryRulesLogCriteriaDimensionArgs>> dimensions) {
            $.dimensions = dimensions;
            return this;
        }

        /**
         * @param dimensions A `dimension` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder dimensions(List<ScheduledQueryRulesLogCriteriaDimensionArgs> dimensions) {
            return dimensions(Output.of(dimensions));
        }

        /**
         * @param dimensions A `dimension` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder dimensions(ScheduledQueryRulesLogCriteriaDimensionArgs... dimensions) {
            return dimensions(List.of(dimensions));
        }

        /**
         * @param metricName Name of the metric. Supported metrics are listed in the Azure Monitor [Microsoft.OperationalInsights/workspaces](https://docs.microsoft.com/azure/azure-monitor/platform/metrics-supported#microsoftoperationalinsightsworkspaces) metrics namespace.
         * 
         * @return builder
         * 
         */
        public Builder metricName(Output<String> metricName) {
            $.metricName = metricName;
            return this;
        }

        /**
         * @param metricName Name of the metric. Supported metrics are listed in the Azure Monitor [Microsoft.OperationalInsights/workspaces](https://docs.microsoft.com/azure/azure-monitor/platform/metrics-supported#microsoftoperationalinsightsworkspaces) metrics namespace.
         * 
         * @return builder
         * 
         */
        public Builder metricName(String metricName) {
            return metricName(Output.of(metricName));
        }

        public ScheduledQueryRulesLogCriteriaArgs build() {
            $.dimensions = Objects.requireNonNull($.dimensions, "expected parameter 'dimensions' to be non-null");
            $.metricName = Objects.requireNonNull($.metricName, "expected parameter 'metricName' to be non-null");
            return $;
        }
    }

}
