Power BI · Arazzo Workflow

Power BI Inventory a Workspace's Content

Version 1.0.0

Find a workspace by OData filter and enumerate every dataset, report, dashboard, and import it contains.

1 workflow 1 source API 1 provider
View Spec View on GitHub AnalyticsBusiness IntelligenceDashboardsData AnalysisReportingVisualizationArazzoWorkflows

Provider

power-bi

Workflows

workspace-content-inventory
Resolve a workspace by name and list all of its content.
Locates a workspace using an OData filter and enumerates its datasets, reports, dashboards, and imports into a single inventory result.
5 steps inputs: workspaceFilter outputs: dashboards, datasets, groupId, groupName, imports, reports
1
findWorkspace
getGroups
Filter the workspace list down to the target workspace and capture its identifier, which every content collection below is scoped by.
2
inventoryDatasets
getDatasetsInGroup
List the workspace's datasets, the models that every report and dashboard in the workspace ultimately depends on.
3
inventoryReports
getReportsInGroup
List the workspace's reports, each of which carries the datasetId it is bound to so dataset-to-report dependencies can be mapped.
4
inventoryDashboards
getDashboardsInGroup
List the workspace's dashboards, including their data classification.
5
inventoryImports
getImportsInGroup
List the workspace's imports to record how the content arrived and whether any import is still publishing or has failed.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Power BI Inventory a Workspace's Content
  summary: Find a workspace by OData filter and enumerate every dataset, report, dashboard, and import it contains.
  description: >-
    The governance pattern behind any Power BI tenant audit or content
    migration. Workspace-scoped content is exposed through separate collection
    operations, so a full picture of what a workspace holds requires resolving
    the workspace identifier and then walking each collection in turn. This
    workflow filters the workspace list by name, then inventories the datasets,
    reports, dashboards, and imports underneath it. Every step spells out its
    request inline so the flow can be read and executed without opening the
    underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: powerBiApi
  url: ../openapi/power-bi-rest-api-openapi.yml
  type: openapi
workflows:
- workflowId: workspace-content-inventory
  summary: Resolve a workspace by name and list all of its content.
  description: >-
    Locates a workspace using an OData filter and enumerates its datasets,
    reports, dashboards, and imports into a single inventory result.
  inputs:
    type: object
    required:
    - workspaceFilter
    properties:
      workspaceFilter:
        type: string
        description: >-
          An OData filter expression selecting the workspace, for example
          "name eq 'Finance Reporting'".
  steps:
  - stepId: findWorkspace
    description: >-
      Filter the workspace list down to the target workspace and capture its
      identifier, which every content collection below is scoped by.
    operationId: getGroups
    parameters:
    - name: "$filter"
      in: query
      value: $inputs.workspaceFilter
    - name: "$top"
      in: query
      value: 1
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.value.length > 0
      type: jsonpath
    outputs:
      groupId: $response.body#/value/0/id
      groupName: $response.body#/value/0/name
      isOnDedicatedCapacity: $response.body#/value/0/isOnDedicatedCapacity
      capacityId: $response.body#/value/0/capacityId
  - stepId: inventoryDatasets
    description: >-
      List the workspace's datasets, the models that every report and dashboard
      in the workspace ultimately depends on.
    operationId: getDatasetsInGroup
    parameters:
    - name: groupId
      in: path
      value: $steps.findWorkspace.outputs.groupId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      datasets: $response.body#/value
  - stepId: inventoryReports
    description: >-
      List the workspace's reports, each of which carries the datasetId it is
      bound to so dataset-to-report dependencies can be mapped.
    operationId: getReportsInGroup
    parameters:
    - name: groupId
      in: path
      value: $steps.findWorkspace.outputs.groupId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      reports: $response.body#/value
  - stepId: inventoryDashboards
    description: List the workspace's dashboards, including their data classification.
    operationId: getDashboardsInGroup
    parameters:
    - name: groupId
      in: path
      value: $steps.findWorkspace.outputs.groupId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      dashboards: $response.body#/value
  - stepId: inventoryImports
    description: >-
      List the workspace's imports to record how the content arrived and
      whether any import is still publishing or has failed.
    operationId: getImportsInGroup
    parameters:
    - name: groupId
      in: path
      value: $steps.findWorkspace.outputs.groupId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      imports: $response.body#/value
  outputs:
    groupId: $steps.findWorkspace.outputs.groupId
    groupName: $steps.findWorkspace.outputs.groupName
    datasets: $steps.inventoryDatasets.outputs.datasets
    reports: $steps.inventoryReports.outputs.reports
    dashboards: $steps.inventoryDashboards.outputs.dashboards
    imports: $steps.inventoryImports.outputs.imports