Functions/Edit-LSCustomField.ps1


function Edit-LSCustomField {
    
    Param (
        [Parameter(Mandatory=$true)]
        [String]$Url,

        [Parameter(Mandatory=$true)]
        [String]$TicketID,
        
        [Parameter(Mandatory=$true)]
        [String]$CustomFieldName,

        [Parameter(Mandatory = $true, ParameterSetName = 'Value')]
        [string]$CustomFieldValue,

        [Parameter(Mandatory = $true, ParameterSetName = 'Values')]
        [string]$CustomFieldValues,

        [Parameter(Mandatory = $true, ParameterSetName = 'JSON')]
        [string]$CustomFieldJSON
    )
    
    # Checking value type used
    $FieldValue = if($PSCmdlet.ParameterSetName -eq 'Value') {
        "CustomFieldValue=$CustomFieldValue"
    } elseif($PSCmdlet.ParameterSetName -eq 'Values') {
        "CustomFieldValues=$CustomFieldValues"
    } elseif($PSCmdlet.ParameterSetName -eq 'JSON') {
        "CustomFieldJSON=$CustomFieldJSON"
    }
    
    # API call to edit custom field
    $Url = ($Url + "action=EditTicketCustomField&" + "TicketID=$TicketID&" + "CustomFieldName=$CustomFieldName&" + $FieldValue) 
    $Request = Invoke-WebRequest -Uri $Url -UseBasicParsing
    
    # Checking response
    if($Request.StatusCode -ne 200) {
        throw ("{0} {1}" -f $Request.StatusCode, $Request.StatusDescription)
    }
    
    # Success check and data return
    $Data = $Request.Content | ConvertFrom-Json
    if($Data.Success) {
        return $Data
    } else {
        Write-Error "Editing custom field failed, check output message."
        return $Data
    }
}