Public/Get-MerakiNetworkWirelessFailedConnections.ps1

function Get-MerakiNetworkWirelessFailedConnections {
    <#
    .SYNOPSIS
    Gets a list of failed client connection events in a Meraki wireless network.
     
    .DESCRIPTION
    This function gets a list of failed client connection events in a Meraki wireless network, optionally filtered by time range, access point tag, band, SSID, VLAN, device serial, or client ID.
     
    .PARAMETER AuthToken
    Specifies the Meraki API token used to authenticate the request.
     
    .PARAMETER NetworkId
    Specifies the Meraki network ID for which to retrieve the failed connection events.
     
    .PARAMETER T0
    Specifies the start time (in UTC) for the time range in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ).
     
    .PARAMETER T1
    Specifies the end time (in UTC) for the time range in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ).
     
    .PARAMETER TimeSpan
    Specifies the duration of the time range in seconds (max 31 days).
     
    .PARAMETER ApTag
    Specifies the access point tag used to filter the failed connection events.
     
    .PARAMETER Band
    Specifies the wireless band used to filter the failed connection events (either "2.4G" or "5G").
     
    .PARAMETER Ssid
    Specifies the SSID used to filter the failed connection events.
     
    .PARAMETER Vlan
    Specifies the VLAN used to filter the failed connection events.
     
    .PARAMETER Serial
    Specifies the device serial used to filter the failed connection events.
     
    .PARAMETER ClientId
    Specifies the client ID used to filter the failed connection events.
     
    .EXAMPLE
    PS C:\> Get-MerakiNetworkWirelessFailedConnections -AuthToken "12345" -NetworkId "67890"
     
    Gets a list of all failed client connection events in the Meraki network with ID "67890".
     
    .EXAMPLE
    PS C:\> Get-MerakiNetworkWirelessFailedConnections -AuthToken "12345" -NetworkId "67890" -T0 "2022-01-01T00:00:00Z" -T1 "2022-01-02T00:00:00Z"
     
    Gets a list of all failed client connection events in the Meraki network with ID "67890" between January 1, 2022 and January 2, 2022.
     
    .EXAMPLE
    PS C:\> Get-MerakiNetworkWirelessFailedConnections -AuthToken "12345" -NetworkId "67890" -ApTag "Lobby-AP"
     
    Gets a list of all failed client connection events in the Meraki network with ID "67890" for the access point with tag "Lobby-AP".
     
    .NOTES
    Author: Microsoft
    #>

    [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)]
        [string]$apTag = $null,
        [parameter(Mandatory=$false)]
        [string]$band = $null,
        [parameter(Mandatory=$false)]
        [int]$ssid = $null,
        [parameter(Mandatory=$false)]
        [int]$vlan = $null,
        [parameter(Mandatory=$false)]
        [string]$serial = $null,
        [parameter(Mandatory=$false)]
        [string]$clientId = $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 ($apTag) {
                $queryParams['apTag'] = $apTag
            }
    
        if ($band) {
                $queryParams['band'] = $band
            }
    
        if ($ssid) {
                $queryParams['ssid'] = $ssid
            }
    
        if ($vlan) {
                $queryParams['vlan'] = $vlan
            }
    
        if ($serial) {
                $queryParams['serial'] = $serial
            }
    
        if ($clientId) {
                $queryParams['clientId'] = $clientId
            }
    
        $queryString = New-MerakiQueryString -queryParams $queryParams
    
        $URL = "https://api.meraki.com/api/v1/networks/$networkId/wireless/failedConnections?$queryString"
    
        $URI = [uri]::EscapeUriString($URL)
    
        $response = Invoke-RestMethod -Method Get -Uri $URI -headers $header -UserAgent "MerakiPowerShellModule/1.0.8 DocNougat"
        return $response
    } catch {
        Write-Debug $_
        Throw $_
    }
}