Skip to content

REST API reference

Generated from the API’s OpenAPI 3.1.1 description. Every installation serves the same description at /ir-api/v1/openapi.json (no token needed), so tools such as Postman, Bruno or an OpenAPI client generator can read it directly.

Reports of IntensiveReports (Microsoft 365 / Entra ID). Switched off until an administrator turns it on in Settings > API access, which also issues the tokens: send Authorization: Bearer ir1.<client id>.<secret>. A client sees only the reports of the product areas it is granted (Read < Refresh < Run scan per area) minus its opt-out list; any other report answers 404 like an unknown one. GET /reports describes each report: columns, named filters and parameters (a report’s parameters are query parameters of GET /reports/{id}, e.g. ?upn=). An on-demand report that is still loading answers 202 with state Loading - call again. State SwitchedOff: an administrator switched the report’s data off in Settings; nothing is fetched (refresh and scan answer 409). Every call is audited. Rate limit: per client per minute (429 with Retry-After). The MCP server for AI assistants is /ir-mcp with the same tokens.

The reports this client may read

Id, title, the question it answers, product area, mode (Derived / OnDemand / Manual), licence and permissions it needs, columns (key, title, kind, description), named filters, parameters, related reports and the actions this client may take.

StatusMeaning
200OK
401Unauthorized
429Too Many Requests

Read one report

State, freshness, metrics, charts, notes and one page of rows. filter: named filters, comma-separated (all must match); page / size: paging (size at most 1000); timeout: seconds to wait for a load (at most 60). The report’s parameters (see listReports) are further query parameters. 202: still loading, call again.

ParameterInTypeRequiredDescription
idpathstringYes
filterquerystringNo
pagequeryinteger,stringNo
sizequeryinteger,stringNo
timeoutqueryinteger,stringNo
StatusMeaning
200OK
202Accepted
400Bad Request
401Unauthorized
404Not Found
429Too Many Requests

Reload a report now (Refresh grant; a manual report needs Run scan)

ParameterInTypeRequiredDescription
idpathstringYes
StatusMeaning
202Accepted
401Unauthorized
403Forbidden
404Not Found
429Too Many Requests

Start a manual report’s scan (Run scan grant)

ParameterInTypeRequiredDescription
idpathstringYes
StatusMeaning
202Accepted
401Unauthorized
403Forbidden
404Not Found
409Conflict
429Too Many Requests

State and freshness of every report this client may read

StatusMeaning
200OK
401Unauthorized
429Too Many Requests

The problems the dashboard counts, worst first

Severity, count, title and the report that lists the objects (reportId), for the findings of the reports this client may read. Counts come from the cached data; note says when a check could not run.

StatusMeaning
200OK
401Unauthorized
429Too Many Requests
FieldTypeDescription
errorstring
FieldTypeDescription
severityIrSeverity
countinteger or string
titlestring
reportIdstring
areaIrProductArea
FieldTypeDescription
countinteger or string
findingsFindingItem[]
notenull or string
FieldTypeDescription
labelstring
valuestring
severitystring
hintstring

Values: Pie, Bar

Values: EntraId, Security, Intune, ExchangeOnline, SharePointOnline, OneDrive, Teams, Licensing, Compliance, Tenant

FieldTypeDescription
kindIrChartKind
titlestring
pointsIrReportChartPoint[]
emptyTextstring
FieldTypeDescription
labelstring
valuenumber or string

Values: NotLoaded, Loading, Ok, Empty, Failed, NotApplicable, SwitchedOff

Values: Neutral, Good, Warning, Serious, Critical

FieldTypeDescription
idstring
stateIrReportState
errorstring
partialWarningstring
notApplicableReasonstring
loadedUtcnull or string
isRunningboolean
progressstring
metricsIrB4Metric[]
chartsIrReportChart[]
notesstring[]
totalRowsinteger or string
filteredRowsinteger or string
pageinteger or string
sizeinteger or string
filtersstring[]
rowsobject[]