Public/Get-MerakiNetworkSensorAlertsOverviewByMetric.ps1

function Get-MerakiNetworkSensorAlertsOverviewByMetric {
    <#
    .SYNOPSIS
    Retrieves an overview of sensor alerts by metric for a specified Meraki network.
 
    .DESCRIPTION
    The Get-MerakiNetworkSensorAlertsOverviewByMetric function retrieves an overview of sensor alerts by metric for a specified Meraki network. You can specify a timespan, start and end time, and interval for the data returned. If no timespan is specified, both start and end times must be provided.
 
    .PARAMETER AuthToken
    The Meraki API token for the account.
 
    .PARAMETER NetworkId
    The ID of the Meraki network for which to retrieve sensor alerts.
 
    .PARAMETER t0
    The beginning of the timespan for the data to retrieve. If no timespan is specified, both start and end times must be provided.
 
    .PARAMETER t1
    The end of the timespan for the data to retrieve. If no timespan is specified, both start and end times must be provided.
 
    .PARAMETER timespan
    The timespan for the data to retrieve, in seconds.
 
    .PARAMETER interval
    The time interval at which to retrieve data, in seconds.
 
    .EXAMPLE
    PS C:\> Get-MerakiNetworkSensorAlertsOverviewByMetric -AuthToken '12345' -NetworkId 'N_12345678' -timespan 86400 -interval 3600
 
    Retrieves an overview of sensor alerts by metric for the specified Meraki network over a timespan of 24 hours, with data returned every hour.
 
    .NOTES
    For more information, see the Meraki API documentation:
    https://developer.cisco.com/meraki/api-v1/#!get-network-sensor-alerts-overview-by-metric
    #>

    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [string]$AuthToken,
        [Parameter(Mandatory = $true)]
        [string]$NetworkId,
        [Parameter(Mandatory = $false)]
        [string]$t0 = $null,
        [Parameter(Mandatory = $false)]
        [string]$t1 = $null,
        [Parameter(Mandatory = $false)]
        [int]$timespan = $null,
        [Parameter(Mandatory = $false)]
        [int]$interval = $null
    )
    try {
        $header = @{
            'X-Cisco-Meraki-API-Key' = $AuthToken
        }

        $queryParams = @{}
        if ($timespan) {
            $queryParams['timespan'] = $timespan
        } else {
            if ($t0) {
                $queryParams['t0'] = $t0
            }
            if ($t1) {
                $queryParams['t1'] = $t1
            }
        }
        if ($interval) {
            $queryParams['interval'] = $interval
        }
        $queryString = New-MerakiQueryString -queryParams $queryParams

        $URL = "https://api.meraki.com/api/v1/networks/$NetworkId/sensor/alerts/overview/byMetric?$queryString"

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

        $response = Invoke-RestMethod -Method Get -Uri $URI -Header $header -UserAgent "MerakiPowerShellModule/1.0.2 DocNougat"
        return $response
    } catch {
        Write-Host $_
        Throw $_
    }
}