Public/Get-MerakiNetworkClientTrafficHistory.ps1

function Get-MerakiNetworkClientTrafficHistory {
    <#
    .SYNOPSIS
        Retrieves the traffic history for a specific client on a Meraki network.
 
    .PARAMETER AuthToken
        The Meraki API key.
 
    .PARAMETER networkId
        The ID of the Meraki network.
 
    .PARAMETER clientId
        The ID of the client whose traffic history is to be retrieved.
 
    .PARAMETER perPage
        The number of entries per page. Default is null.
 
    .PARAMETER startingAfter
        A starting timestamp for the query. Default is null.
 
    .PARAMETER endingBefore
        An ending timestamp for the query. Default is null.
 
    .EXAMPLE
        Get-MerakiNetworkClientTrafficHistory -AuthToken "YOUR_API_KEY" -networkId "YOUR_NETWORK_ID" -clientId "YOUR_CLIENT_ID"
 
        Retrieves the traffic history for the specified client on the specified network.
 
    .NOTES
        Requires the Invoke-RestMethod cmdlet.
    #>

    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)]
        [string]$AuthToken,
        [Parameter(Mandatory=$true)]
        [string]$networkId,
        [Parameter(Mandatory=$true)]
        [string]$clientId,
        [Parameter(Mandatory=$false)]
        [int]$perPage = $null,
        [Parameter(Mandatory=$false)]
        [string]$startingAfter = $null,
        [Parameter(Mandatory=$false)]
        [string]$endingBefore = $null
    )

    try {
        $header = @{
            "X-Cisco-Meraki-API-Key" = $AuthToken
        }
        $queryParams = @{}
        if ($perPage) {
            $queryParams['perPage'] = $perPage
        }
        if ($startingAfter) {
            $queryParams['startingAfter'] = $startingAfter
        }
        if ($endingBefore) {
            $queryParams['endingBefore'] = $endingBefore
        }

        $queryString = New-MerakiQueryString -queryParams $queryParams

        $URL = "https://api.meraki.com/api/v1/networks/$networkId/clients/$clientId/trafficHistory?$queryString"

        $URI = [uri]::EscapeUriString($URL)

        $response = Invoke-RestMethod -Method Get -Uri $URI -Header $header -UserAgent "MerakiPowerShellModule/1.0.2 DocNougat"
        return $response
    } catch {
        Write-Error "An error occurred while retrieving traffic history for client $clientId on network $networkId. Error message: $_"
    }
}