Functions/workflow-service/Remove-vROWorkflow.psm1

function Remove-vROWorkflow {
<#
    .SYNOPSIS
    Remove a vRO Workflow
    
    .DESCRIPTION
    Remove a vRO Workflow
    
    .PARAMETER Id
    Workflow ID

    .PARAMETER Force
    If the workflow is referenced by some other workflows, or is running, it is considered to be 'in use' and the delete operation will fail, unless the 'force' option is provided.

    .INPUTS
    System.String.
    Switch

    .OUTPUTS
    None

    .EXAMPLE
    Remove-vROWorkflow -Id "3f92d2dc-a9fa-4323-900b-ef97196184ea"

    .EXAMPLE
    Get-vROWorkflow -Name Test01 | Remove-vROWorkflow -Confirm:$false
#>

[CmdletBinding(SupportsShouldProcess,ConfirmImpact="High")]

    Param (

    [parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelinebyPropertyName=$true)]
    [ValidateNotNullOrEmpty()]
    [String[]]$Id,

    [parameter(Mandatory=$false)]
    [Switch]$Force
    )    

    begin {
    
    }
    
    process {    

        foreach ($WorkflowId in $Id){

            try {    
                
                if ($PSBoundParameters.ContainsKey("Force")) {
                
                    $URI = "/vco/api/workflows/$($WorkflowId)?force=true"
                }
                else {

                    $URI = "/vco/api/workflows/$($WorkflowId)"
                }

                if ($PSCmdlet.ShouldProcess($WorkflowId)){

                    # --- Run vRO REST Request
                    Invoke-vRORestMethod -Uri $URI -Method DELETE -Verbose:$VerbosePreference
                }
            }
            catch [Exception]{

                throw
            }
        }
    }
    end {
        
    }
}