Classes/SMAClasses.ps1

# Classes for parameter validation
class SMAMailAttributes {
    [String]$esaHostName
    [Int]$esaMid
    [String]$inQuarantines
    [String]$originatingEsaIp
    [Object[]]$quarantineForReason
    [Object[]]$quarantineForReasonDict
    [String]$received
    [Object[]]$recipient
    [String]$scheduledExit
    [String]$sender
    [String]$size
    [String]$subject
}

class SMAMail {
    [SMAMailAttributes]$attributes
    [Int]$mid
}

class SMAMailDetailsAttributes {
    [String]$headers
    [Object[]]$matchedContents
    [String]$messageBody
    [PSCustomObject]$messageDetails
    [Object[]]$messagePartDetails
    [Object[]]$quarantineDetails
}


class SMAMailDetails {
    [SMAMailDetailsAttributes]$attributes
    [Int]$mid
}




class SMAMailDownloadedAttachments {
    [int]$Id
    [System.IO.FileInfo]$LocalItem
    [string]$LocalSizeB64
    [string]$SMAName
    [string]$SMASize
    [bool]$CorrectlyDownloaded
}

class SMAMailDownloaded {
    [SMAMailDetails]$MessageDetails
    [SMAMailDownloadedAttachments[]]$downloadedAttachments
    [System.IO.FileInfo]$localBody
    [System.IO.FileInfo]$localHeaders
}


class SMAMailTacked {
    [Object[]]$allIcid
    [Object[]]$dcid
    [string]$direction
    [PSCustomObject]$finalSubject
    [Object[]]$friendly_from
    [string]$hostName
    [int]$icid
    [string]$isCompleteData
    [Object[]]$mailPolicy
    [PSCustomObject]$messageID
    [PSCustomObject]$messageStatus
    [Object[]]$mid
    [PSCustomObject]$morDetails
    [PSCustomObject]$morInfo
    [Object[]]$recipient
    [PSCustomObject]$recipientMap
    [string]$replyTo
    [string]$sbrs
    [string]$sender
    [string]$senderDomain
    [string]$senderGroup
    [string]$senderIp
    [string]$serialNumber
    [string]$subject
    [string]$timestamp
    [PSCustomObject]$verdictChart
}