Pax8API/Public/Quoting/Update-Pax8Quote.ps1

<#
.SYNOPSIS
Update quote by ID
.DESCRIPTION
Updates the details of an existing quote.
OpenAPI: PUT /v2/quotes/{quoteId}
Scope: Quoting. Audience: https://api.pax8.com.
.PARAMETER QuoteId
path parameter 'quoteId'.
.PARAMETER ExpiresOn
body parameter 'expiresOn'.
.PARAMETER IntroMessage
body parameter 'introMessage'.
.PARAMETER Published
body parameter 'published'.
.PARAMETER Status
body parameter 'status'. Suggested values: draft, assigned, sent, closed, declined, accepted, changes_requested, expired, pending.
.PARAMETER TermsAndDisclaimers
body parameter 'termsAndDisclaimers'.
.PARAMETER Body
Raw request body. This can be a hashtable, PSCustomObject, or pre-built JSON string.
.EXAMPLE
Update-Pax8Quote -QuoteId '00000000-0000-0000-0000-000000000000'
.LINK
https://devx.pax8.com/openapi/quoting-endpoints.json
#>

function Update-Pax8Quote {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [guid]$QuoteId,

        [Parameter(Mandatory = $true)]
        [datetime]$ExpiresOn,

        [Parameter(Mandatory = $true)]
        [string]$IntroMessage,

        [Parameter(Mandatory = $true)]
        [bool]$Published,

        [Parameter(Mandatory = $true)]
        [ValidateSet('draft', 'assigned', 'sent', 'closed', 'declined', 'accepted', 'changes_requested', 'expired', 'pending')]
        [string]$Status,

        [Parameter(Mandatory = $true)]
        [string]$TermsAndDisclaimers,

        [Parameter(ValueFromPipeline = $true)]
        [object]$Body,

        [switch]$Raw
    )

    process {
        $boundParameters = @{}
        foreach ($entry in $PSBoundParameters.GetEnumerator()) {
            $boundParameters[$entry.Key] = $entry.Value
        }

        Invoke-Pax8ApiOperation -CommandName $MyInvocation.MyCommand.Name -Parameters $boundParameters
    }
}