modules/Azure/Infrastructure/Private/Get-CIEMAzureProviderApi.ps1

function Get-CIEMAzureProviderApi {
    [CmdletBinding()]
    [OutputType('CIEMAzureProviderApi[]')]
    param(
        [Parameter()][int]$Id,
        [Parameter()][string]$Name,
        [Parameter()][string]$Service,
        [Parameter()][switch]$HasPermissions
    )

    $ErrorActionPreference = 'Stop'
    $conditions = @(); $params = @{}

    if ($PSBoundParameters.ContainsKey('Id')) { $conditions += "id = @id"; $params.id = $Id }
    if ($PSBoundParameters.ContainsKey('Name')) { $conditions += "name = @name"; $params.name = $Name }
    if ($PSBoundParameters.ContainsKey('Service')) { $conditions += "service = @service"; $params.service = $Service }
    if ($HasPermissions) { $conditions += "permissions IS NOT NULL" }

    $query = "SELECT * FROM azure_provider_apis"
    if ($conditions.Count -gt 0) { $query += " WHERE " + ($conditions -join ' AND ') }

    $rows = @(Invoke-CIEMQuery -Query $query -Parameters $params)
    @(foreach ($row in $rows) {
        $obj = [CIEMAzureProviderApi]::new()
        $obj.Id = $row.id
        $obj.Name = $row.name
        $obj.BaseUrl = $row.base_url
        $obj.Version = $row.version
        $obj.Service = $row.service
        $obj.Path = $row.path
        $obj.Disabled = [bool]$row.disabled
        if ($row.permissions) {
            $obj.Permissions = $row.permissions | ConvertFrom-Json -AsHashtable
        }
        $obj
    })
}