require 'date'
require 'microsoft_kiota_abstractions'
require_relative '../microsoft_graph'
require_relative './models'

module MicrosoftGraph
    module Models
        class Alert < MicrosoftGraph::Models::Entity
            include MicrosoftKiotaAbstractions::Parsable
            ## 
            # Name or alias of the activity group (attacker) this alert is attributed to.
            @activity_group_name
            ## 
            # The alertDetections property
            @alert_detections
            ## 
            # Name of the analyst the alert is assigned to for triage, investigation, or remediation (supports update).
            @assigned_to
            ## 
            # Azure subscription ID, present if this alert is related to an Azure resource.
            @azure_subscription_id
            ## 
            # Azure Active Directory tenant ID. Required.
            @azure_tenant_id
            ## 
            # Category of the alert (for example, credentialTheft, ransomware, etc.).
            @category
            ## 
            # Time at which the alert was closed. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z (supports update).
            @closed_date_time
            ## 
            # Security-related stateful information generated by the provider about the cloud application/s related to this alert.
            @cloud_app_states
            ## 
            # Customer-provided comments on alert (for customer alert management) (supports update).
            @comments
            ## 
            # Confidence of the detection logic (percentage between 1-100).
            @confidence
            ## 
            # Time at which the alert was created by the alert provider. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Required.
            @created_date_time
            ## 
            # Alert description.
            @description
            ## 
            # Set of alerts related to this alert entity (each alert is pushed to the SIEM as a separate record).
            @detection_ids
            ## 
            # Time at which the event(s) that served as the trigger(s) to generate the alert occurred. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Required.
            @event_date_time
            ## 
            # Analyst feedback on the alert. Possible values are: unknown, truePositive, falsePositive, benignPositive. (supports update)
            @feedback
            ## 
            # Security-related stateful information generated by the provider about the file(s) related to this alert.
            @file_states
            ## 
            # The historyStates property
            @history_states
            ## 
            # Security-related stateful information generated by the provider about the host(s) related to this alert.
            @host_states
            ## 
            # IDs of incidents related to current alert.
            @incident_ids
            ## 
            # The investigationSecurityStates property
            @investigation_security_states
            ## 
            # The lastEventDateTime property
            @last_event_date_time
            ## 
            # Time at which the alert entity was last modified. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
            @last_modified_date_time
            ## 
            # Threat Intelligence pertaining to malware related to this alert.
            @malware_states
            ## 
            # The messageSecurityStates property
            @message_security_states
            ## 
            # Security-related stateful information generated by the provider about the network connection(s) related to this alert.
            @network_connections
            ## 
            # Security-related stateful information generated by the provider about the process or processes related to this alert.
            @processes
            ## 
            # Vendor/provider recommended action(s) to take as a result of the alert (for example, isolate machine, enforce2FA, reimage host).
            @recommended_actions
            ## 
            # Security-related stateful information generated by the provider about the registry keys related to this alert.
            @registry_key_states
            ## 
            # Resources related to current alert. For example, for some alerts this can have the Azure Resource value.
            @security_resources
            ## 
            # The severity property
            @severity
            ## 
            # Hyperlinks (URIs) to the source material related to the alert, for example, provider's user interface for alerts or log search, etc.
            @source_materials
            ## 
            # The status property
            @status
            ## 
            # User-definable labels that can be applied to an alert and can serve as filter conditions (for example 'HVA', 'SAW', etc.) (supports update).
            @tags
            ## 
            # Alert title. Required.
            @title
            ## 
            # Security-related information about the specific properties that triggered the alert (properties appearing in the alert). Alerts might contain information about multiple users, hosts, files, ip addresses. This field indicates which properties triggered the alert generation.
            @triggers
            ## 
            # The uriClickSecurityStates property
            @uri_click_security_states
            ## 
            # Security-related stateful information generated by the provider about the user accounts related to this alert.
            @user_states
            ## 
            # Complex type containing details about the security product/service vendor, provider, and subprovider (for example, vendor=Microsoft; provider=Windows Defender ATP; subProvider=AppLocker). Required.
            @vendor_information
            ## 
            # Threat intelligence pertaining to one or more vulnerabilities related to this alert.
            @vulnerability_states
            ## 
            ## Gets the activityGroupName property value. Name or alias of the activity group (attacker) this alert is attributed to.
            ## @return a string
            ## 
            def activity_group_name
                return @activity_group_name
            end
            ## 
            ## Sets the activityGroupName property value. Name or alias of the activity group (attacker) this alert is attributed to.
            ## @param value Value to set for the activityGroupName property.
            ## @return a void
            ## 
            def activity_group_name=(value)
                @activity_group_name = value
            end
            ## 
            ## Gets the alertDetections property value. The alertDetections property
            ## @return a alert_detection
            ## 
            def alert_detections
                return @alert_detections
            end
            ## 
            ## Sets the alertDetections property value. The alertDetections property
            ## @param value Value to set for the alertDetections property.
            ## @return a void
            ## 
            def alert_detections=(value)
                @alert_detections = value
            end
            ## 
            ## Gets the assignedTo property value. Name of the analyst the alert is assigned to for triage, investigation, or remediation (supports update).
            ## @return a string
            ## 
            def assigned_to
                return @assigned_to
            end
            ## 
            ## Sets the assignedTo property value. Name of the analyst the alert is assigned to for triage, investigation, or remediation (supports update).
            ## @param value Value to set for the assignedTo property.
            ## @return a void
            ## 
            def assigned_to=(value)
                @assigned_to = value
            end
            ## 
            ## Gets the azureSubscriptionId property value. Azure subscription ID, present if this alert is related to an Azure resource.
            ## @return a string
            ## 
            def azure_subscription_id
                return @azure_subscription_id
            end
            ## 
            ## Sets the azureSubscriptionId property value. Azure subscription ID, present if this alert is related to an Azure resource.
            ## @param value Value to set for the azureSubscriptionId property.
            ## @return a void
            ## 
            def azure_subscription_id=(value)
                @azure_subscription_id = value
            end
            ## 
            ## Gets the azureTenantId property value. Azure Active Directory tenant ID. Required.
            ## @return a string
            ## 
            def azure_tenant_id
                return @azure_tenant_id
            end
            ## 
            ## Sets the azureTenantId property value. Azure Active Directory tenant ID. Required.
            ## @param value Value to set for the azureTenantId property.
            ## @return a void
            ## 
            def azure_tenant_id=(value)
                @azure_tenant_id = value
            end
            ## 
            ## Gets the category property value. Category of the alert (for example, credentialTheft, ransomware, etc.).
            ## @return a string
            ## 
            def category
                return @category
            end
            ## 
            ## Sets the category property value. Category of the alert (for example, credentialTheft, ransomware, etc.).
            ## @param value Value to set for the category property.
            ## @return a void
            ## 
            def category=(value)
                @category = value
            end
            ## 
            ## Gets the closedDateTime property value. Time at which the alert was closed. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z (supports update).
            ## @return a date_time
            ## 
            def closed_date_time
                return @closed_date_time
            end
            ## 
            ## Sets the closedDateTime property value. Time at which the alert was closed. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z (supports update).
            ## @param value Value to set for the closedDateTime property.
            ## @return a void
            ## 
            def closed_date_time=(value)
                @closed_date_time = value
            end
            ## 
            ## Gets the cloudAppStates property value. Security-related stateful information generated by the provider about the cloud application/s related to this alert.
            ## @return a cloud_app_security_state
            ## 
            def cloud_app_states
                return @cloud_app_states
            end
            ## 
            ## Sets the cloudAppStates property value. Security-related stateful information generated by the provider about the cloud application/s related to this alert.
            ## @param value Value to set for the cloudAppStates property.
            ## @return a void
            ## 
            def cloud_app_states=(value)
                @cloud_app_states = value
            end
            ## 
            ## Gets the comments property value. Customer-provided comments on alert (for customer alert management) (supports update).
            ## @return a string
            ## 
            def comments
                return @comments
            end
            ## 
            ## Sets the comments property value. Customer-provided comments on alert (for customer alert management) (supports update).
            ## @param value Value to set for the comments property.
            ## @return a void
            ## 
            def comments=(value)
                @comments = value
            end
            ## 
            ## Gets the confidence property value. Confidence of the detection logic (percentage between 1-100).
            ## @return a integer
            ## 
            def confidence
                return @confidence
            end
            ## 
            ## Sets the confidence property value. Confidence of the detection logic (percentage between 1-100).
            ## @param value Value to set for the confidence property.
            ## @return a void
            ## 
            def confidence=(value)
                @confidence = value
            end
            ## 
            ## Instantiates a new alert and sets the default values.
            ## @return a void
            ## 
            def initialize()
                super
            end
            ## 
            ## Gets the createdDateTime property value. Time at which the alert was created by the alert provider. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Required.
            ## @return a date_time
            ## 
            def created_date_time
                return @created_date_time
            end
            ## 
            ## Sets the createdDateTime property value. Time at which the alert was created by the alert provider. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Required.
            ## @param value Value to set for the createdDateTime property.
            ## @return a void
            ## 
            def created_date_time=(value)
                @created_date_time = value
            end
            ## 
            ## Creates a new instance of the appropriate class based on discriminator value
            ## @param parse_node The parse node to use to read the discriminator value and create the object
            ## @return a alert
            ## 
            def self.create_from_discriminator_value(parse_node)
                raise StandardError, 'parse_node cannot be null' if parse_node.nil?
                return Alert.new
            end
            ## 
            ## Gets the description property value. Alert description.
            ## @return a string
            ## 
            def description
                return @description
            end
            ## 
            ## Sets the description property value. Alert description.
            ## @param value Value to set for the description property.
            ## @return a void
            ## 
            def description=(value)
                @description = value
            end
            ## 
            ## Gets the detectionIds property value. Set of alerts related to this alert entity (each alert is pushed to the SIEM as a separate record).
            ## @return a string
            ## 
            def detection_ids
                return @detection_ids
            end
            ## 
            ## Sets the detectionIds property value. Set of alerts related to this alert entity (each alert is pushed to the SIEM as a separate record).
            ## @param value Value to set for the detectionIds property.
            ## @return a void
            ## 
            def detection_ids=(value)
                @detection_ids = value
            end
            ## 
            ## Gets the eventDateTime property value. Time at which the event(s) that served as the trigger(s) to generate the alert occurred. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Required.
            ## @return a date_time
            ## 
            def event_date_time
                return @event_date_time
            end
            ## 
            ## Sets the eventDateTime property value. Time at which the event(s) that served as the trigger(s) to generate the alert occurred. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Required.
            ## @param value Value to set for the eventDateTime property.
            ## @return a void
            ## 
            def event_date_time=(value)
                @event_date_time = value
            end
            ## 
            ## Gets the feedback property value. Analyst feedback on the alert. Possible values are: unknown, truePositive, falsePositive, benignPositive. (supports update)
            ## @return a alert_feedback
            ## 
            def feedback
                return @feedback
            end
            ## 
            ## Sets the feedback property value. Analyst feedback on the alert. Possible values are: unknown, truePositive, falsePositive, benignPositive. (supports update)
            ## @param value Value to set for the feedback property.
            ## @return a void
            ## 
            def feedback=(value)
                @feedback = value
            end
            ## 
            ## Gets the fileStates property value. Security-related stateful information generated by the provider about the file(s) related to this alert.
            ## @return a file_security_state
            ## 
            def file_states
                return @file_states
            end
            ## 
            ## Sets the fileStates property value. Security-related stateful information generated by the provider about the file(s) related to this alert.
            ## @param value Value to set for the fileStates property.
            ## @return a void
            ## 
            def file_states=(value)
                @file_states = value
            end
            ## 
            ## The deserialization information for the current model
            ## @return a i_dictionary
            ## 
            def get_field_deserializers()
                return super.merge({
                    "activityGroupName" => lambda {|n| @activity_group_name = n.get_string_value() },
                    "alertDetections" => lambda {|n| @alert_detections = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::AlertDetection.create_from_discriminator_value(pn) }) },
                    "assignedTo" => lambda {|n| @assigned_to = n.get_string_value() },
                    "azureSubscriptionId" => lambda {|n| @azure_subscription_id = n.get_string_value() },
                    "azureTenantId" => lambda {|n| @azure_tenant_id = n.get_string_value() },
                    "category" => lambda {|n| @category = n.get_string_value() },
                    "closedDateTime" => lambda {|n| @closed_date_time = n.get_date_time_value() },
                    "cloudAppStates" => lambda {|n| @cloud_app_states = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::CloudAppSecurityState.create_from_discriminator_value(pn) }) },
                    "comments" => lambda {|n| @comments = n.get_collection_of_primitive_values(String) },
                    "confidence" => lambda {|n| @confidence = n.get_number_value() },
                    "createdDateTime" => lambda {|n| @created_date_time = n.get_date_time_value() },
                    "description" => lambda {|n| @description = n.get_string_value() },
                    "detectionIds" => lambda {|n| @detection_ids = n.get_collection_of_primitive_values(String) },
                    "eventDateTime" => lambda {|n| @event_date_time = n.get_date_time_value() },
                    "feedback" => lambda {|n| @feedback = n.get_enum_value(MicrosoftGraph::Models::AlertFeedback) },
                    "fileStates" => lambda {|n| @file_states = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::FileSecurityState.create_from_discriminator_value(pn) }) },
                    "historyStates" => lambda {|n| @history_states = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::AlertHistoryState.create_from_discriminator_value(pn) }) },
                    "hostStates" => lambda {|n| @host_states = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::HostSecurityState.create_from_discriminator_value(pn) }) },
                    "incidentIds" => lambda {|n| @incident_ids = n.get_collection_of_primitive_values(String) },
                    "investigationSecurityStates" => lambda {|n| @investigation_security_states = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::InvestigationSecurityState.create_from_discriminator_value(pn) }) },
                    "lastEventDateTime" => lambda {|n| @last_event_date_time = n.get_date_time_value() },
                    "lastModifiedDateTime" => lambda {|n| @last_modified_date_time = n.get_date_time_value() },
                    "malwareStates" => lambda {|n| @malware_states = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::MalwareState.create_from_discriminator_value(pn) }) },
                    "messageSecurityStates" => lambda {|n| @message_security_states = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::MessageSecurityState.create_from_discriminator_value(pn) }) },
                    "networkConnections" => lambda {|n| @network_connections = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::NetworkConnection.create_from_discriminator_value(pn) }) },
                    "processes" => lambda {|n| @processes = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::Process.create_from_discriminator_value(pn) }) },
                    "recommendedActions" => lambda {|n| @recommended_actions = n.get_collection_of_primitive_values(String) },
                    "registryKeyStates" => lambda {|n| @registry_key_states = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::RegistryKeyState.create_from_discriminator_value(pn) }) },
                    "securityResources" => lambda {|n| @security_resources = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::SecurityResource.create_from_discriminator_value(pn) }) },
                    "severity" => lambda {|n| @severity = n.get_enum_value(MicrosoftGraph::Models::AlertSeverity) },
                    "sourceMaterials" => lambda {|n| @source_materials = n.get_collection_of_primitive_values(String) },
                    "status" => lambda {|n| @status = n.get_enum_value(MicrosoftGraph::Models::AlertStatus) },
                    "tags" => lambda {|n| @tags = n.get_collection_of_primitive_values(String) },
                    "title" => lambda {|n| @title = n.get_string_value() },
                    "triggers" => lambda {|n| @triggers = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::AlertTrigger.create_from_discriminator_value(pn) }) },
                    "uriClickSecurityStates" => lambda {|n| @uri_click_security_states = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::UriClickSecurityState.create_from_discriminator_value(pn) }) },
                    "userStates" => lambda {|n| @user_states = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::UserSecurityState.create_from_discriminator_value(pn) }) },
                    "vendorInformation" => lambda {|n| @vendor_information = n.get_object_value(lambda {|pn| MicrosoftGraph::Models::SecurityVendorInformation.create_from_discriminator_value(pn) }) },
                    "vulnerabilityStates" => lambda {|n| @vulnerability_states = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::VulnerabilityState.create_from_discriminator_value(pn) }) },
                })
            end
            ## 
            ## Gets the historyStates property value. The historyStates property
            ## @return a alert_history_state
            ## 
            def history_states
                return @history_states
            end
            ## 
            ## Sets the historyStates property value. The historyStates property
            ## @param value Value to set for the historyStates property.
            ## @return a void
            ## 
            def history_states=(value)
                @history_states = value
            end
            ## 
            ## Gets the hostStates property value. Security-related stateful information generated by the provider about the host(s) related to this alert.
            ## @return a host_security_state
            ## 
            def host_states
                return @host_states
            end
            ## 
            ## Sets the hostStates property value. Security-related stateful information generated by the provider about the host(s) related to this alert.
            ## @param value Value to set for the hostStates property.
            ## @return a void
            ## 
            def host_states=(value)
                @host_states = value
            end
            ## 
            ## Gets the incidentIds property value. IDs of incidents related to current alert.
            ## @return a string
            ## 
            def incident_ids
                return @incident_ids
            end
            ## 
            ## Sets the incidentIds property value. IDs of incidents related to current alert.
            ## @param value Value to set for the incidentIds property.
            ## @return a void
            ## 
            def incident_ids=(value)
                @incident_ids = value
            end
            ## 
            ## Gets the investigationSecurityStates property value. The investigationSecurityStates property
            ## @return a investigation_security_state
            ## 
            def investigation_security_states
                return @investigation_security_states
            end
            ## 
            ## Sets the investigationSecurityStates property value. The investigationSecurityStates property
            ## @param value Value to set for the investigationSecurityStates property.
            ## @return a void
            ## 
            def investigation_security_states=(value)
                @investigation_security_states = value
            end
            ## 
            ## Gets the lastEventDateTime property value. The lastEventDateTime property
            ## @return a date_time
            ## 
            def last_event_date_time
                return @last_event_date_time
            end
            ## 
            ## Sets the lastEventDateTime property value. The lastEventDateTime property
            ## @param value Value to set for the lastEventDateTime property.
            ## @return a void
            ## 
            def last_event_date_time=(value)
                @last_event_date_time = value
            end
            ## 
            ## Gets the lastModifiedDateTime property value. Time at which the alert entity was last modified. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
            ## @return a date_time
            ## 
            def last_modified_date_time
                return @last_modified_date_time
            end
            ## 
            ## Sets the lastModifiedDateTime property value. Time at which the alert entity was last modified. The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
            ## @param value Value to set for the lastModifiedDateTime property.
            ## @return a void
            ## 
            def last_modified_date_time=(value)
                @last_modified_date_time = value
            end
            ## 
            ## Gets the malwareStates property value. Threat Intelligence pertaining to malware related to this alert.
            ## @return a malware_state
            ## 
            def malware_states
                return @malware_states
            end
            ## 
            ## Sets the malwareStates property value. Threat Intelligence pertaining to malware related to this alert.
            ## @param value Value to set for the malwareStates property.
            ## @return a void
            ## 
            def malware_states=(value)
                @malware_states = value
            end
            ## 
            ## Gets the messageSecurityStates property value. The messageSecurityStates property
            ## @return a message_security_state
            ## 
            def message_security_states
                return @message_security_states
            end
            ## 
            ## Sets the messageSecurityStates property value. The messageSecurityStates property
            ## @param value Value to set for the messageSecurityStates property.
            ## @return a void
            ## 
            def message_security_states=(value)
                @message_security_states = value
            end
            ## 
            ## Gets the networkConnections property value. Security-related stateful information generated by the provider about the network connection(s) related to this alert.
            ## @return a network_connection
            ## 
            def network_connections
                return @network_connections
            end
            ## 
            ## Sets the networkConnections property value. Security-related stateful information generated by the provider about the network connection(s) related to this alert.
            ## @param value Value to set for the networkConnections property.
            ## @return a void
            ## 
            def network_connections=(value)
                @network_connections = value
            end
            ## 
            ## Gets the processes property value. Security-related stateful information generated by the provider about the process or processes related to this alert.
            ## @return a process
            ## 
            def processes
                return @processes
            end
            ## 
            ## Sets the processes property value. Security-related stateful information generated by the provider about the process or processes related to this alert.
            ## @param value Value to set for the processes property.
            ## @return a void
            ## 
            def processes=(value)
                @processes = value
            end
            ## 
            ## Gets the recommendedActions property value. Vendor/provider recommended action(s) to take as a result of the alert (for example, isolate machine, enforce2FA, reimage host).
            ## @return a string
            ## 
            def recommended_actions
                return @recommended_actions
            end
            ## 
            ## Sets the recommendedActions property value. Vendor/provider recommended action(s) to take as a result of the alert (for example, isolate machine, enforce2FA, reimage host).
            ## @param value Value to set for the recommendedActions property.
            ## @return a void
            ## 
            def recommended_actions=(value)
                @recommended_actions = value
            end
            ## 
            ## Gets the registryKeyStates property value. Security-related stateful information generated by the provider about the registry keys related to this alert.
            ## @return a registry_key_state
            ## 
            def registry_key_states
                return @registry_key_states
            end
            ## 
            ## Sets the registryKeyStates property value. Security-related stateful information generated by the provider about the registry keys related to this alert.
            ## @param value Value to set for the registryKeyStates property.
            ## @return a void
            ## 
            def registry_key_states=(value)
                @registry_key_states = value
            end
            ## 
            ## Gets the securityResources property value. Resources related to current alert. For example, for some alerts this can have the Azure Resource value.
            ## @return a security_resource
            ## 
            def security_resources
                return @security_resources
            end
            ## 
            ## Sets the securityResources property value. Resources related to current alert. For example, for some alerts this can have the Azure Resource value.
            ## @param value Value to set for the securityResources property.
            ## @return a void
            ## 
            def security_resources=(value)
                @security_resources = value
            end
            ## 
            ## Serializes information the current object
            ## @param writer Serialization writer to use to serialize this model
            ## @return a void
            ## 
            def serialize(writer)
                raise StandardError, 'writer cannot be null' if writer.nil?
                super
                writer.write_string_value("activityGroupName", @activity_group_name)
                writer.write_collection_of_object_values("alertDetections", @alert_detections)
                writer.write_string_value("assignedTo", @assigned_to)
                writer.write_string_value("azureSubscriptionId", @azure_subscription_id)
                writer.write_string_value("azureTenantId", @azure_tenant_id)
                writer.write_string_value("category", @category)
                writer.write_date_time_value("closedDateTime", @closed_date_time)
                writer.write_collection_of_object_values("cloudAppStates", @cloud_app_states)
                writer.write_collection_of_primitive_values("comments", @comments)
                writer.write_number_value("confidence", @confidence)
                writer.write_date_time_value("createdDateTime", @created_date_time)
                writer.write_string_value("description", @description)
                writer.write_collection_of_primitive_values("detectionIds", @detection_ids)
                writer.write_date_time_value("eventDateTime", @event_date_time)
                writer.write_enum_value("feedback", @feedback)
                writer.write_collection_of_object_values("fileStates", @file_states)
                writer.write_collection_of_object_values("historyStates", @history_states)
                writer.write_collection_of_object_values("hostStates", @host_states)
                writer.write_collection_of_primitive_values("incidentIds", @incident_ids)
                writer.write_collection_of_object_values("investigationSecurityStates", @investigation_security_states)
                writer.write_date_time_value("lastEventDateTime", @last_event_date_time)
                writer.write_date_time_value("lastModifiedDateTime", @last_modified_date_time)
                writer.write_collection_of_object_values("malwareStates", @malware_states)
                writer.write_collection_of_object_values("messageSecurityStates", @message_security_states)
                writer.write_collection_of_object_values("networkConnections", @network_connections)
                writer.write_collection_of_object_values("processes", @processes)
                writer.write_collection_of_primitive_values("recommendedActions", @recommended_actions)
                writer.write_collection_of_object_values("registryKeyStates", @registry_key_states)
                writer.write_collection_of_object_values("securityResources", @security_resources)
                writer.write_enum_value("severity", @severity)
                writer.write_collection_of_primitive_values("sourceMaterials", @source_materials)
                writer.write_enum_value("status", @status)
                writer.write_collection_of_primitive_values("tags", @tags)
                writer.write_string_value("title", @title)
                writer.write_collection_of_object_values("triggers", @triggers)
                writer.write_collection_of_object_values("uriClickSecurityStates", @uri_click_security_states)
                writer.write_collection_of_object_values("userStates", @user_states)
                writer.write_object_value("vendorInformation", @vendor_information)
                writer.write_collection_of_object_values("vulnerabilityStates", @vulnerability_states)
            end
            ## 
            ## Gets the severity property value. The severity property
            ## @return a alert_severity
            ## 
            def severity
                return @severity
            end
            ## 
            ## Sets the severity property value. The severity property
            ## @param value Value to set for the severity property.
            ## @return a void
            ## 
            def severity=(value)
                @severity = value
            end
            ## 
            ## Gets the sourceMaterials property value. Hyperlinks (URIs) to the source material related to the alert, for example, provider's user interface for alerts or log search, etc.
            ## @return a string
            ## 
            def source_materials
                return @source_materials
            end
            ## 
            ## Sets the sourceMaterials property value. Hyperlinks (URIs) to the source material related to the alert, for example, provider's user interface for alerts or log search, etc.
            ## @param value Value to set for the sourceMaterials property.
            ## @return a void
            ## 
            def source_materials=(value)
                @source_materials = value
            end
            ## 
            ## Gets the status property value. The status property
            ## @return a alert_status
            ## 
            def status
                return @status
            end
            ## 
            ## Sets the status property value. The status property
            ## @param value Value to set for the status property.
            ## @return a void
            ## 
            def status=(value)
                @status = value
            end
            ## 
            ## Gets the tags property value. User-definable labels that can be applied to an alert and can serve as filter conditions (for example 'HVA', 'SAW', etc.) (supports update).
            ## @return a string
            ## 
            def tags
                return @tags
            end
            ## 
            ## Sets the tags property value. User-definable labels that can be applied to an alert and can serve as filter conditions (for example 'HVA', 'SAW', etc.) (supports update).
            ## @param value Value to set for the tags property.
            ## @return a void
            ## 
            def tags=(value)
                @tags = value
            end
            ## 
            ## Gets the title property value. Alert title. Required.
            ## @return a string
            ## 
            def title
                return @title
            end
            ## 
            ## Sets the title property value. Alert title. Required.
            ## @param value Value to set for the title property.
            ## @return a void
            ## 
            def title=(value)
                @title = value
            end
            ## 
            ## Gets the triggers property value. Security-related information about the specific properties that triggered the alert (properties appearing in the alert). Alerts might contain information about multiple users, hosts, files, ip addresses. This field indicates which properties triggered the alert generation.
            ## @return a alert_trigger
            ## 
            def triggers
                return @triggers
            end
            ## 
            ## Sets the triggers property value. Security-related information about the specific properties that triggered the alert (properties appearing in the alert). Alerts might contain information about multiple users, hosts, files, ip addresses. This field indicates which properties triggered the alert generation.
            ## @param value Value to set for the triggers property.
            ## @return a void
            ## 
            def triggers=(value)
                @triggers = value
            end
            ## 
            ## Gets the uriClickSecurityStates property value. The uriClickSecurityStates property
            ## @return a uri_click_security_state
            ## 
            def uri_click_security_states
                return @uri_click_security_states
            end
            ## 
            ## Sets the uriClickSecurityStates property value. The uriClickSecurityStates property
            ## @param value Value to set for the uriClickSecurityStates property.
            ## @return a void
            ## 
            def uri_click_security_states=(value)
                @uri_click_security_states = value
            end
            ## 
            ## Gets the userStates property value. Security-related stateful information generated by the provider about the user accounts related to this alert.
            ## @return a user_security_state
            ## 
            def user_states
                return @user_states
            end
            ## 
            ## Sets the userStates property value. Security-related stateful information generated by the provider about the user accounts related to this alert.
            ## @param value Value to set for the userStates property.
            ## @return a void
            ## 
            def user_states=(value)
                @user_states = value
            end
            ## 
            ## Gets the vendorInformation property value. Complex type containing details about the security product/service vendor, provider, and subprovider (for example, vendor=Microsoft; provider=Windows Defender ATP; subProvider=AppLocker). Required.
            ## @return a security_vendor_information
            ## 
            def vendor_information
                return @vendor_information
            end
            ## 
            ## Sets the vendorInformation property value. Complex type containing details about the security product/service vendor, provider, and subprovider (for example, vendor=Microsoft; provider=Windows Defender ATP; subProvider=AppLocker). Required.
            ## @param value Value to set for the vendorInformation property.
            ## @return a void
            ## 
            def vendor_information=(value)
                @vendor_information = value
            end
            ## 
            ## Gets the vulnerabilityStates property value. Threat intelligence pertaining to one or more vulnerabilities related to this alert.
            ## @return a vulnerability_state
            ## 
            def vulnerability_states
                return @vulnerability_states
            end
            ## 
            ## Sets the vulnerabilityStates property value. Threat intelligence pertaining to one or more vulnerabilities related to this alert.
            ## @param value Value to set for the vulnerabilityStates property.
            ## @return a void
            ## 
            def vulnerability_states=(value)
                @vulnerability_states = value
            end
        end
    end
end
