Public/Invoke-NCCustomPsaTicket.ps1

<#
.SYNOPSIS
Reopens or resolves a Custom PSA Ticket in N-central.

.DESCRIPTION
POST /api/custom-psa/tickets/{id}/reopen or /resolve.

.PARAMETER CustomPsaTicketId
Ticket ID.

.PARAMETER Action
Action to perform: Reopen or Resolve.

.EXAMPLE
Invoke-NCCustomPsaTicket -CustomPsaTicketId 'TKT-42' -Action Reopen

.EXAMPLE
Invoke-NCCustomPsaTicket -CustomPsaTicketId 'TKT-42' -Action Resolve
#>

function Invoke-NCCustomPsaTicket {
    [CmdletBinding(SupportsShouldProcess)]
    param (
        [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
        [ValidateNotNullOrEmpty()]
        [string]$CustomPsaTicketId,

        [Parameter(Mandatory)]
        [ValidateSet('Reopen', 'Resolve')]
        [string]$Action
    )

    begin { $api = Get-NCRestApiInstance }

    process {
        $endpoint = if ($Action -eq 'Reopen') {
            "api/custom-psa/tickets/$CustomPsaTicketId/reopen"
        } else {
            "api/custom-psa/tickets/$CustomPsaTicketId/resolve"
        }
        Write-Verbose "[FUNCTION] Invoke-NCCustomPsaTicket: POST $endpoint"
        if (-not $PSCmdlet.ShouldProcess($CustomPsaTicketId, "$Action custom PSA ticket")) { return }
        $api.Post($endpoint, @{})
    }
}