Add a self-service report builder page that lets users explore and run any report available from Microsoft Graph or reports.office.com for a selected tenant.
Overview
A new page under Tenant > Reports > Report Builder that dynamically discovers available reports via the API and renders the results in a data table — no hardcoded report list required.
User Experience
The toolbar (modelled on the existing report toolbar pattern) contains three controls:
- Source selector — toggle/dropdown between Graph (
graph.microsoft.com/beta/reports) and Office (reports.office.com/odataux). Changing this resets the report selection and re-fetches the report list. - Report selector — autocomplete populated by
GET /api/ListGraphReports?tenantFilter=&type=graph(ortype=office). Shows report name and type (function vs navigationLink for Graph; entity set name for Office). - Period selector — dropdown limited to
D7,D30,D90,D180. Hidden/disabled for reports that don't accept a period parameter (navigationLink / office reports).
Once all required fields are selected, the page fetches GET /api/ListGraphReports?tenantFilter=&type=&report=&period= and renders the JSON response in a CippDataTable with auto-detected columns.
API Endpoint
Already implemented: ListGraphReports
- No
reportparam → returns discovery list for the giventype - With
reportparam → returns the report data as JSON - Supports
type=graphandtype=office - Supports
periodparam (D7/D30/D90/D180, default D30)
Acceptance Criteria
- Source, report, and period controls visible in toolbar
- Report list populates dynamically from the discovery endpoint
- Period selector hidden for office reports and Graph navigationLink reports
- Table renders once a report is selected (and period if required)
- Tenant selector uses the global current tenant
- Loading and error states handled gracefully
