Public/Set-MerakiDeviceWirelessAlternateManagementInterfaceIPv6.ps1

function Set-MerakiDeviceWirelessAlternateManagementInterfaceIPv6 {
    <#
    .SYNOPSIS
    Updates the IPv6 configuration of the alternate management interface for a Meraki device.
 
    .DESCRIPTION
    Set-MerakiDeviceWirelessAlternateManagementInterfaceIPv6 sends a PUT request to the Meraki API to configure IPv6 settings for a device's alternate management interface. Provide a valid API key, the device serial, and the IPv6 configuration payload as a JSON string.
 
    .PARAMETER AuthToken
    The Cisco Meraki API key used for authorization. This value is sent in the X-Cisco-Meraki-API-Key header.
 
    .PARAMETER DeviceSerial
    The serial number of the Meraki device to update.
 
    .PARAMETER ManagementInterfaceIPv6Config
    A JSON-formatted string containing the IPv6 configuration for the alternate management interface. Example payload structure depends on Meraki API schema (e.g. enablement flags, addresses, prefixes, DHCP settings).
 
    .EXAMPLE
    $cfg = @{
        addresses = @(
            @{
                protocol = "ipv6"
                assignmentMode = "static"
                address = "2001:db8:3c4d:15::1"
                gateway = "fe80:db8:c15:c0:d0c::10ca:1d02"
                prefix = "2001:db8:3c4d:15::/64"
                nameservers = @{
                    addresses = @(
                        "2001:db8:3c4d:15::1",
                        "2001:db8:3c4d:15::1"
                    )
                }
            }
        )
    } | ConvertTo-Json -Compress -Depth 10
    Set-MerakiDeviceWirelessAlternateManagementInterfaceIPv6 -AuthToken $env:MERAKI_KEY -DeviceSerial 'Q2XX-XXXX-XXXX' -ManagementInterfaceIPv6Config $cfg
 
    .NOTES
    - Requires network access to api.meraki.com.
    - Ensure the AuthToken has sufficient permissions to modify device configuration.
    - The ManagementInterfaceIPv6Config must be a valid JSON string matching the Meraki API schema for alternate management interface IPv6 settings.
 
    #>

        [CmdletBinding()]
        param (
            [parameter(Mandatory=$true)]
            [string]$AuthToken,
            [parameter(Mandatory=$true)]
            [string]$DeviceSerial,
            [parameter(Mandatory=$true)]
            [string]$ManagementInterfaceIPv6Config
        )
    
        try {
            $header = @{
                "X-Cisco-Meraki-API-Key" = $AuthToken
                "content-type" = "application/json; charset=utf-8"
            }
    
            $url = "https://api.meraki.com/api/v1/devices/$DeviceSerial/wireless/alternateManagementInterface/ipv6"
    
            $body = $ManagementInterfaceIPv6Config
    
            $response = Invoke-RestMethod -Method Put -Uri $url -headers $header -UserAgent "MerakiPowerShellModule/1.1.3 DocNougat" -Body $body
            return $response
        }
        catch {
        Write-Debug $_
        Throw $_
    }
    }