Power BI · Arazzo Workflow

Power BI Audit Gateway-Bound Datasources

Version 1.0.0

Walk the gateway inventory and cross-reference a dataset's datasources to prove which gateway backs it.

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

Provider

power-bi

Workflows

gateway-datasource-audit
Reconcile a dataset's datasources against a gateway's registered datasources.
Lists gateways, inspects one gateway and the datasources registered on it, and reads the dataset's datasources so the gateway binding can be verified.
4 steps inputs: datasetId, gatewayId outputs: datasetDatasources, datasetGatewayId, gatewayDatasources, gatewayName, gatewayType, gateways
1
listGateways
getGateways
Enumerate every gateway the caller can see, establishing the set of gateways available to bind datasources against.
2
inspectGateway
getGateway
Read the target gateway to confirm it exists and to record whether it is a shared Resource gateway or a Personal gateway.
3
listGatewayDatasources
getGatewayDatasources
List the datasources registered on the gateway. A dataset can only refresh through this gateway if its datasources appear in this collection.
4
listDatasetDatasources
getDatasources
Read the dataset's own datasources and capture the gatewayId reported on the first one, which is the value to compare against the audited gateway.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Power BI Audit Gateway-Bound Datasources
  summary: Walk the gateway inventory and cross-reference a dataset's datasources to prove which gateway backs it.
  description: >-
    The pattern behind diagnosing "why won't this dataset refresh". An
    on-premises dataset refreshes only when every one of its datasources is
    bound to a datasource registered on a reachable gateway. Because dataset
    datasources and gateway datasources are exposed through different
    collections, answering the question means reading both sides and comparing
    the gateway identifiers. This workflow enumerates the gateways, inspects the
    target gateway and its registered datasources, then reads the dataset's own
    datasources so the two sides can be reconciled. 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: gateway-datasource-audit
  summary: Reconcile a dataset's datasources against a gateway's registered datasources.
  description: >-
    Lists gateways, inspects one gateway and the datasources registered on it,
    and reads the dataset's datasources so the gateway binding can be verified.
  inputs:
    type: object
    required:
    - gatewayId
    - datasetId
    properties:
      gatewayId:
        type: string
        description: The identifier of the gateway to audit.
      datasetId:
        type: string
        description: The identifier of the dataset whose datasources are being reconciled.
  steps:
  - stepId: listGateways
    description: >-
      Enumerate every gateway the caller can see, establishing the set of
      gateways available to bind datasources against.
    operationId: getGateways
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      gateways: $response.body#/value
  - stepId: inspectGateway
    description: >-
      Read the target gateway to confirm it exists and to record whether it is
      a shared Resource gateway or a Personal gateway.
    operationId: getGateway
    parameters:
    - name: gatewayId
      in: path
      value: $inputs.gatewayId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      gatewayName: $response.body#/name
      gatewayType: $response.body#/type
      gatewayAnnotation: $response.body#/gatewayAnnotation
  - stepId: listGatewayDatasources
    description: >-
      List the datasources registered on the gateway. A dataset can only refresh
      through this gateway if its datasources appear in this collection.
    operationId: getGatewayDatasources
    parameters:
    - name: gatewayId
      in: path
      value: $inputs.gatewayId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      gatewayDatasources: $response.body#/value
  - stepId: listDatasetDatasources
    description: >-
      Read the dataset's own datasources and capture the gatewayId reported on
      the first one, which is the value to compare against the audited gateway.
    operationId: getDatasources
    parameters:
    - name: datasetId
      in: path
      value: $inputs.datasetId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      datasetDatasources: $response.body#/value
      datasetGatewayId: $response.body#/value/0/gatewayId
      datasetDatasourceType: $response.body#/value/0/datasourceType
  outputs:
    gateways: $steps.listGateways.outputs.gateways
    gatewayName: $steps.inspectGateway.outputs.gatewayName
    gatewayType: $steps.inspectGateway.outputs.gatewayType
    gatewayDatasources: $steps.listGatewayDatasources.outputs.gatewayDatasources
    datasetDatasources: $steps.listDatasetDatasources.outputs.datasetDatasources
    datasetGatewayId: $steps.listDatasetDatasources.outputs.datasetGatewayId