Public/ContactCustomFields/New-AspireContactCustomField.ps1

<#
.SYNOPSIS
    Creates a new contact custom field in the Aspire API.
.DESCRIPTION
    Uses Invoke-AspireRequest to perform a POST request to the /ContactCustomFields endpoint.
.PARAMETER ContactCustomFieldDefinitionID
    The ID of the contact custom field definition (required).
.PARAMETER ContactID
    The ID of the contact (required).
.PARAMETER ColumnValue
    Optional value for the custom field.
.OUTPUTS
    The response from the API containing the custom field ID.
.EXAMPLE
    New-AspireContactCustomField -ContactCustomFieldDefinitionID 1 -ContactID 123 -ColumnValue "Value"
#>

function New-AspireContactCustomField {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true)]
        [int]$ContactCustomFieldDefinitionID,
        [Parameter(Mandatory = $true)]
        [int]$ContactID,
        [string]$ColumnValue = $null
    )

    $body = @{
        ContactCustomFieldDefinitionID = $ContactCustomFieldDefinitionID
        ContactID = $ContactID
    }

    if ($ColumnValue) {
        $body.ColumnValue = $ColumnValue
    }

    return Invoke-AspireRequest -Method POST -Path "/ContactCustomFields" -Body $body -ApiVersion $null
}