Power BI Integration
Connect Microsoft Power BI to live TATER compliance data. Build custom dashboards, executive scorecards, and multi-week trend reports using the TATER compliance data endpoint.
Overview
TATER exposes a dedicated flat-data endpoint at GET /api/reports/powerbi that returns denormalized JSON tables designed for direct import into Power BI, Excel, or any BI tool that supports web data sources. No transformation, no nested objects - just rows you can use.
The endpoint supports 21 datasets selectable via the dataset query parameter. The five core compliance datasets return purpose-built shapes:
| Dataset | Contents | Key fields |
|---|---|---|
controls | One row per control per scan type (latest scan per type) | controlId, title, application, scanType, status, isOverride, daysUntilOverrideExpiry |
scans | Scan history with pass/fail KPIs | scanId, scanDate, scanType, hostname, passCount, failCount, complianceRate |
risks | Risk register entries | riskId, title, category, likelihood, impact, riskScore, status, owner |
overrides | All risk acceptances | overrideId, controlId, type, expiryDate, daysUntilExpiry, isExpired |
overview | Single aggregate summary row | complianceRate, passCount, failCount, openRiskCount, activeOverrideCount, lastScanDate |
The remaining datasets are flat exports of the GRC registers, Power Platform inventory, and device fleet. Each returns the register's rows as-is (newest first, capped at 200 rows per request):
| Dataset | Contents |
|---|---|
vendors | Vendor / third-party risk register |
audits | Audit management records |
training | Security training campaigns |
bcpdr | Business continuity / disaster recovery plans |
policies | Policy library metadata (document content is excluded) |
changes | Change requests (Change Control module) |
exceptions | Exception / waiver records |
poam | POA&M (Plan of Action & Milestones) items |
monitoring-findings | Application monitoring findings (including connector-synced findings) |
tasks | Ops tickets / tasker tasks |
access-reviews | Access review campaigns |
control-tests | Control test records |
powerplatform | Power Platform GRC inventory (apps, connectors, environments, solutions) |
flows | Power Automate flow inventory |
devices | Device fleet inventory extracted from the latest endpoint scans (MDE + Intune) |
vulnerabilities | Per-device vulnerability findings (CVE inventory with severity enrichment) |
all | Every dataset in one response, as a keyed object: {"controls":[…],"scans":[…],…} |
Connect Power BI Desktop
The quickest path is the Web connector in Power BI Desktop. Each dataset is a separate query.
Step 1 - Get your API key
In TATER, go to Manage → Connections → API Keys and create or copy an existing key. Keep it handy - you will paste it as a custom HTTP header.
Step 2 - Add a Web data source
- In Power BI Desktop, click Home → Get Data → Web.
- Select Advanced.
- In the URL field, enter the endpoint for the dataset you want:
https://api.tatersecurity.com/api/reports/powerbi?dataset=controls - Under HTTP request header parameters, add:
Header:x-api-key| Value: your-api-key - API keys are bound to the organization that was active when the key was generated, so data is scoped automatically — no org header is needed. (An
x-organization-idheader is accepted only if it matches the key's own organization; a mismatch is rejected.) - Click OK. Power Query will load the JSON array.
- In the Power Query editor, click To Table, then expand the Record column to get individual columns.
- Click Close & Apply.
scans, risks, vendors, poam, devices, vulnerabilities) — so you have separate tables to relate in your data model.
Step 3 - Build relationships
The datasets share common fields for building relationships:
- controls ↔ overrides:
controls.controlId = overrides.controlId - controls ↔ scans:
controls.scanId = scans.scanId
Step 4 - Schedule refresh
Publish your report to Power BI Service. In the dataset settings, configure a Scheduled Refresh. TATER caches the response for 60 seconds, so daily or hourly refresh schedules work without triggering rate limits.
Store your API key as a data source credential in Power BI Service under Data source credentials → Edit credentials → Anonymous → Advanced → Add header.
Connect Excel / Microsoft Fabric
The same Web connector approach works in Excel (Data → From Web) and Microsoft Fabric (Dataflow Gen2 → New source → Web API). Use the same URL and API key header.
Query Parameters Reference
| Parameter | Values | Default | Notes |
|---|---|---|---|
dataset | Any dataset name from the tables above, or all | all | Single-dataset requests return a flat array; all returns a keyed object |
format | csv | - | Returns the dataset as a CSV file download instead of JSON. Single datasets only — all always returns JSON. |
status | Pass, Fail, Manual, Skip, Error | - | Filter controls by status. Controls dataset only. |
application | Any compliance zone name | - | Filter controls by application. Controls dataset only. |
limit | 1–100 | 30 | Max scans to return. Scans dataset only. |
Example URLs
# All datasets
https://api.tatersecurity.com/api/reports/powerbi
# Controls only
https://api.tatersecurity.com/api/reports/powerbi?dataset=controls
# Failing controls only
https://api.tatersecurity.com/api/reports/powerbi?dataset=controls&status=Fail
# Last 90 scans
https://api.tatersecurity.com/api/reports/powerbi?dataset=scans&limit=90
# Overview summary row
https://api.tatersecurity.com/api/reports/powerbi?dataset=overview
# Vendor register
https://api.tatersecurity.com/api/reports/powerbi?dataset=vendors
# Device fleet, as a CSV download
https://api.tatersecurity.com/api/reports/powerbi?dataset=devices&format=csv
CSV export
Add format=csv to any single-dataset request to receive the same rows as a CSV file (Content-Type: text/csv, served as an attachment named powerbi-<dataset>.csv). This is convenient for Excel, scheduled pulls with curl/PowerShell, or tools that prefer CSV over JSON.
# Failing controls as CSV
curl -H "x-api-key: $API_KEY" \
"https://api.tatersecurity.com/api/reports/powerbi?dataset=controls&status=Fail&format=csv" \
-o failing-controls.csv
format=csv applies to single datasets only. dataset=all always returns JSON, because multiple datasets cannot share one CSV table.
Authentication
The endpoint supports two authentication methods:
- API key (recommended for BI tools): Pass your API key in the
x-api-keyrequest header. Keys are bound to the organization they were generated in, so results are scoped automatically. - JWT Bearer token: Pass a valid TATER JWT in the
Authorization: Bearer <token>header. Requires Auditor role or higher.
Related Guides
- API Reference - authentication, error catalog, and the full endpoint reference (OpenAPI + Swagger UI)
- Power Automate Integration - Automate compliance workflows with the TATER custom connector
- Reports Guide - Built-in reports, CSV export, and the Trust Center
- Settings Reference - API key management and SIEM/webhook configuration
TATER