Public/Set-IAMCoreConnector.ps1

function Set-IAMCoreConnector {
    [CmdletBinding(SupportsShouldProcess = $true)]
    param (
        [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
        [ValidatePattern("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$")] # Is a guid connector object id
        [string]$Id,

        [Parameter(Mandatory = $false)]
        [string]$Description,

        [Parameter(Mandatory = $false)]
        [System.Collections.Hashtable] $Configuration = @{},

        [Parameter(Mandatory = $false)]
        [System.Collections.Hashtable] $Secrets = @{}
    )

    process {
        $Existing = Get-IAMCoreConnector -Id $Id

        if (!$Existing.Id) {
            throw "IAM Core Connector $Id not found"
        }

        $Existing = $Existing | ConvertTo-Json -Depth 10 | ConvertFrom-Json -Depth 10 -AsHashtable

        if ($PSCmdlet.MyInvocation.BoundParameters.ContainsKey("Description")) {
            $Existing.Description = $Description
        }

        if ($PSCmdlet.MyInvocation.BoundParameters.ContainsKey("Configuration")) {
            $Existing.Configuration = $Configuration
        }

        if ($PSCmdlet.MyInvocation.BoundParameters.ContainsKey("Secrets")) {
            $Existing.Configuration = $Secrets
        }

        if ($PSCmdlet.ShouldProcess("Updating IAM Core connector $Id")) {
            $Body = $Existing | ConvertTo-Json -Depth 10
            $Result = Invoke-RestMethod -Uri "$Script:APIRoot/sync/connectors/$Id" -Headers (Get-IAMCoreHeader) -Method Put -Body $Body -ContentType "application/json"  -SkipHttpErrorCheck -StatusCodeVariable "statuscode"

            if ($Result.IsSuccess) {
                # return $Result.Data
            }
            else {
                throw "Failed to update IAM Core connector (Status code $statuscode): $($Result)"
            }
        }
    }
}