The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
I am trying to deploy notebooks, lakehouses and powerbi reports using the fabric rest api : Items - Create Notebook - REST API (Notebook) | Microsoft Learn
I saw some samples in the github repository on how to get the token for fabric : fabric-samples/features-samples/fabric-apis/LongRunningOperation-Polling.ps1 at main · microsoft/fab...
but the token I get when using https://api.fabric.microsoft.com is user_impersonation token which is not able to perform get or even list calls.
below is my code
$global:baseUrl = "https://api.fabric.microsoft.com/v1"
$global:resourceUrl = "https://api.fabric.microsoft.com"
$global:fabricHeaders = @{}
$global:GetNotebooksUrl = "{0}/workspaces/{1}/notebooks"
function SetFabricHeaders() {
# Login to Azure
Connect-AzAccount -AuthScope -Tenant '72f988bf-86f1-41af-91ab-2d7cd011db47' | Out-Null
# Get authentication
$fabricToken = (Get-AzAccessToken -ResourceUrl $global:resourceUrl).Token
$global:fabricHeaders = @{
'Content-Type' = "application/json"
'Authorization' = "Bearer {0}" -f $fabricToken
}
}
try {
SetFabricHeaders
$workspaceId = ""
$get_notebooks_url = $global:GetNotebooksUrl -f $global:baseUrl, $workspaceId
Write-Host $global:fabricHeaders
Write-Host "Getting notebooks from workspace: $get_notebooks_url"
$operationState = Invoke-RestMethod -Headers $global:fabricHeaders -Uri $get_notebooks_url -Method GET
Write-Host "Notebooks : $($operationState)"
}
catch {
$errorResponse = GetErrorResponse($_.Exception)
Write-Host "Failed to Perform request. Error reponse: $errorResponse" -ForegroundColor Red
}
I want to get token which has read and write scopes over workspace.
Solved! Go to Solution.
I took a slightly different stance on this, which might be able to help you out.
For one pipeline I commented out the connect-azaccount in the PowerShell script and connected to it outside of the script instead using a service principal account as below:
Thanks @KevinChant for the answer,
using service principal solution also works as you have shown, in my case also, there was a slight parsing error of the response, but the token works fine.
Developers can use both ways to get the token and automate their deployments.
I took a slightly different stance on this, which might be able to help you out.
For one pipeline I commented out the connect-azaccount in the PowerShell script and connected to it outside of the script instead using a service principal account as below: