Public/Set-SDPProblemImpactDetails.ps1

function Set-SDPProblemImpactDetails {
    <#
    .SYNOPSIS
        Updates the impact details for a ServiceDesk Plus problem.
    .PARAMETER ProblemId
        The ID of the problem.
    .PARAMETER Id
        The ID of the impact details entry to update.
    .PARAMETER Content
        Updated description of the business or service impact.
    .PARAMETER AdditionalFields
        Hashtable of additional fields to merge into the request body.
    .EXAMPLE
        Set-SDPProblemImpactDetails -ProblemId '12345' -Id '1' -Content 'Now affecting 350 users after additional sites reported issues.'
    #>

    [CmdletBinding(SupportsShouldProcess)]
    param(
        [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
        [string]$ProblemId,

        [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
        [string]$Id,

        [Parameter()]
        [string]$Content,

        [Parameter()]
        [hashtable]$AdditionalFields
    )

    process {
        $body = @{}
        if ($PSBoundParameters.ContainsKey('Content')) { $body['description'] = $Content }

        if ($AdditionalFields) {
            foreach ($key in $AdditionalFields.Keys) { $body[$key] = $AdditionalFields[$key] }
        }

        if ($PSCmdlet.ShouldProcess("Impact details $Id on Problem $ProblemId", 'Update impact details')) {
            $response = Invoke-SDPRestMethod -Endpoint "problems/$ProblemId/impact_details/$Id" -Method PUT -Body @{ impact_details = $body }
            $response.impact_details
        }
    }
}