Public/PropertyContacts/Update-AspirePropertyContact.ps1

<#
.SYNOPSIS
    Updates an existing property contact in the Aspire API.
.DESCRIPTION
    Uses Invoke-AspireRequest to perform a PUT request to the /PropertyContacts endpoint.
.PARAMETER PropertyID
    The ID of the property (required).
.PARAMETER ContactID
    The ID of the contact (required).
.PARAMETER PrimaryContact
    Optional boolean indicating if this is the primary contact.
.PARAMETER BillingContact
    Optional boolean indicating if this is the billing contact.
.PARAMETER EmailInvoiceContact
    Optional boolean indicating if this is the email invoice contact.
.PARAMETER EmailNotificationsContact
    Optional boolean indicating if this is the email notifications contact.
.PARAMETER SMSNotificationsContact
    Optional boolean indicating if this is the SMS notifications contact.
.OUTPUTS
    The response from the API containing the result.
.EXAMPLE
    Update-AspirePropertyContact -PropertyID 123 -ContactID 456 -PrimaryContact $false
#>

function Update-AspirePropertyContact {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true)]
        [int]$PropertyID,
        [Parameter(Mandatory = $true)]
        [int]$ContactID,
        [bool]$PrimaryContact = $null,
        [bool]$BillingContact = $null,
        [bool]$EmailInvoiceContact = $null,
        [bool]$EmailNotificationsContact = $null,
        [bool]$SMSNotificationsContact = $null
    )

    $body = @{
        PropertyID = $PropertyID
        ContactID = $ContactID
    }

    if ($PSBoundParameters.ContainsKey('PrimaryContact')) {
        $body.PrimaryContact = $PrimaryContact
    }
    if ($PSBoundParameters.ContainsKey('BillingContact')) {
        $body.BillingContact = $BillingContact
    }
    if ($PSBoundParameters.ContainsKey('EmailInvoiceContact')) {
        $body.EmailInvoiceContact = $EmailInvoiceContact
    }
    if ($PSBoundParameters.ContainsKey('EmailNotificationsContact')) {
        $body.EmailNotificationsContact = $EmailNotificationsContact
    }
    if ($PSBoundParameters.ContainsKey('SMSNotificationsContact')) {
        $body.SMSNotificationsContact = $SMSNotificationsContact
    }

    return Invoke-AspireRequest -Method PUT -Path "/PropertyContacts" -Body $body -ApiVersion $null
}