Skip to main content
ms-power-bi icon

Microsoft Power BI Connector

Sourcenpm · v0.2.0API DocsAPI ChangelogConnector Changelog

Description​

Microsoft Power BI is a business intelligence and data visualization service from Microsoft. This component allows you to manage datasets, create and delete rows, update table schemas, and list groups, reports, and tables within Power BI.

API Documentation​

This component was built using the Microsoft Power BI REST API currently utilizing v1.0.

Connections​

OAuth 2.0​

key: oauth

The Microsoft Power BI component authenticates requests through the Microsoft Graph API using OAuth 2.0.

Prerequisites​

  • A Microsoft Azure account with access to the Azure Portal
  • Appropriate permissions to register applications in Azure Active Directory

Setup Steps​

To create an OAuth 2.0 application for Power BI:

  1. Navigate to the Azure Portal and sign in
  2. Select Azure Active Directory from the menu
  3. Click App registrations and then New registration
  4. Configure the application:
    • Enter a name for the application
    • Choose the appropriate Supported account types (single tenant or multi-tenant)
    • Under Redirect URI, select Web and enter: https://oauth2.prismatic.io/callback
  5. Click Register to create the application
  6. After registration, locate and copy the Application (client) ID from the Overview page
  7. Navigate to Certificates & secrets in the left menu
  8. Click New client secret, provide a description and expiration period, then click Add
  9. Copy the Value of the newly created client secret immediately (it will not be shown again)
  10. Navigate to API permissions in the left menu
  11. Click Add a permission and select Power BI Service
  12. Select Delegated permissions and choose the appropriate scopes based on the integration requirements
  13. Ensure the offline_access scope is included to maintain the OAuth connection and receive refresh tokens

For detailed instructions, refer to Microsoft's documentation on registering Power BI apps.

Configure the Connection​

Configure the OAuth 2.0 connection with the following values:

  • Client ID: Enter the Application (client) ID from the Azure Portal
  • Client Secret: Enter the Value of the client secret created in step 9
  • Scopes: Add the Power BI scopes configured in step 12. Refer to the Microsoft Graph API permissions reference for available options. The offline_access scope is essential for maintaining the connection
  • Authorize URL and Token URL:
    • For single-tenant apps: Use the tenant-specific endpoints that include the Azure Tenant ID
    • For multi-tenant apps: Use the common endpoints (default configuration)
Tenant Configuration

The OAuth endpoints depend on the tenant configuration. Single-tenant applications require the Azure Tenant ID in the authorization and token URLs. Multi-tenant applications can use the common endpoints. Consult Microsoft's authentication documentation for details.

Refresh Token Requirements

The offline_access scope must be included in the app registration. Without this scope, users will need to re-authenticate every hour when the access token expires.

Verify Connection​

After configuring the connection, test the authentication by executing a Power BI action. Refer to the Microsoft Power BI REST API documentation for available API operations and endpoints.

Microsoft requires Azure AD app registrations used in multi-tenant deployments to complete a publisher verification process. This review confirms the app developer's identity, giving end users confidence that they are authorizing a legitimate, verified application.

Azure AD app registrations have two distinct verification concepts that affect how users experience the authentication flow.

Publisher Verification​

Complete publisher verification before deploying to end users. Without it, the Microsoft consent screen displays "Unverified" next to the app name. This reduces user trust and may prevent users in organizations with strict Azure AD policies from being able to authorize the app at all.

To verify the publisher:

  1. Ensure the organization has a Microsoft Partner Network (MPN) account
  2. In the Microsoft Entra Admin Center, open the app registration
  3. Under Branding & properties, click Add a verified publisher
  4. Enter the MPN ID and confirm

Once verified, the consent screen displays the organization name with a verified badge instead of "Unverified."

Apps requesting application permissions (permissions that act without a signed-in user) or high-privilege delegated permissions require admin consent before any user in a Microsoft 365 tenant can authenticate. Without admin consent, users see a "Need admin approval" error.

A tenant administrator can grant consent using either method:

Method 1 — Admin Consent URL:

Navigate to the following URL, replacing {tenant} with the Directory tenant ID and {client_id} with the Application client ID:

https://login.microsoftonline.com/{tenant}/adminconsent?client_id={client_id}

Method 2 — Microsoft Entra Admin Center:

  1. Navigate to Microsoft Entra Admin Center → Enterprise applications
  2. Select the app registration
  3. Under Permissions, click Grant admin consent for [organization name]
Delegated vs. Application Permissions

Delegated permissions (user-level) typically do not require admin consent unless they are classified as high privilege. Application permissions always require admin consent. Review the Microsoft Graph permissions reference to identify which permissions require consent.

InputNotesExample
Authorize URL

The OAuth 2.0 Authorization URL. Use tenant-specific endpoint for single-tenant apps: https://login.microsoftonline.com/{TENANT-ID}/oauth2/authorize

https://login.microsoftonline.com/common/oauth2/authorize
Client ID

The Application (client) ID from the Azure Portal. Navigate to Azure Active Directory > App registrations to find this value.

12345678-1234-1234-1234-123456789abc
Client Secret

The Client Secret from the Azure Portal. Navigate to Certificates & secrets to generate a new client secret.

Scopes

Space-separated list of Power BI OAuth scopes. Must include 'offline_access' for refresh tokens. See Microsoft Graph permissions reference for available scopes.

https://analysis.windows.net/powerbi/api/Dataset.ReadWrite.All offline_access
Token URL

The OAuth 2.0 Token URL. Use tenant-specific endpoint for single-tenant apps: https://login.microsoftonline.com/{TENANT-ID}/oauth2/v2.0/token

https://login.microsoftonline.com/common/oauth2/v2.0/token

Triggers​

New Records​

Retrieves existing and ongoing records for a selected Power BI resource type. Load history once, check for changes on a schedule, or both. | key: pollChangesTrigger

InputNotesExample
Connection
Look-back Date

The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the initial sync seeds each record created on or after this date once, for resource types that record a creation date, ignoring the visibility filters.

2026-01-01
Resource Type

The type of resource to poll for new records.

Show New Records

Include newly created records in trigger results.

true

This trigger retrieves existing and ongoing records for a selected Power BI resource type. Load history once, check for changes on a schedule, or both.

How It Works​

On each scheduled recurrence, the trigger fetches all records of the selected resource type from the Power BI API. For resource types that expose a creation timestamp, records are classified as created when their timestamp is after the last poll time. For resource types without timestamps, the trigger tracks known IDs and reports any new IDs as created.

On the first recurrence for an ID-based resource, the trigger records the current set of IDs and emits nothing. Subsequent recurrences compare against the stored set.

Initial sync

An initial sync applies only to Datasets, the one resource type that records a creation date (createdDate). For Groups (Workspaces) and Reports, the Look-back Date is ignored and the first recurrence records the current IDs as described above. A sync seeds a complete starting state, so Show New Records, which would otherwise drop new records from the results, is ignored while it runs; it is the only input ignored. The sync begins on the first recurrence when the trigger has no stored position and a Look-back Date (YYYY-MM-DD) is set, and returns each dataset created after midnight UTC on that date once. Left empty, there is no sync and the trigger starts from its first recurrence.

The sync covers one full listing of datasets, fetched within the first recurrence whether or not batching is on. The trigger then stores the time that recurrence started as its position, and later recurrences report datasets created after it. No field in the payload marks the handoff.

Resource Type still applies. The trigger has no page-size or field-selection input.

Batching

Batching is enabled per flow on this trigger: each new record is dispatched as its own execution, or grouped by the configured batch size. Batch size and batch concurrency can both be overridden per instance. Raising concurrency increases the request volume sent to Power BI.

To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default or choose Custom batch size. Batch Concurrency is optional; leave it blank for no batch-level limit.

With batching off, downstream steps read results.body.data.created and results.body.data.updated. With batching on, those fields do not exist. Each execution receives a single { changeType, record } object. Any step reading the older shape must be updated before batching is enabled. Because batching is enabled per flow, the change is scoped to that flow.

Returned Data​

The trigger returns an object with two arrays: created for new records and updated (always empty for this trigger). Fields shown are representative. The full response object includes additional properties.

Example Response
{
"created": [
{
"id": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
"name": "SalesAnalyticsDashboard",
"addRowsAPIEnabled": false,
"configuredBy": "admin@example.com",
"isRefreshable": true,
"isEffectiveIdentityRequired": false,
"isEffectiveIdentityRolesRequired": false,
"isOnPremGatewayRequired": false,
"targetStorageMode": "Unknown",
"createdDate": "2026-01-15T10:30:00.000Z",
"createReportEmbedURL": "https://app.powerbi.com/reportEmbed",
"qnaEmbedURL": "https://app.powerbi.com/qnaEmbed",
"upstreamDatasets": [],
"users": [],
"webUrl": "https://app.powerbi.com/groups/example-workspace/datasets/cfafbeb1-8037-4d0c-896e-a46fb27ff229"
}
],
"updated": []
}
Batched Item Shape

When batching is enabled, each execution receives a single item:

{
"changeType": "created",
"record": {
"id": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
"name": "SalesAnalyticsDashboard",
"createdDate": "2026-01-15T10:30:00.000Z"
}
}

Data Sources​

Select Dataset​

Select a dataset from your Power BI workspace | key: selectDataset | type: picklist

InputNotesExample
Connection

Select Table​

Select a table from a dataset | key: selectTable | type: picklist

InputNotesExample
Connection
Dataset ID

The unique identifier of the dataset. A dataset is a collection of tables that can be used to generate reports and visuals in Power BI. Datasets must be 'Push' datasets to be accessible via API.

cfafbeb1-8037-4d0c-896e-a46fb27ff229

Select Workspace​

Select a workspace from your Power BI account | key: selectWorkspace | type: picklist

InputNotesExample
Connection

Actions​

Create Dataset​

Creates a new dataset on 'My Workspace' | key: createDataset

InputNotesExample
Columns

An array of column definitions that define the table schema. Each column must have a name and dataType. Supported data types: Int64, Double, Boolean, DateTime, String, Decimal.

[
  {
    "name": "ProductID",
    "dataType": "Int64"
  },
  {
    "name": "Name",
    "dataType": "string"
  },
  {
    "name": "Category",
    "dataType": "string"
  },
  {
    "name": "IsCompete",
    "dataType": "bool"
  },
  {
    "name": "ManufacturedOn",
    "dataType": "DateTime"
  },
  {
    "name": "Sales",
    "dataType": "Int64",
    "formatString": "Currency"
  }
]
Connection
Dataset Name

The name for the new dataset to create.

SalesDataset
Table Name

The name of the table within the dataset.

SalesData
Example Payload for Create Dataset⤓
Loading…

Create Rows​

Adds new data rows to the specified table within the specified dataset from 'My Workspace' | key: createRow

InputNotesExample
Connection
Dataset ID

The unique identifier of the dataset. A dataset is a collection of tables that can be used to generate reports and visuals in Power BI. Datasets must be 'Push' datasets to be accessible via API.

cfafbeb1-8037-4d0c-896e-a46fb27ff229
Rows

An array of row objects to insert into the table. Each object should contain key-value pairs matching the table's column names.

[
  {
    "ProductID": 1,
    "Name": "Adjustable Race",
    "Category": "Components",
    "IsCompete": true,
    "ManufacturedOn": "07/30/2014"
  },
  {
    "ProductID": 2,
    "Name": "LL Crankarm",
    "Category": "Components",
    "IsCompete": true,
    "ManufacturedOn": "07/30/2014"
  },
  {
    "ProductID": 3,
    "Name": "HL Mountain Frame - Silver",
    "Category": "Bikes",
    "IsCompete": true,
    "ManufacturedOn": "07/30/2014"
  }
]
Table Name

The name of the table within the dataset.

SalesData
Example Payload for Create Rows⤓
Loading…

Delete Rows​

Deletes all rows from the specified table within the specified dataset from 'My Workspace' | key: deleteRows

InputNotesExample
Connection
Dataset ID

The unique identifier of the dataset. A dataset is a collection of tables that can be used to generate reports and visuals in Power BI. Datasets must be 'Push' datasets to be accessible via API.

cfafbeb1-8037-4d0c-896e-a46fb27ff229
Table Name

The name of the table within the dataset.

SalesData
Example Payload for Delete Rows⤓
Loading…

List Datasets​

Returns a list of datasets from 'My Workspace' | key: listDatasets

InputNotesExample
Connection
Page Offset

The number of entries to skip for pagination. Used to retrieve results beyond the first page.

100
Top

The maximum number of results to return. Must be a value between 1 and 1000.

100
Example Payload for List Datasets⤓
Loading…

List Groups​

Returns a list of workspaces the user has access to | key: listGroups

InputNotesExample
Connection
Page Offset

The number of entries to skip for pagination. Used to retrieve results beyond the first page.

100
Top

The maximum number of results to return. Must be a value between 1 and 1000.

100
Example Payload for List Groups⤓
Loading…

List Reports​

Returns a list of reports from 'My Workspace' | key: listReports

InputNotesExample
Connection
Page Offset

The number of entries to skip for pagination. Used to retrieve results beyond the first page.

100
Top

The maximum number of results to return. Must be a value between 1 and 1000.

100
Example Payload for List Reports⤓
Loading…

List Tables​

Returns a list of tables tables within the specified dataset from 'My Workspace' | key: listTables

InputNotesExample
Connection
Dataset ID

The unique identifier of the dataset. A dataset is a collection of tables that can be used to generate reports and visuals in Power BI. Datasets must be 'Push' datasets to be accessible via API.

cfafbeb1-8037-4d0c-896e-a46fb27ff229
Page Offset

The number of entries to skip for pagination. Used to retrieve results beyond the first page.

100
Top

The maximum number of results to return. Must be a value between 1 and 1000.

100
Example Payload for List Tables⤓
Loading…

Raw Request​

Send raw HTTP request to Microsoft Power BI | key: rawRequest

InputNotesExample
Connection
Data

The HTTP body payload to send to the URL.

{"exampleKey": "Example Data"}
File Data

File Data to be sent as a multipart form upload.

[{key: "example.txt", value: "My File Contents"}]
File Data File Names

File names to apply to the file data inputs. Keys must match the file data keys above.

Form Data

The Form Data to be sent as a multipart form upload.

[{"key": "Example Key", "value": new Buffer("Hello World")}]
Header

A list of headers to send with the request.

User-Agent: curl/7.64.1
Max Retry Count

The maximum number of retries to attempt. Specify 0 for no retries.

0
Method

The HTTP method to use.

Query Parameter

A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2.

Response Type

The type of data you expect in the response. You can request json, text, or binary data.

json
Retry On All Errors

If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors.

false
Retry Delay (ms)

The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled.

0
Timeout

The maximum time that a client will await a response to its request

2000
URL

Input the path only (/profiles), The base URL is already included (https://api.powerbi.com/v1.0/myorg). For example, to connect to https://api.powerbi.com/v1.0/myorg/profiles, only /profiles is entered in this field.

/profiles
Use Exponential Backoff

Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored.

false

Update Table​

Updates the metadata and schema for the specified table within the specified dataset from 'My Workspace' | key: updateTable

InputNotesExample
Columns

An array of column definitions that define the table schema. Each column must have a name and dataType. Supported data types: Int64, Double, Boolean, DateTime, String, Decimal.

[
  {
    "name": "ProductID",
    "dataType": "Int64"
  },
  {
    "name": "Name",
    "dataType": "string"
  },
  {
    "name": "Category",
    "dataType": "string"
  },
  {
    "name": "IsCompete",
    "dataType": "bool"
  },
  {
    "name": "ManufacturedOn",
    "dataType": "DateTime"
  },
  {
    "name": "Sales",
    "dataType": "Int64",
    "formatString": "Currency"
  }
]
Connection
Dataset ID

The unique identifier of the dataset. A dataset is a collection of tables that can be used to generate reports and visuals in Power BI. Datasets must be 'Push' datasets to be accessible via API.

cfafbeb1-8037-4d0c-896e-a46fb27ff229
Table Name

The name of the table within the dataset.

SalesData
Example Payload for Update Table⤓
Loading…

Changelog​

2026-11-05​

Updated spectral to 10.39.0

2026-11-03​

Published the component as an npm package, so code-native integrations can install it and call its actions, triggers and data sources from code with TypeScript types

2026-10-20​

Updated the New Records trigger to support large data syncs:

  • Added opt-in batching to the New Records trigger, dispatching each changed record individually or in configured batches; enabling it changes the shape a downstream step receives
  • Added an optional Look-back Date input to the New Records trigger for performing an initial sync of Datasets, the one resource type that records a creation date. The initial sync begins on the first recurrence and backfills every dataset created on or after the specified date, seeding each once and ignoring the visibility filter; later recurrences are unaffected. Leave it empty to start from the first recurrence with no backfill

2026-04-30​

Updated spectral version

2026-04-21​

Added New Records polling trigger that checks for new groups, datasets, or reports in Microsoft Power BI on a configured schedule

2026-04-07​

Added global debug support across all actions for improved troubleshooting

2026-03-16​

Improved input field documentation with formatted URL links for better readability

2025-10-29​

Added inline data sources for workspaces, datasets, and tables with pagination support