Public/Get-HuduActivityLogs.ps1

function Get-HuduActivityLogs {
    [CmdletBinding()]
    Param (
        [Alias("user_id")]
        [Int]$UserId = '',
        [Alias("user_email")]
        [String]$UserEmail = '',
        [Alias("resource_id")]
        [Int]$ResourceId = '',
        [Alias("resource_type")]
        [String]$ResourceType = '',
        [Alias("action_message")]
        [String]$ActionMessage = '',
        [Alias("start_date")]
        [DateTime]$StartDate,
        [Alias("end_date")]
        [DateTime]$EndDate    
    )
    
    $ResourceFilter = ''
    
    if ($UserId) {
        $ResourceFilter = "$($ResourceFilter)&user_id=$($UserId)"
    }
    
    if ($UserEmail) {
        $ResourceFilter = "$($ResourceFilter)&user_email=$($UserEmail)"
    }
    
    if ($ResourceId) {
        $ResourceFilter = "$($ResourceFilter)&resource_id=$($ResourceId)"
    }
    
    if ($ResourceType) {
        $ResourceFilter = "$($ResourceFilter)&resource_type=$($ResourceType)"
    }
    
    if ($ActionMessage) {
        $ResourceFilter = "$($ResourceFilter)&action_message=$($ActionMessage)"
    }

    if ($StartDate) {
        $ISO8601Date = $StartDate.ToString("o");
        $ResourceFilter = "$($ResourceFilter)&start_date=$($ISO8601Date)"
    }
    
    $i = 1;
        
    $AllActivity = do {
        $Activity = Invoke-HuduRequest -Method get -Resource "/api/v1/activity_logs?page=$i&page_size=1000$($ResourceFilter)"
        $i++
        $Activity
    } while ($Activity.count % 1000 -eq 0 -and $Activity.count -ne 0)
         
    
    if ($EndDate) {
        $AllActivity = $AllActivity | where-object { $([DateTime]::Parse($_.created_at)) -le $EndDate }
    }

    return $AllActivity
    
}