functions/Add-SL1Alert.ps1

Function Add-SL1Alert {
  [OutputType([System.Management.Automation.psobject[]])]
  [CmdletBinding()]
    Param (
      [Parameter(Mandatory,Position=0)]
      [string]
      $Message,

      [Parameter(Position=1, ValueFromPipeline)]
      [ValidateScript({($_.pstypenames | select-object -first 1) -in @('device')})]
      [PSCustomObject[]]
      $Entity,

      [Parameter(Position=2)]
      [switch]
      $Passthru
  )

  Begin {
      Assert-SL1Connected
      if ($Limit -eq 0) {
          $Limit = $Script:SL1Defaults.DefaultLimit
      }
  }

  Process {
      $Body = ConvertFrom-Json "{message:""$($Message)""}"
      Foreach ($OneEntity in $Entity) {
          $Body | Add-Member -NotePropertyName 'aligned_resource' -NotePropertyValue $OneEntity.URI
          $WebResult = Invoke-SL1Request -Method Post -Uri "$($Script:SL1Defaults.APIROOT)/api/alert" -Body ( $Body | ConvertTo-Json)
          if ($Passthru) {
              $Entity
          } else {
              ConvertTo-Alert -SL1Entity (convertfrom-json $WebResult.Content)
          }
      }
  }
}