Public/Get-DifyWorkspace.ps1

function Get-DifyWorkspace {
    [CmdletBinding()]
    param(
        [String] $Id = "",
        [String] $Name = "",
        [String] $Search = ""
    )

    $Endpoint = Join-Url -Segments @($env:PSDIFY_URL, "/console/api/workspaces")
    $Method = "GET"
    try {
        $Response = Invoke-DifyRestMethod -Uri $Endpoint -Method $Method -SessionOrToken $script:PSDIFY_CONSOLE_AUTH
    }
    catch {
        throw "Failed to obtain workspaces: $_"
    }

    if (-not $Response.workspaces) {
        return @()
    }

    $Workspaces = @()
    foreach ($Workspace in $Response.workspaces) {
        $WorkspaceObject = [PSCustomObject]@{
            Id        = $Workspace.id
            Name      = $Workspace.name
            Plan      = $Workspace.plan
            Status    = $Workspace.status
            CreatedAt = Convert-UnixTimeToLocalDateTime($Workspace.created_at)
            Current   = $Workspace.current
        }
        $Workspaces += $WorkspaceObject
    }

    if ($Id) {
        $Workspaces = $Workspaces | Where-Object { $_.Id -eq $Id }
    }
    if ($Name) {
        $Workspaces = $Workspaces | Where-Object { $_.Name -eq $Name }
    }
    if ($Search) {
        $Workspaces = $Workspaces | Where-Object { $_.Id -like "*$($Search)*" -or $_.Name -like "*$($Search)*" }
    }

    return $Workspaces
}