Public/New-LMAlertNote.ps1

<#
.SYNOPSIS
Creates a new note for one or more LogicMonitor alerts.

.DESCRIPTION
The New-LMAlertNote function creates a new note for one or more LogicMonitor alerts. It requires the alert IDs and the note content as mandatory parameters.

.PARAMETER Ids
Specifies the alert IDs for which the note needs to be created. This parameter accepts an array of strings.

.PARAMETER Note
Specifies the content of the note to be created. This parameter accepts a string.

.EXAMPLE
New-LMAlertNote -Ids @("12345","67890") -Note "This is a sample note."

This example creates a new note with the content "This is a sample note" for the alerts with IDs "12345" and "67890".

.INPUTS
None. You cannot pipe objects to this function.

.OUTPUTS
System.String. Returns a success message if the note is created successfully.
#>

Function New-LMAlertNote {

    [CmdletBinding()]
    Param (
        [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
        [Alias("Id")]
        [String[]]$Ids,
        [Parameter(Mandatory)]
        [String]$Note
    )
    Begin{}
    Process{
        #Check if we are logged in and have valid api creds
        If ($Script:LMAuth.Valid) {
            
            #Build header and uri
            $ResourcePath = "/alert/alerts/note"
    
            Try {
    
                $Data = @{
                    alertIds = $Ids
                    note  = $Note
                }
    
                $Data = ($Data | ConvertTo-Json)
    
                $Headers = New-LMHeader -Auth $Script:LMAuth -Method "POST" -ResourcePath $ResourcePath -Data $Data
                $Uri = "https://$($Script:LMAuth.Portal).logicmonitor.com/santaba/rest" + $ResourcePath
    
                Resolve-LMDebugInfo -Url $Uri -Headers $Headers[0] -Command $MyInvocation -Payload $Data

                #Issue request
                $Response = Invoke-WebRequest -Uri $Uri -Method "POST" -Headers $Headers[0] -WebSession $Headers[1] -Body $Data
    
                If($Response.StatusCode -eq 200){
                    Return "Successfully updated note for alert id(s): $Ids"
                }
            }
            Catch [Exception] {
                $Proceed = Resolve-LMException -LMException $PSItem
                If (!$Proceed) {
                    Return
                }
            }
        }
        Else {
            Write-Error "Please ensure you are logged in before running any commands, use Connect-LMAccount to login and try again."
        }
    }
    End{}
}