Public/Invoke-MerakiNetworkUnbindNetwork.ps1

function Invoke-MerakiNetworkUnbindNetwork {
    <#
    .SYNOPSIS
    Unbinds a Meraki network from its configuration template using the Meraki Dashboard API.
 
    .DESCRIPTION
    The Invoke-MerakiNetworkUnbindNetwork function allows you to unbind a Meraki network from its configuration template by providing the authentication token, network ID, and a boolean value indicating whether to retain the network's configuration settings.
 
    .PARAMETER AuthToken
    The authentication token (API key) required to access the Meraki Dashboard API.
 
    .PARAMETER NetworkId
    The ID of the Meraki network to be unbound from its configuration template.
 
    .PARAMETER RetainConfigs
    A boolean value indicating whether to retain the network's configuration settings. If set to true, the network's configuration settings will be retained. If set to false, the network's configuration settings will be deleted.
 
    .EXAMPLE
    Invoke-MerakiNetworkUnbindNetwork -AuthToken "your-api-token" -NetworkId "L_123456789012345678" -RetainConfigs $true
 
    This example unbinds the Meraki network with ID "L_123456789012345678" from its configuration template and retains the network's configuration settings.
 
    .NOTES
    The function requires the "Invoke-RestMethod" cmdlet to be available.
 
    The function returns the response from the API if the unbinding is successful, otherwise, it displays an error message.
    #>


    [CmdletBinding()]
    param (
        [parameter(Mandatory=$true)]
        [string]$AuthToken,
        [parameter(Mandatory=$true)]
        [string]$NetworkId,
        [parameter(Mandatory=$false)]
        [bool]$RetainConfigs
    )

    try {
        $header = @{
            "X-Cisco-Meraki-API-Key" = $AuthToken
            "content-type" = "application/json; charset=utf-8"
        }
        If($RetainConfigs){
            $body = @{
                "retainConfigs" = $RetainConfigs
            } | ConvertTo-JSON -compress
        }
        $url = "https://api.meraki.com/api/v1/networks/$NetworkId/unbind"

        If($body){
            $response = Invoke-RestMethod -Method Post -Uri $url -Header $header -UserAgent "MerakiPowerShellModule/1.0.2 DocNougat" -Body $body
        return $response
        } else {
            $response = Invoke-RestMethod -Method Post -Uri $url -Header $header -UserAgent "MerakiPowerShellModule/1.0.2 DocNougat"
        }
    }
    catch {
        Write-Debug $_
        Throw $_
    }
}