WatchlistActions/Test-WatchlistAction.psm1

# Test-WatchlistAction.psm1
Function Test-WatchlistAction {
    [Alias("Test-WatchlistActions")]
    [CmdletBinding()]
    [OutputType([bool])]
    Param(
        [Parameter(Mandatory=$True, ValueFromPipeline=$True)]
        $SuspectWatchlistActions
    )
    process {
        $ValidWatchlistActions = $True

        # Object Type
        try {
            if ($SuspectWatchlistActions -isnot [PSCustomObject]) {
                $ValidWatchlistActions = $False
                Write-Error "Not a valid object."
                return $ValidWatchlistActions
            }
        }
        catch {
            $ValidWatchlistActions = $False
            return $ValidWatchlistActions
        }

        # WatchlistActions properties
        try {
            $RequiredWatchlistActionsProperties = (
                "action_type",
                "enabled"
            )

            foreach ($Property in $RequiredWatchlistActionsProperties)
            {
                If (-not ($SuspectWatchlistActions | Get-Member $Property))
                {
                    $ValidWatchlistActions = $False
                    Write-Error "Not a valid WatchlistActions."
                    Write-Error "Failed property check for presence of property: $($Property)."
                    return $ValidWatchlistActions
                }
            }
        }
        catch {
            $ValidWatchlistActions = $False
            return $ValidWatchlistActions
        }

        return $ValidWatchlistActions
    }
}