// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.security.models;

import com.azure.resourcemanager.security.fluent.models.IoTSecurityAggregatedAlertInner;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/** An immutable client-side representation of IoTSecurityAggregatedAlert. */
public interface IoTSecurityAggregatedAlert {
    /**
     * Gets the id property: Fully qualified resource Id for the resource.
     *
     * @return the id value.
     */
    String id();

    /**
     * Gets the name property: The name of the resource.
     *
     * @return the name value.
     */
    String name();

    /**
     * Gets the type property: The type of the resource.
     *
     * @return the type value.
     */
    String type();

    /**
     * Gets the tags property: Resource tags.
     *
     * @return the tags value.
     */
    Map<String, String> tags();

    /**
     * Gets the alertType property: Name of the alert type.
     *
     * @return the alertType value.
     */
    String alertType();

    /**
     * Gets the alertDisplayName property: Display name of the alert type.
     *
     * @return the alertDisplayName value.
     */
    String alertDisplayName();

    /**
     * Gets the aggregatedDateUtc property: Date of detection.
     *
     * @return the aggregatedDateUtc value.
     */
    LocalDate aggregatedDateUtc();

    /**
     * Gets the vendorName property: Name of the organization that raised the alert.
     *
     * @return the vendorName value.
     */
    String vendorName();

    /**
     * Gets the reportedSeverity property: Assessed alert severity.
     *
     * @return the reportedSeverity value.
     */
    ReportedSeverity reportedSeverity();

    /**
     * Gets the remediationSteps property: Recommended steps for remediation.
     *
     * @return the remediationSteps value.
     */
    String remediationSteps();

    /**
     * Gets the description property: Description of the suspected vulnerability and meaning.
     *
     * @return the description value.
     */
    String description();

    /**
     * Gets the count property: Number of alerts occurrences within the aggregated time window.
     *
     * @return the count value.
     */
    Long count();

    /**
     * Gets the effectedResourceType property: Azure resource ID of the resource that received the alerts.
     *
     * @return the effectedResourceType value.
     */
    String effectedResourceType();

    /**
     * Gets the systemSource property: The type of the alerted resource (Azure, Non-Azure).
     *
     * @return the systemSource value.
     */
    String systemSource();

    /**
     * Gets the actionTaken property: IoT Security solution alert response.
     *
     * @return the actionTaken value.
     */
    String actionTaken();

    /**
     * Gets the logAnalyticsQuery property: Log analytics query for getting the list of affected devices/alerts.
     *
     * @return the logAnalyticsQuery value.
     */
    String logAnalyticsQuery();

    /**
     * Gets the topDevicesList property: 10 devices with the highest number of occurrences of this alert type, on this
     * day.
     *
     * @return the topDevicesList value.
     */
    List<IoTSecurityAggregatedAlertPropertiesTopDevicesListItem> topDevicesList();

    /**
     * Gets the inner com.azure.resourcemanager.security.fluent.models.IoTSecurityAggregatedAlertInner object.
     *
     * @return the inner object.
     */
    IoTSecurityAggregatedAlertInner innerModel();
}
