Skip to content

Commit

Permalink
Merge pull request #12910 from MicrosoftDocs/main
Browse files Browse the repository at this point in the history
1/22/2025 PM Publish
  • Loading branch information
Albertyang0 authored Jan 22, 2025
2 parents c080c98 + 772ddcf commit 4359719
Show file tree
Hide file tree
Showing 5 changed files with 263 additions and 5 deletions.
2 changes: 1 addition & 1 deletion powerbi-docs/collaborate-share/service-url-filters.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ Special characters, spaces, and leading numbers in table and column names requir
|**Column**@**Number** | @ is 00x40 | Column\_x0040\_Number |
|**[Column]** | [ is 0x005B ] is 0x005D | \_x005B\_Column_x005D_ |
|**Column+Plus** | + is 0x2B | Column\_x002B\_Plus |
|**2TableName**|2 is x0032|\_x0032\_TableName\_|
|**2TableName**|2 is x0032|\_x0032\_TableName|

Table\_x0020\_Name/Column\_x002B\_Plus eq 3
![Screenshot of table visual rendering special characters for Unicode.](media/service-url-filters/power-bi-special-characters1.png)
Expand Down
6 changes: 3 additions & 3 deletions powerbi-docs/developer/embedded/embed-paginated-reports.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Embed paginated reports in your Power BI embedded analytics application
description: Learn how to integrate or embed a Power BI paginated report into an embedded analytics application.
title: Embed paginated reports in your Power BI application
description: Learn how to integrate or embed a Power BI paginated report into a Power BI embedded analytics application.
author: mberdugo
ms.author: monaberdugo
ms.reviewer:
Expand All @@ -9,7 +9,7 @@ ms.service: powerbi
ms.subservice: powerbi-developer
ms.custom: ''
ms.date: 01/08/2024

#Customer intent: As a developer, I want to embed paginated reports in my application to provide my users with interactive and integrated reports.
---

# Embed Power BI paginated reports
Expand Down
4 changes: 3 additions & 1 deletion powerbi-docs/developer/visuals/TOC.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,16 @@
href: create-r-based-power-bi-desktop.md
- name: "Build a funnel plot from R script to R visual"
href: funnel-plot-from-r.md
- name: Import Power BI custom visuals
- name: About Power BI custom visuals
items:
- name: "Import a Power BI visual"
href: import-visual.md
- name: "Visuals FAQ"
href: power-bi-custom-visuals-faq.yml
- name: "Examples of Power BI visuals"
href: samples.md
- name: "Get custom visual metadata"
href: scanner-api.md
- name: Develop your own custom visual
items:
- name: "Set up your environment for developing a Power BI visual"
Expand Down
252 changes: 252 additions & 0 deletions powerbi-docs/developer/visuals/scanner-api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,252 @@
---
title: Power BI visual scanner API
description: Learn how to use the report generated by the scanner API to receive metadata about a Power BI visual.
author: mberdugo
ms.author: monaberdugo
ms.reviewer: gennadyl
ms.service: powerbi
ms.subservice: powerbi-custom-visuals
ms.topic: concept-article
ms.date: 10/10/2024
#customer intent: As a Power BI visual developer, I want to learn how to use the scanner API to receive metadata about a Power BI visual so that I can better understand the visual and its usage.
---

# Scanner API

The [Workspace information scanner API](/rest/api/power-bi/admin/workspace-info-post-workspace-info) is a REST API that provides metadata about Power BI reports, datasets, and visuals. The scanner API is useful for understanding what kind of information is contained in the report, who created it, what restrictions apply to it, etc.

If the scanner API is invoked with URI parameter `reportObjects` set to true, the reports section in the output contains information about the visuals used in each report.

## Scanner output example

The following snippet is an example of the reports section of the scanner API output:

```json
"reports": [
{
"reportType": "PowerBIReport",
"id": "a901f1d6-0848-428a-80c0-98311dc1679b",
"name": "ContosoSales",
"datasetId": "2f9bf0f9-b840-4376-a60a-47a6ae07c775",
"createdDateTime": "2024-07-02T09:28:03.077",
"modifiedDateTime": "2024-07-02T09:32:37.63",
"modifiedBy": "[email protected]",
"createdBy": "[email protected]",
"modifiedById": "d1814d1d-a355-40b1-8d86-0101ae965820",
"createdById": "d1814d1d-a355-40b1-8d86-0101ae965820",
"sensitivityLabel": {
"labelId": "cebb6849-d26a-4cfa-8f15-030e9d5d9a65"
},
"users": [
{
"reportUserAccessRight": "Owner",
"emailAddress": "[email protected]",
"displayName": "Admin EM3",
"identifier": "[email protected]",
"graphId": "d1814d1d-a355-40b1-8d86-0101ae965820",
"principalType": "User",
"userType": "Member"
}
],
"sections": [
{
"displayName": "Page 2",
"visuals": [
{
"visualType": "clusteredBarChart"
}
]
},
{
"displayName": "Page 1",
"visuals": [
{
"visualType": "Sunburst1445472000808"
},
{
"visualType": "WordCloud1447959067750"
}
]
}
]
}
]
```

As you can see, the reports section contains a `sections` list. Each section contains the section name and lists the type of each visual in that section:

```json
"sections": [
{
"displayName": "Page 1",
"visuals": [
{
"visualType": "Sunburst1445472000808"
},
{
"visualType": "WordCloud1447959067750"
}
]
}
]
```

To get information about a visual (for example, its name, whether it’s a core visual, public custom visual or private visual, certified, etc.) check the visual type against multiple data sources. Then add to the data about the visual data based on the information you find.

## Core visuals

The following list contains the types of [Core (built-in) visuals](./power-bi-custom-visuals.md#core-power-bi-visuals):

```json
"actionButton"
"animatedNumber"
"areaChart"
"barChart"
"basicShape"
"shape"
"card"
"cardVisual"
"multiRowCard"
"clusteredBarChart"
"clusteredColumnChart"
"columnChart"
"donutChart"
"funnel"
"gauge"
"hundredPercentStackedBarChart"
"hundredPercentStackedColumnChart"
"image"
"lineChart"
"lineStackedColumnComboChart"
"lineClusteredColumnComboChart"
"map"
"filledMap"
"azureMap"
"ribbonChart"
"shapeMap"
"treemap"
"pieChart"
"realTimeLineChart"
"scatterChart"
"stackedAreaChart"
"table"
"matrix"
"tableEx"
"pivotTable"
"accessibleTable"
"slicer"
"advancedSlicerVisual"
"pageNavigator"
"bookmarkNavigator"
"filterSlicer"
"textbox"
"aiNarratives"
"waterfallChart"
"scriptVisual"
"pythonVisual"
"kpi"
"keyDriversVisual"
"decompositionTreeVisual"
"qnaVisual"
"scorecard"
"rdlVisual"
"dataQueryVisual"
"debugVisual"
"heatMap"
```

If the visual type is a core visual, there's no need to look for it in other data sources, like AppSource catalog.

## AppSource (public) custom visuals

AppSource visuals are public Custom Visuals available from [Microsoft AppSource](https://appsource.microsoft.com/marketplace/apps?product=power-bi-visuals). You can fetch visual information from the public [catalog endpoint](https://catalogapi.azure.com/offers?storefront=appsource&api-version=2018-08-01-beta&$filter=offertype+eq+%27PowerBIVisuals%27) that AppSource provides.

The resulting json contains a list of items and a link to the next page, `nextPageLink`. For example:

```json
{
"items": [
{
}
],
"nextPageLink": https://catalogapi.azure.com/offers?storefront=appsource&api-version=2018-08-01-beta&$filter=offertype+eq+%27PowerBIVisuals%27&$skiptoken=W3sidG9rZW4iOiIrUklEOn4yVk53QUxkRkVIeHNhQUFBQUFCQUNBPT0jUlQ6MSNUUkM6MTg1I0lTVjoyI0lFTzo2NTU2NyNRQ0Y6OCIsInJhbmdlIjp7Im1pbiI6IjA1QzFFNzBCM0IzOTUwIiwibWF4IjoiMDVDMUU3QUIxN0U3QTYifX1d
}
```

Typically, a full list of visuals is about 3-4 pages long. For complete information about the visual, you must fetch the entire report.

Each item in the items list is a custom visual and contains all the information stored about it in AppSource. This document references only relevant fields:

```json


"powerBIVisualId": "visualType",

"displayName": "Mapbox Custom Visual",

"publisherDisplayName": "OKVIZ Corp.",

"enrichedData": {

"tags": [

"PowerBICertified"

],

},

"categoryIds": [

"pbiv-other",

"PowerBICertified"

],

"id": "xviz.inforiver-charts"
```

The following fields can be used to enhance information about a visual provided by Scanner API:

* "powerBIVisualId": used to find correct item, which should be the same as `visualType` from Scanner output

* "displayName": visual name

* Tag “PowerBICertified” means that visual is Certified

* "publisherDisplayName": publisher name

* "id" is used to calculate PDP link page: `https://appsource.microsoft.com/<locale> /product/PowerBIVisuals/<id>`

## Private Custom Visuals (from a file)

Private visuals added to a Power BI report using the [Import a visual from a file](./import-visual.md#import-a-visual-file-from-your-local-computer-into-power-bi) option. If a visual isn't a core visual and not an AppSource visual, it’s a private visual. For private visuals, we provide only their `visualType`.

## Organization visuals

Both AppSource visuals and private visuals can be added to the Organization’s visuals store which exists for each organization (tenant). If a private custom visual is added to an organization’s visual store, the suffix _OrgStore is added to its `visualType`. In contrast, when an AppSource visual is added directly to an organization’s visual store, it keeps its original `visualType`.

To determine if a public custom visual (from AppSource) is in an organization's store:

1. Get the visual’s information using information from the [AppSource catalog](#appsource-public-custom-visuals).
1. Download the organization’s visuals list (in CSV format) from **Power BI** -> **Admin Portal** -> **Organization Visuals** -> **Export**.
1. If the visual’s `visualType` appears in the downloaded list, this visual is an organizational visual. In this case, update visual name to match the one in the CSV file.

> [!NOTE]
>
> * There is no difference between an AppSource custom visual and its counterpart in the organization store, including its code and version. The only difference might be in the visual name.
> * If the tenant admin downloads a custom visual *.pbiviz* file from AppSource and adds it to the organization store using Add Visual -> From File, the suffix *_OrgStore* is added and when exported, it will appear as a *Private file*. A private file visual doesn't get upgraded and is treated as a private visual in the Org Store.
Demo application to use Scanner API

Original code:

`https://github.com/microsoft/Fabric-metadata-scanning`

Updated code includes visual info enrichment:
`https://github.com/gennadylaventman/Fabric-metadata-scanning/tree/dev/glaventman/enrichCV`

## Related content

[Power BI custom visuals](./power-bi-custom-visuals.md)
4 changes: 4 additions & 0 deletions powerbi-docs/report-server/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ See [Download Power BI Report Server](download-powerbi-report-server.md) for mor
## January 2025

### Power BI Report Server
- *Version: 1.22.9153.7886 (build 15.0.1117.98), Released: January 22, 2025*
- Bug fixes
- Fixed issue with new property 'EnableCustomURLInKPI' not getting configured correctly.

- *Version: 1.22.9137.4867 (build 15.0.1117.95), Released: January 13, 2025*
- Features
- Custom Visual API shipped with release - version v5.10.0
Expand Down

0 comments on commit 4359719

Please sign in to comment.