Public/Remove-LMNormalizedProperty.ps1

<#
.SYNOPSIS
Removes normalized properties from LogicMonitor.

.DESCRIPTION
The Remove-LMNormalizedProperty cmdlet removes normalized properties from LogicMonitor.

.PARAMETER Alias
The alias name of the normalized property to remove.

.EXAMPLE
Remove-LMNormalizedProperty -Alias "location"
Removes the normalized property with alias "location".

.INPUTS
None.

.OUTPUTS
Returns the response from the API after removing the normalized property.

.NOTES
This function requires valid API credentials to be logged in. Use Connect-LMAccount to log in before running this command.
#>

function Remove-LMNormalizedProperty {

    [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'None')]
    param (
        [Parameter(Mandatory = $true)]
        [String]$Alias
    )

    #Check if we are logged in and have valid api creds
    begin {}
    process {
        if ($Script:LMAuth.Valid -and $Script:LMAuth.Type -eq "SessionSync") {

            #Build header and uri
            $ResourcePath = "/normalizedProperties/alias"

            #Loop through each property and build the body
            $Body = [PSCustomObject]@{
                data = [PSCustomObject]@{
                    items = @()
                }
            }

            $Body.data.items += [PSCustomObject]@{
                alias = $Alias
                model = "normalizedProperties"
            }

            $Body = $Body | ConvertTo-Json -Depth 10

            $Message = "Alias: $Alias"

            if ($PSCmdlet.ShouldProcess($Message, "Remove Normalized Property")) {
                
                $Headers = New-LMHeader -Auth $Script:LMAuth -Method "DELETE" -ResourcePath $ResourcePath -Version 4
                $Uri = "https://$($Script:LMAuth.Portal).$(Get-LMPortalURI)" + $ResourcePath

                Resolve-LMDebugInfo -Url $Uri -Headers $Headers[0] -Command $MyInvocation

                #Issue request
                $Response = Invoke-LMRestMethod -CallerPSCmdlet $PSCmdlet -Uri $Uri -Method "DELETE" -Headers $Headers[0] -WebSession $Headers[1] -Body $Body
                return $Response
            }
        }
        else {
             Write-Error "This cmdlet is for internal use only at this time does not support LMv1 or Bearer auth. Use Connect-LMAccount to login with the correct auth type and try again"
        }
    }
    end {}
}