functions/Set-BBUser.ps1

function Set-BBUser
{
    [CmdletBinding(SupportsShouldProcess)]
    [Alias()]
    Param
    (
        [Alias("id")]
        [parameter(ValueFromPipelineByPropertyName)]$userId,
        [parameter(ValueFromPipelineByPropertyName)]$externalId,
        [parameter(ValueFromPipelineByPropertyName)]$dataSourceId = "",
        [parameter(ValueFromPipelineByPropertyName)]$userName = "",
        [parameter(ValueFromPipelineByPropertyName)]$studentId = "",
        [parameter(ValueFromPipelineByPropertyName)]$educationLevel = "",
        [parameter(ValueFromPipelineByPropertyName)]$gender = "",
        [parameter(ValueFromPipelineByPropertyName)]$birthDate = "",
        [parameter(ValueFromPipelineByPropertyName)]$institutionRoleIds = "",
        [parameter(ValueFromPipelineByPropertyName)]$systemRoleIds = "",
        [parameter(ValueFromPipelineByPropertyName)]$availability = "",
        [parameter(ValueFromPipelineByPropertyName)]$name = "",
        [parameter(ValueFromPipelineByPropertyName)]$job = "",
        [parameter(ValueFromPipelineByPropertyName)]$contact = "",
        [parameter(ValueFromPipelineByPropertyName)]$address = "",
        [parameter(ValueFromPipelineByPropertyName)]$locale = "",
        [string]$environment = 'Production'

    )

    Begin
    {

    }
    Process
    {
        $Body = @{}

        if($externalId){$Body.Add('externalId', $externalId)}
        if($dataSourceId){$Body.Add('dataSourceId', $dataSourceId)}
        if($userName){$Body.Add('userName', $userName)}
        if($studentId){$Body.Add('studentId', $studentId)}
        if($educationLevel){$Body.Add('educationLevel', $educationLevel)}

        if($gender){$Body.Add('gender', $gender)}
        if($birthDate){$Body.Add('birthDate', $birthDate)}
        if($institutionRoleIds){$Body.Add('institutionRoleIds', $institutionRoleIds)}
        if($systemRoleIds){$Body.Add('systemRoleIds', $systemRoleIds)}
        if($availability){$Body.Add('availability', $availability)}
        if($name){$Body.Add('name', $name)}
        if($job){$Body.Add('job', $job)}
        if($contact){$Body.Add('contact', $contact)}
        if($address){$Body.Add('address', $address)}
        if($locale){$Body.Add('locale', $locale)}
        if($avatar){$Body.Add('avatar', $avatar)}
        Invoke-BBRestMethod -API "/learn/api/public/v1/users/$userId"`
            -Method PATCH `
            -ContentType application/json `
            -Body $Body `
            -Environment $environment
        }
    End
    {
    }
}