GinShell.GoDaddy/Public/Update-GsGoDaddyPointer.ps1

function Update-GsGoDaddyPointer {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory)]
        [string]$FullDomainName,

        [Parameter(Mandatory = $false)]
        [ValidateSet("A", "CNAME")]
        [string]$Type = 'CNAME',

        [Parameter(Mandatory)]
        [string]$Target
    )

    $dns = $FullDomainName.Split('.')
    $len = $dns.Length
    $name = ($dns[0..($len - 3)] -join '.')
    $domain = "$($dns[-2]).$($dns[-1])"

    $creds = Get-GoDaddyCreds
    $headers = @{ Authorization = "sso-key $($creds.Key):$($creds.Secret)" }

    $uri = "https://api.godaddy.com/v1/domains/$domain/records/$Type/$name"
    $existing = $null
    try {
        $existing = Invoke-RestMethod -Uri $uri -Headers $headers -Method GET -ErrorAction Stop
    }
    catch {}

    if (-not $existing) {
        Write-GsLog -Message "Record does not exist. Cannot update." -Type Error
        return
    }

    $record = [array]@{
        data = $Target
        name = $name
        ttl  = 3600
        type = $Type
    }

    $body = $record | ConvertTo-Json -Depth 2

    $patchUri = "https://api.godaddy.com/v1/domains/$domain/records/$Type/$name"
    try {
        Invoke-RestMethod -Uri $patchUri -Headers $headers -Method PUT -Body [$body] -ContentType 'application/json'
        Write-GsLog -Message "Updated $name.$domain -> $Target" -Type Success
    }
    catch {
        Write-GsLog -Message "Failed to update record: $_" -Type Error
    }
}