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

package com.azure.resourcemanager.securityinsights.fluent.models;

import com.azure.core.annotation.Immutable;
import com.azure.resourcemanager.securityinsights.models.EntityCommonProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.time.OffsetDateTime;
import java.util.UUID;

/** Submission mail entity property bag. */
@Immutable
public final class SubmissionMailEntityProperties extends EntityCommonProperties {
    /*
     * The network message id of email to which submission belongs
     */
    @JsonProperty(value = "networkMessageId", access = JsonProperty.Access.WRITE_ONLY)
    private UUID networkMessageId;

    /*
     * The submission id
     */
    @JsonProperty(value = "submissionId", access = JsonProperty.Access.WRITE_ONLY)
    private UUID submissionId;

    /*
     * The submitter
     */
    @JsonProperty(value = "submitter", access = JsonProperty.Access.WRITE_ONLY)
    private String submitter;

    /*
     * The submission date
     */
    @JsonProperty(value = "submissionDate", access = JsonProperty.Access.WRITE_ONLY)
    private OffsetDateTime submissionDate;

    /*
     * The Time stamp when the message is received (Mail)
     */
    @JsonProperty(value = "timestamp", access = JsonProperty.Access.WRITE_ONLY)
    private OffsetDateTime timestamp;

    /*
     * The recipient of the mail
     */
    @JsonProperty(value = "recipient", access = JsonProperty.Access.WRITE_ONLY)
    private String recipient;

    /*
     * The sender of the mail
     */
    @JsonProperty(value = "sender", access = JsonProperty.Access.WRITE_ONLY)
    private String sender;

    /*
     * The sender's IP
     */
    @JsonProperty(value = "senderIp", access = JsonProperty.Access.WRITE_ONLY)
    private String senderIp;

    /*
     * The subject of submission mail
     */
    @JsonProperty(value = "subject", access = JsonProperty.Access.WRITE_ONLY)
    private String subject;

    /*
     * The submission type for the given instance. This maps to Junk, Phish, Malware or NotJunk.
     */
    @JsonProperty(value = "reportType", access = JsonProperty.Access.WRITE_ONLY)
    private String reportType;

    /**
     * Get the networkMessageId property: The network message id of email to which submission belongs.
     *
     * @return the networkMessageId value.
     */
    public UUID networkMessageId() {
        return this.networkMessageId;
    }

    /**
     * Get the submissionId property: The submission id.
     *
     * @return the submissionId value.
     */
    public UUID submissionId() {
        return this.submissionId;
    }

    /**
     * Get the submitter property: The submitter.
     *
     * @return the submitter value.
     */
    public String submitter() {
        return this.submitter;
    }

    /**
     * Get the submissionDate property: The submission date.
     *
     * @return the submissionDate value.
     */
    public OffsetDateTime submissionDate() {
        return this.submissionDate;
    }

    /**
     * Get the timestamp property: The Time stamp when the message is received (Mail).
     *
     * @return the timestamp value.
     */
    public OffsetDateTime timestamp() {
        return this.timestamp;
    }

    /**
     * Get the recipient property: The recipient of the mail.
     *
     * @return the recipient value.
     */
    public String recipient() {
        return this.recipient;
    }

    /**
     * Get the sender property: The sender of the mail.
     *
     * @return the sender value.
     */
    public String sender() {
        return this.sender;
    }

    /**
     * Get the senderIp property: The sender's IP.
     *
     * @return the senderIp value.
     */
    public String senderIp() {
        return this.senderIp;
    }

    /**
     * Get the subject property: The subject of submission mail.
     *
     * @return the subject value.
     */
    public String subject() {
        return this.subject;
    }

    /**
     * Get the reportType property: The submission type for the given instance. This maps to Junk, Phish, Malware or
     * NotJunk.
     *
     * @return the reportType value.
     */
    public String reportType() {
        return this.reportType;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    @Override
    public void validate() {
        super.validate();
    }
}
