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

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final AutomationRuleActionIncidentArgs Empty = new AutomationRuleActionIncidentArgs();

    /**
     * The classification of the incident, when closing it. Possible values are: `BenignPositive_SuspiciousButExpected`, `FalsePositive_InaccurateData`, `FalsePositive_IncorrectAlertLogic`, `TruePositive_SuspiciousActivity` and `Undetermined`.
     * 
     * &gt; **Note:** The `classification` is required when `status` is `Closed`.
     * 
     */
    @Import(name="classification")
    private @Nullable Output<String> classification;

    /**
     * @return The classification of the incident, when closing it. Possible values are: `BenignPositive_SuspiciousButExpected`, `FalsePositive_InaccurateData`, `FalsePositive_IncorrectAlertLogic`, `TruePositive_SuspiciousActivity` and `Undetermined`.
     * 
     * &gt; **Note:** The `classification` is required when `status` is `Closed`.
     * 
     */
    public Optional<Output<String>> classification() {
        return Optional.ofNullable(this.classification);
    }

    /**
     * The comment why the incident is to be closed.
     * 
     * &gt; **Note:** The `classification_comment` is allowed to set only when `status` is `Closed`.
     * 
     */
    @Import(name="classificationComment")
    private @Nullable Output<String> classificationComment;

    /**
     * @return The comment why the incident is to be closed.
     * 
     * &gt; **Note:** The `classification_comment` is allowed to set only when `status` is `Closed`.
     * 
     */
    public Optional<Output<String>> classificationComment() {
        return Optional.ofNullable(this.classificationComment);
    }

    /**
     * Specifies a list of labels to add to the incident.
     * 
     */
    @Import(name="labels")
    private @Nullable Output<List<String>> labels;

    /**
     * @return Specifies a list of labels to add to the incident.
     * 
     */
    public Optional<Output<List<String>>> labels() {
        return Optional.ofNullable(this.labels);
    }

    /**
     * The execution order of this action.
     * 
     */
    @Import(name="order", required=true)
    private Output<Integer> order;

    /**
     * @return The execution order of this action.
     * 
     */
    public Output<Integer> order() {
        return this.order;
    }

    /**
     * The object ID of the entity this incident is assigned to.
     * 
     */
    @Import(name="ownerId")
    private @Nullable Output<String> ownerId;

    /**
     * @return The object ID of the entity this incident is assigned to.
     * 
     */
    public Optional<Output<String>> ownerId() {
        return Optional.ofNullable(this.ownerId);
    }

    /**
     * The severity to add to the incident. Possible values are `High`, `Informational`, `Low` and `Medium`.
     * 
     * &gt; **Note:**: At least one of `status`, `labels`, `owner_id` and `severity` has to be set.
     * 
     */
    @Import(name="severity")
    private @Nullable Output<String> severity;

    /**
     * @return The severity to add to the incident. Possible values are `High`, `Informational`, `Low` and `Medium`.
     * 
     * &gt; **Note:**: At least one of `status`, `labels`, `owner_id` and `severity` has to be set.
     * 
     */
    public Optional<Output<String>> severity() {
        return Optional.ofNullable(this.severity);
    }

    /**
     * The status to set to the incident. Possible values are: `Active`, `Closed`, `New`.
     * 
     */
    @Import(name="status")
    private @Nullable Output<String> status;

    /**
     * @return The status to set to the incident. Possible values are: `Active`, `Closed`, `New`.
     * 
     */
    public Optional<Output<String>> status() {
        return Optional.ofNullable(this.status);
    }

    private AutomationRuleActionIncidentArgs() {}

    private AutomationRuleActionIncidentArgs(AutomationRuleActionIncidentArgs $) {
        this.classification = $.classification;
        this.classificationComment = $.classificationComment;
        this.labels = $.labels;
        this.order = $.order;
        this.ownerId = $.ownerId;
        this.severity = $.severity;
        this.status = $.status;
    }

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

    public static final class Builder {
        private AutomationRuleActionIncidentArgs $;

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

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

        /**
         * @param classification The classification of the incident, when closing it. Possible values are: `BenignPositive_SuspiciousButExpected`, `FalsePositive_InaccurateData`, `FalsePositive_IncorrectAlertLogic`, `TruePositive_SuspiciousActivity` and `Undetermined`.
         * 
         * &gt; **Note:** The `classification` is required when `status` is `Closed`.
         * 
         * @return builder
         * 
         */
        public Builder classification(@Nullable Output<String> classification) {
            $.classification = classification;
            return this;
        }

        /**
         * @param classification The classification of the incident, when closing it. Possible values are: `BenignPositive_SuspiciousButExpected`, `FalsePositive_InaccurateData`, `FalsePositive_IncorrectAlertLogic`, `TruePositive_SuspiciousActivity` and `Undetermined`.
         * 
         * &gt; **Note:** The `classification` is required when `status` is `Closed`.
         * 
         * @return builder
         * 
         */
        public Builder classification(String classification) {
            return classification(Output.of(classification));
        }

        /**
         * @param classificationComment The comment why the incident is to be closed.
         * 
         * &gt; **Note:** The `classification_comment` is allowed to set only when `status` is `Closed`.
         * 
         * @return builder
         * 
         */
        public Builder classificationComment(@Nullable Output<String> classificationComment) {
            $.classificationComment = classificationComment;
            return this;
        }

        /**
         * @param classificationComment The comment why the incident is to be closed.
         * 
         * &gt; **Note:** The `classification_comment` is allowed to set only when `status` is `Closed`.
         * 
         * @return builder
         * 
         */
        public Builder classificationComment(String classificationComment) {
            return classificationComment(Output.of(classificationComment));
        }

        /**
         * @param labels Specifies a list of labels to add to the incident.
         * 
         * @return builder
         * 
         */
        public Builder labels(@Nullable Output<List<String>> labels) {
            $.labels = labels;
            return this;
        }

        /**
         * @param labels Specifies a list of labels to add to the incident.
         * 
         * @return builder
         * 
         */
        public Builder labels(List<String> labels) {
            return labels(Output.of(labels));
        }

        /**
         * @param labels Specifies a list of labels to add to the incident.
         * 
         * @return builder
         * 
         */
        public Builder labels(String... labels) {
            return labels(List.of(labels));
        }

        /**
         * @param order The execution order of this action.
         * 
         * @return builder
         * 
         */
        public Builder order(Output<Integer> order) {
            $.order = order;
            return this;
        }

        /**
         * @param order The execution order of this action.
         * 
         * @return builder
         * 
         */
        public Builder order(Integer order) {
            return order(Output.of(order));
        }

        /**
         * @param ownerId The object ID of the entity this incident is assigned to.
         * 
         * @return builder
         * 
         */
        public Builder ownerId(@Nullable Output<String> ownerId) {
            $.ownerId = ownerId;
            return this;
        }

        /**
         * @param ownerId The object ID of the entity this incident is assigned to.
         * 
         * @return builder
         * 
         */
        public Builder ownerId(String ownerId) {
            return ownerId(Output.of(ownerId));
        }

        /**
         * @param severity The severity to add to the incident. Possible values are `High`, `Informational`, `Low` and `Medium`.
         * 
         * &gt; **Note:**: At least one of `status`, `labels`, `owner_id` and `severity` has to be set.
         * 
         * @return builder
         * 
         */
        public Builder severity(@Nullable Output<String> severity) {
            $.severity = severity;
            return this;
        }

        /**
         * @param severity The severity to add to the incident. Possible values are `High`, `Informational`, `Low` and `Medium`.
         * 
         * &gt; **Note:**: At least one of `status`, `labels`, `owner_id` and `severity` has to be set.
         * 
         * @return builder
         * 
         */
        public Builder severity(String severity) {
            return severity(Output.of(severity));
        }

        /**
         * @param status The status to set to the incident. Possible values are: `Active`, `Closed`, `New`.
         * 
         * @return builder
         * 
         */
        public Builder status(@Nullable Output<String> status) {
            $.status = status;
            return this;
        }

        /**
         * @param status The status to set to the incident. Possible values are: `Active`, `Closed`, `New`.
         * 
         * @return builder
         * 
         */
        public Builder status(String status) {
            return status(Output.of(status));
        }

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

}
