Public/Update-JiraIssue.ps1

function Update-JiraIssue {
    <#
    .SYNOPSIS
        Aktualisiert ein bestehendes Jira-Issue.
    .PARAMETER IssueKey
        Key oder ID des zu aktualisierenden Issues, z.B. "PROJ-123".
    .PARAMETER Summary
        Neuer Titel (optional).
    .PARAMETER Description
        Neue Beschreibung als reiner Text (optional). Wird automatisch ins Atlassian Document Format (ADF) umgewandelt.
    .PARAMETER Fields
        Zusätzliche/überschreibende Felder als Hashtable, z.B. @{ priority = @{ name = "Low" } }.
    .EXAMPLE
        Update-JiraIssue -IssueKey "PROJ-123" -Summary "Neuer Titel"
    .EXAMPLE
        Update-JiraIssue -IssueKey "PROJ-123" -Fields @{ labels = @("dringend") }
    #>

    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [string]
        $IssueKey,

        [Parameter(Mandatory = $false)]
        [string]
        $Summary,

        [Parameter(Mandatory = $false)]
        [string]
        $Description,

        [Parameter(Mandatory = $false)]
        [hashtable]
        $Fields = @{}
    )

    begin {
        $ErrorActionPreference = "Stop"

        $FieldPayload = @{}
        if ($Summary) { $FieldPayload.summary = $Summary }
        if ($Description) { $FieldPayload.description = ConvertTo-JiraADF -InputText $Description }
        foreach ($Key in $Fields.Keys) { $FieldPayload[$Key] = $Fields[$Key] }

        if ($FieldPayload.Count -eq 0) {
            Throw "Mindestens einer von -Summary, -Description oder -Fields muss angegeben werden."
        }

        $Payload = @{ fields = $FieldPayload }
    }

    process {
        Invoke-JiraApi -Method Put -Path "/rest/api/3/issue/$IssueKey" -Body $Payload | Out-Null
    }

    end {
        return Get-JiraIssue -IssueKey $IssueKey
    }
}