functions/Set-ZGEvent.ps1

function Set-ZGEvent {
    param (
        [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $True)]
        [long[]] $EventId,
        [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $false)]
        [string] $Message,
        [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $false)]
        [ValidateSet( "CloseProblem", "AcknowledgeEvent", "AddMessage", "ChangeSeverity", "UnacknowledgeEvent", "SuppressEvent", "UnsuppressEvent", "ChangeEventRankToCause", "ChangeEventRankToSymptom" )]
        [string] $Action,
        [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $false)]
        [ValidateSet("NotClassified", "Information", "Warning", "Average", "High", "Disaster" )]
        [string] $Severity
    )

    # ACTION #
    # 1 - close problem;
    # 2 - acknowledge event;
    # 4 - add message;
    # 8 - change severity;
    # 16 - unacknowledge event;
    # 32 - suppress event;
    # 64 - unsuppress event;
    # 128 - change event rank to cause;
    # 256 - change event rank to symptom.

    # SEVERITY #
    # 0 - not classified;
    # 1 - information;
    # 2 - warning;
    # 3 - average;
    # 4 - high;
    # 5 - disaster.

    Begin {
        $ActionHashtable = @{
            "CloseProblem"             = 1
            "AcknowledgeEvent"         = 2
            "AddMessage"               = 4
            "ChangeSeverity"           = 8
            "UnacknowledgeEvent"       = 16
            "SuppressEvent"            = 32
            "UnsuppressEvent"          = 64
            "ChangeEventRankToCause"   = 128
            "ChangeEventRankToSymptom" = 256
        }

        $SeverityHashtable = @{
            "NotClassified" = 0
            "Information"   = 1
            "Warning"       = 2
            "Average"       = 3
            "High"          = 4
            "Disaster"      = 5
        }
    
        $parameters = @{
            eventids = $EventId
            message  = $Message
            action   = $ActionHashtable[$Action]
        }

        if ($PSBoundParameters.ContainsKey('Severity')) {
            $parameters.severity = $SeverityHashtable[$Severity]
        }
    }

    Process {
        $response = Invoke-ZGRequest -Method "POST" -Body @{
            "method"  = "event.acknowledge"
            "params"  = $parameters
            "auth"    = $script:RequestAuth
        }
        return $response.result
    }

    End {}
}