Public/Find-IAMCoreIdentity.ps1

<#
.SYNOPSIS
    Finds CoreIdentity objects based on a text string.

.DESCRIPTION
    This function searches for CoreIdentity objects in the IAM Core based on a provided text string.

.EXAMPLE
    Find-IAMCoreIdentity -Text "john doe"
#>

function Find-IAMCoreIdentity {
    [CmdletBinding(DefaultParameterSetName = "Default")]
    param (
        [Parameter(Mandatory = $true, ParameterSetName = "Default", Position = 0)]
        [ValidateLength(3, 100)]
        [string] $Text
    )


    process {
        $Uri = "$Script:APIRoot/sync/coreobjects/identities/search?text=$Text"
        Write-Verbose "Getting IAM Core identity relationships from URI: $Uri"
        
        $Result = Invoke-RestMethod -Uri $Uri -Headers (Get-IAMCoreHeader) -SkipHttpErrorCheck -StatusCodeVariable StatusCode -Verbose:$false -ConnectionTimeoutSeconds 60 -OperationTimeoutSeconds 60

        if ($StatusCode -ne 200) {
            if ($Result.Errors) {
                throw "Failed to find identities with text '$Text': $($Result.Errors -join ', ')"
            }
            else {
                throw "Failed to find identities with text '$Text': Status code $StatusCode, Response: $($Result)"
            }
        }

        return $Result.Data  
    }
}