Public/Remove-FsArticle.ps1

Function Remove-FsArticle {
<#
.SYNOPSIS
    Deletes a Solution Article from FreshService
.DESCRIPTION
    The Remove-FsArticle function deletes a solution article from your FreshService domain
.EXAMPLE
    Remove-FsArticle -ID 1
    Deletes the article with ID 1
.EXAMPLE
    Get-FsArticle -FolderID 2 | Where-Object {$_.title -like "*old*"} | Remove-FsArticle
    Removes all articles in folder 2 that have "old" in the title
.PARAMETER ID
    The ID of the article to delete (required)
.INPUTS
    String
.OUTPUTS
    None (HTTP 204 No Content on success)
.NOTES
    Requires FreshService API connection
    This action cannot be undone
.LINK
    https://api.freshservice.com/v2/#delete_solution_article
#>

    [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')] 
    Param(
        [Parameter(Mandatory=$true,
            ValueFromPipeline=$true,
            ValueFromPipelineByPropertyName=$true,
            Position=0)]
            [String]$ID
    )

    Begin {
        Write-Verbose -Message "Starting $($MyInvocation.InvocationName) with $($PsCmdlet.ParameterSetName) parameterset..."
        Write-Verbose -Message "Parameters are $($PSBoundParameters | Select-Object -Property *)"
        Connect-FreshServiceAPI
    }
    
    Process {
        if ($PSCmdlet.ShouldProcess("Article ID: $ID", "Delete Solution Article")) {
            try {
                Write-Verbose -Message "Deleting article with ID: $ID"
                $Result = Invoke-WebRequest -Uri "$($Script:APIURL)/solutions/articles/$($ID)" -Headers $headers -Method DELETE
                
                if ($Result.StatusCode -eq 204) {
                    Write-Verbose -Message "Article ID $ID deleted successfully"
                }
                else {
                    Write-Warning -Message "Unexpected status code: $($Result.StatusCode)"
                }
            }
            catch {
                Write-Error -Message "Failed to delete article ID $ID. Error: $_"
            }
        }
    }
    
    End {
        Write-Verbose -Message "Ending $($MyInvocation.InvocationName)..."
    }
}