Public/Remove-SemaphoreProjectEnvironment.ps1

function Remove-SemaphoreProjectEnvironment
{
    <#
        .SYNOPSIS
            Removes an environment from a Semaphore project.

        .DESCRIPTION
            This function removes an environment from a Semaphore project.

        .PARAMETER ProjectId
            The ID of the project.

        .PARAMETER Id
            The ID of the environment to remove.

        .EXAMPLE
            Remove-SemaphoreProjectEnvironment -ProjectId 2 -Id 1

            Removes the environment with ID 1 from the project with ID 2.

        .NOTES
            To use this function, make sure you have already connected using the Connect-Semaphore function.
    #>


    [CmdletBinding(SupportsShouldProcess)]
    param (
        [Parameter(Mandatory = $true)]
        [ValidateRange(1, [int]::MaxValue)]
        [int]
        $ProjectId,

        [Parameter(Mandatory = $true)]
        [ValidateRange(1, [int]::MaxValue)]
        [int]
        $Id
    )

    begin
    {
        Write-Verbose -Message "Calling function $($MyInvocation.MyCommand)"
        if(!$Script:Session)
        {
            throw "Please run Connect-Semaphore first"
        }
    }
    process
    {
        #Region Send the request to remove
        try
        {
            if($PSCmdlet.ShouldProcess("Project $ProjectId", "Remove $Id"))
            {
                Invoke-RestMethod -Uri "$($Script:Config.url)/project/$ProjectId/environment/$Id" -Method Delete -WebSession $Script:Session | Out-Null
            }
        }
        catch
        {
            throw $_
        }
        #EndRegion
    }
    end
    {
    }
}