Public/Set-DuneDeploymentSequence.ps1

function Set-DuneDeploymentSequence {
    [CmdletBinding(DefaultParameterSetName = "Default")]
    param (
        [Parameter(Mandatory, ParameterSetName = "Id")]
        [guid]$Id,

        [Parameter(Mandatory, ParameterSetName = "Deployment", ValueFromPipeline)]
        [DuneDeployment]$Deployment,

        [SequenceUsage]$Usage = "OnStart",

        [Hashtable]$Batches #format: @{'0'=@{PostBatchDelayMinutes=3;Items=@([DuneComputeNodeObject])};'1'=@{PostBatchDelayMinutes=2;Items=@([DuneComputeNodeObject]])}
    )

    begin {
        Write-Debug "$($MyInvocation.MyCommand)|begin"
        $ReturnObjects = @()
        $BaseUri = 'deployments/{0}/sequences'
        $Method = 'PATCH'
    }

    process {
        Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)"

        if ($PSCmdlet.ParameterSetName -eq 'Deployment') {
            $Id = $Deployment.Id
        }

        # Build Uri
        $Uri = $BaseUri -f $Id

        $Body = @{
            Usage = $Usage.toString()
            Batches = $Batches
        }

        $ResultItems = Invoke-DuneApiRequest -Method $Method -Uri $Uri -Body $Body

    }

    end {
        Write-Debug "$($MyInvocation.MyCommand)|end"
        return $ReturnObjects
    }
}