The Power BI REST APIs provide service endpoints for embedding, user resources management, administration and governance.
For more information about Power BI REST APIs, see Power BI REST APIs overview.
The Microsoft.PowerBI.Api library for .NET enables you to work with Power BI REST APIs in your .NET or NET Core application.
Install the NuGet package directly from the Visual Studio Package Manager console.
Install-Package Microsoft.PowerBI.Api
Below are basic examples demonstrating some of the most common capabilities of the SDK. Full examples including authentication are avaliable in PowerBI-Developer-Samples
...
using (PowerBIClient client = new PowerBIClient(credentials))
{
Console.WriteLine("\r*** DATASETS ***\r");
// List of datasets in a workspace
Datasets datasets = client.Datasets.GetDatasets(groupId);
foreach(Dataset ds in datasets.Value)
{
Console.WriteLine(ds.Id + " | " + ds.Name);
}
Console.WriteLine("\r*** REPORTS ***\r");
// List of reports in a workspace
Reports reports = client.Reports.GetReports(groupId);
foreach (Report rpt in reports.Value)
{
Console.WriteLine(rpt.Id + " | " + rpt.Name + " | DatasetID = " + rpt.DatasetId);
}
}
...
Embed tokens are used to provide access to Power BI artifacts like reports and datasets to embed into an application. To create a report embed token you will need a Power BI Embedded capacity, and the Ids of the workspaces and artifacts to provide access to. For more information about Power BI Embedded visit the Power BI Embedded Analytics Playground
...
using (PowerBIClient client = new PowerBIClient(credentials))
{
// Create a request for getting Embed token
var tokenRequest = new GenerateTokenRequestV2(datasets: datasets, reports: reports, targetWorkspaces: workspaces, identities: identities);
// Get Embed token
var embedToken = client.EmbedToken.GenerateToken(tokenRequest);
}
...
Returns a list of reports for the organization. The caller must have administrator rights.
...
using (PowerBIClient client = new PowerBIClient(credentials))
{
Console.WriteLine("\r*** REPORTS ***\r");
// List of reports in the organization.
AdminReports reports = client.Reports.GetReportsAsAdmin();
foreach (AdminReport rpt in reports.Value)
{
Console.WriteLine(rpt.Id + " | " + rpt.Name);
}
}
...