Public/set-AllegisIDNsource.ps1

function set-AllegisIDNsource {
param(
    [string]$orgname,
    [string]$accesstoken,
    [string]$sourceid,
    [string]$name,
    [string]$description,
    [string]$owner,
    [boolean]$accounts,
    [boolean]$provisioning,
    [pscustomobject]$correlationConfig
    )
    $originalSource=get-AllegisIDNsource -orgName $orgname -sourceid $sourceid -accessToken $accesstoken -detailed $true
    $header=get-AllegisIDNprivateHeader $accessToken
    $privateuribase="https://$orgname.api.identitynow.com"
    $url="$privateuribase/cc/api/source/update/$sourceid"
    
    if ($name -eq $null){$name=$originalSource.name}
    if ($description -eq $null){$description=$originalSource.description}
    if ($provisioning -eq $null){$provisioning=$originalSource.useForProvisioning}
    if ($accounts -eq $null){$accounts=$originalSource.useForAccounts}
    $ownerid=$originalSource.owner.id
    if ($owner -ne $null){
        $owneridentity=(get-AllegisIDNIdentity -orgname $orgname -uid $owner -accesstoken $accesstoken)
        $ownerdetails=@($owneridentity).where{$_.alias -eq $owner}
        if ($ownerdetails.id.count -eq 1){$ownerid=$ownerdetails[0].id}
    }  
    if ($correlationConfig -ne $null){
        if ($correlationConfig.attributeAssignments -ne $null){$correlationConfig=$correlationConfig.attributeAssignments}

        $json=$correlationConfig | ConvertTo-Json -Depth 10 -Compress
        $json='{"attributeAssignments":' + $json + '}'
        $body="correlationConfig=$json"
    }else{
    $body="name=$name&description=$description&ownerId=$ownerid&useForProvisioning=$provisioning&useForAccounts=$accounts"
    }
    $response=Invoke-WebRequest -Uri $url -Method Post -UseBasicParsing -Headers $header -Body ([uri]::EscapeDataString($body)) -ContentType 'application/x-www-form-urlencoded'
    $sourceAccountProfile=$response.Content | ConvertFrom-Json
    return $sourceAccountProfile
}