Public/Playlists/Set-Playlist.ps1

<#
    .SYNOPSIS
        Change a playlist's name and public/private state. (The user must, of course, own the playlist.)
    .EXAMPLE
        PS C:\> Set-Playlist -Id 'myplaylistId' -Name 'New Playlist Name'
        Change the name of the playlist with Id 'myplaylistId'
    .PARAMETER Id
        The Spotify ID for the playlist.
    .PARAMETER Name
        Specifies the new name for the playlist
    .PARAMETER Public
        $True the playlist will be public
        $False it will be private
    .PARAMETER Collaborative
        $True the playlist will become collaborative and other users will be able to modify the playlist in their Spotify client.
        Note: You can only set collaborative to true on non-public playlists.
    .PARAMETER Description
        Value for playlist description as displayed in Spotify Clients and in the Web API.
    .PARAMETER ApplicationName
        Specifies the Spotify Application Name (otherwise default is used)
#>

function Set-Playlist {
    param (
        [Parameter(Mandatory)]
        [string]
        $Id,

        [string]
        $Name,

        [bool]
        $Public,

        [bool]
        $Collaborative,

        [string]
        $Description,

        [string]
        $ApplicationName
    )

    $Method = 'Put'
    $Uri = 'https://api.spotify.com/v1/playlists/' + $Id

    $BodyHashtable = @{}
    if ($Name) { $BodyHashtable.name = $Name }
    if ($null -ne $Public) { $BodyHashtable.public = $Public }
    if ($null -ne $Collaborative) { $BodyHashtable.collaborative = $Collaborative }
    if ($Description) { $BodyHashtable.description = $Description }
    $Body = Get-NonAsciiCharEscaped (ConvertTo-Json $BodyHashtable -Compress)

    Send-SpotifyCall -Method $Method -Uri $Uri -Body $Body -ApplicationName $ApplicationName
}