Public/Add-NicRuDnsZone.ps1

<#
    .SYNOPSIS
        Add new zone
    .DESCRIPTION
        Создание зоны на услуге
    .PARAMETER Service
        DNS hosting service name
    .PARAMETER ZoneName
        DNS Zone name
    .PARAMETER ZoneData
        DNS Zone file
    .PARAMETER AccessToken
        Access token to use
    .LINK
        https://www.nic.ru/help/upload/file/API_DNS-hosting.pdf
#>

function Add-NicRuDnsZone {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [string]$Service,
        [Parameter(Mandatory)]
        [string]$ZoneName,
        [string]$ZoneData,
        [string]$AccessToken
    )
    if (-not $AccessToken) {
        $AccessToken = if ($GMNicRuDefaultToken) { $GMNicRuDefaultToken.access_token } else { $null }
    }
    if (-not $AccessToken) {
        throw "AccessToken required"
    }
    $Headers = @{
        "Authorization" = "Bearer $AccessToken"
    }
    $requestParams = @{
        Uri = "https://api.nic.ru/dns-master/services/$Service/zones/$(Get-Punycode $ZoneName)"
        Headers = $Headers
        ContentType = "application/json; charset=utf-8"
        Method = 'PUT'
    }
    if ($ZoneData) {
        $requestParams.Body = $ZoneData
    }
    Write-Verbose $requestParams.Uri
    $r = Invoke-RestMethod @requestParams @GMNicRuProxySettings
    if ($r -and $r.response) {
        if ($r.response.status -eq 'success') {
            $r.response.data.zone | Select-Object id, name, idn-name, enable, service, has-changes, has-primary, admin, payer
        }
        else {
            Write-Error $r.response.errors
        }
    }
}