Public/Playlists/New-Playlist.ps1

<#
    .SYNOPSIS
        Create a playlist for a Spotify user. (The playlist will be empty until you add tracks.)
    .EXAMPLE
        PS C:\> New-Playlist -UserId (Get-CurrentUserProfile).id -Name 'New Playlist'
        Create a new playlist named 'New Playlist'
    .PARAMETER UserId
        Specifies the user's Spotify user ID.
    .PARAMETER Name
        The name for the new playlist
        This name does not need to be unique; a user may have several playlists with the same name.
    .PARAMETER Public
        $True the playlist will be public (default)
        $False it will be private
    .PARAMETER Collaborative
        $True the playlist will be collaborative.
        $False the playlist will not be collaborative (default)
        Note that to create a collaborative playlist you must also set Public to false .
    .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 New-Playlist {
    param (
        [Parameter(Mandatory)]
        [string]
        $UserId,

        [Parameter(Mandatory)]
        [string]
        $Name,

        [bool]
        $Public,

        [bool]
        $Collaborative,

        [string]
        $Description,

        [string]
        $ApplicationName
    )

    $Method = 'Post'
    $Uri = "https://api.spotify.com/v1/users/$UserId/playlists"

    $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
}