public/Domain/Get-FabricDomainWorkspace.ps1
<#
.SYNOPSIS Retrieves the workspaces associated with a specific domain in Microsoft Fabric. .DESCRIPTION The `Get-FabricDomainWorkspace` function fetches the workspaces for the given domain ID. .PARAMETER DomainId The ID of the domain for which to retrieve workspaces. .EXAMPLE Get-FabricDomainWorkspace -DomainId "12345" Fetches workspaces for the domain with ID "12345". .NOTES - Requires `$FabricConfig` global configuration, including `BaseUrl` and `FabricHeaders`. - Calls `Test-TokenExpired` to ensure token validity before making the API request. Author: Tiago Balabuch #> function Get-FabricDomainWorkspace { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$DomainId ) try { # Step 1: Ensure token validity Write-Message -Message "Validating token..." -Level Debug Test-TokenExpired Write-Message -Message "Token validation completed." -Level Debug # Step 2: Construct the API URL $apiEndpointUrl = "{0}/admin/domains/{1}/workspaces" -f $FabricConfig.BaseUrl, $DomainId Write-Message -Message "API Endpoint: $apiEndpointUrl" -Level Debug # Step 3: Make the API request $response = Invoke-RestMethod ` -Headers $FabricConfig.FabricHeaders ` -Uri $apiEndpointUrl ` -Method Get ` -ErrorAction Stop ` -SkipHttpErrorCheck ` -ResponseHeadersVariable "responseHeader" ` -StatusCodeVariable "statusCode" # Step 4: Validate the response code if ($statusCode -ne 200) { Write-Message -Message "Unexpected response code: $statusCode from the API." -Level Error Write-Message -Message "Error: $($response.message)" -Level Error Write-Message "Error Code: $($response.errorCode)" -Level Error return $null } # Step 5: Handle empty response if (-not $response) { Write-Message -Message "No data returned from the API." -Level Warning return $null } # Step 6: Handle results if ($response) { return $response.value } else { Write-Message -Message "No workspace found for the '$DomainId'." -Level Warning return $null } } catch { # Step 7: Capture and log error details $errorDetails = Get-ErrorResponse($_.Exception) Write-Message -Message "Failed to retrieve domain workspaces. Error: $errorDetails" -Level Error } } |