Public/Get-DifyCurrentWorkspace.ps1
|
function Get-DifyCurrentWorkspace { [CmdletBinding()] param() if (Compare-SimpleVersion -Version $env:PSDIFY_VERSION -Ge "1.17.0") { # /workspaces/current/summary returns id/name/role/plan; /workspaces list provides status/created_at $SummaryEndpoint = Join-Url -Segments @($env:PSDIFY_URL, "/console/api/workspaces/current/summary") try { $Summary = Invoke-DifyRestMethod -Uri $SummaryEndpoint -Method "GET" -SessionOrToken $script:PSDIFY_CONSOLE_AUTH } catch { throw "Failed to obtain current workspace: $_" } $ListEndpoint = Join-Url -Segments @($env:PSDIFY_URL, "/console/api/workspaces") try { $ListResponse = Invoke-DifyRestMethod -Uri $ListEndpoint -Method "GET" -SessionOrToken $script:PSDIFY_CONSOLE_AUTH } catch { throw "Failed to obtain current workspace: $_" } $ListEntry = $ListResponse.workspaces | Where-Object { $_.id -eq $Summary.id } | Select-Object -First 1 $CurrentWorkspace = [PSCustomObject]@{ Id = $Summary.id Name = $Summary.name Plan = $Summary.plan Status = $ListEntry.status CreatedAt = Convert-UnixTimeToLocalDateTime($ListEntry.created_at) Role = $Summary.role } } else { if (Compare-SimpleVersion -Version $env:PSDIFY_VERSION -Ge "1.10.1") { $Endpoint = Join-Url -Segments @($env:PSDIFY_URL, "/console/api/workspaces/current") $Method = "POST" } else { $Endpoint = Join-Url -Segments @($env:PSDIFY_URL, "/console/api/workspaces/current") $Method = "GET" } $Body = @{} | ConvertTo-Json try { $Response = Invoke-DifyRestMethod -Uri $Endpoint -Method $Method -Body $Body -SessionOrToken $script:PSDIFY_CONSOLE_AUTH } catch { throw "Failed to obtain current workspace: $_" } $CurrentWorkspace = [PSCustomObject]@{ Id = $Response.id Name = $Response.name Plan = $Response.plan Status = $Response.status CreatedAt = Convert-UnixTimeToLocalDateTime($Response.created_at) Role = $Response.role } } return $CurrentWorkspace } |