Private/SCIMFunctions.ps1



function Get-SCIMURL {
    [cmdletbinding()]
    param (
        [Parameter(Mandatory=$true)][string]$Api,
        [Parameter(Mandatory=$false)][string]$id,
        [Parameter(Mandatory=$false)][hashtable]$filters = @{}
    )
    
    $Root = '/api/2.0/preview/scim/v2/'

    if ($PSBoundParameters.ContainsKey('id')){
        $uri = $Root + $Api + "/" + $id
    }
    else{
        $uri = $Root + $Api
    }

    if ($PSBoundParameters.ContainsKey('filters')){
        [System.Collections.ArrayList]$filterList = @()
        $filters.GetEnumerator()  | ForEach-Object { $filterList.Add("$($_.Name)=$($_.Value)") } | Out-Null

        $uri = $uri + "?" + ($filterList -join "&")
    }
    return $uri
}


function Add-SCIMSchema {
    [cmdletbinding()]
    param (
        [string[]]$schemas
    )
    $res = @{"schemas"=$schemas} 
    return $res
}


function Add-SCIMValueArray {
    [cmdletbinding()]
    param (
        [string]$Parent,
        [string[]]$Values
    )
    
    $ResArray = @()
    ForEach ($e in $Values) {
        $ResArray += @{"value"=$e}
    }

    return @{"$Parent"=$ResArray} 
}