Your plant data, in the tools you already use. Excel, Power BI, Fabric — or your own systems.
One read-only REST API and one CSV export, both serving the same versioned projection — so a dashboard, a spreadsheet and an auditor's pack can never disagree about a reading. Documentation rather than marketing: what it is, what it deliberately refuses to do, and how to integrate it.
What it is
GET /api/v1/sites/{siteId}/readings
A read-only REST endpoint returning a page of reading evidence for one site, as JSON. The machine-readable contract is published at /api/v1/openapi.json and needs no account to read — an integrator can size the work up before anyone signs anything.
The same projection as the export
The API is a second serialization of the projection that writes readings.csv. It computes nothing, judges nothing and joins nothing of its own — so a Power BI dashboard, an Excel refresh and the ZIP an auditor was handed cannot disagree about a reading. There is nothing to drift, because there is only one answer.
The column names are the contract
JSON keys are the projection's published column names, verbatim — spaces included. Renaming them for JSON would fork one vocabulary into two, and every consumer would eventually meet both. Excel's headers and the API's keys are the same strings on purpose.
What it refuses to do
It never widens a question quietly
A mistyped filter is refused with a 400 naming the parameter. It would be easier to ignore an unknown parameter — and the consumer would then chart an answer that was honestly returned and wrongly believed. An unknown value for a known filter is refused for the same reason: an empty page reads like ‘nothing happened’.
It never guesses a time
Timestamps must state their offset. A zone-less time would be read in the server's timezone, and the same request would return different evidence depending on where the process happens to run. A date that is not a real day is refused rather than rolled forward into a question nobody asked.
It never truncates silently
A window selecting more than fifty thousand rows is refused with a 400 that says how to narrow it. A silent cap would read as ‘that is all the evidence there is’, which is the most expensive sentence a reporting tool can imply.
It is read-only, and there is no write path to find
Evidence is recorded by the person who observed it, on the round, with their identity attached. An API that accepted readings from another system would break that at the root, so it does not exist.
Capture-time truth, which is the part that matters to an auditor
Every row carries what it was judged against at the time
The expected range, the action limits, the equipment the point was linked to — as they were frozen when the reading was taken, not as they stand today. Widen a limit next month and last month's evidence does not change, because what the operator was asked is part of the record.
Corrections appear as corrections
A re-read does not overwrite anything. The first answer stays, flagged as superseded, beside the one that replaced it. Most reporting shows the latest number; this shows what happened.
A window changes what you SEE, never how a row is JUDGED
Ask for Tuesday and a reading corrected on Wednesday still reports as superseded. The verdict is decided over the whole walk, so it cannot depend on where a consumer happened to cut their dates.
Who may call it
People, with the reporting capability
The same sign-in the operator app uses, including Microsoft Entra ID. A site the caller does not hold is refused — there is no cross-site query and no parameter that widens scope.
Systems, with their own Microsoft application identity
Power BI, Fabric, Excel, Power Automate or your own software authenticate as themselves and read unattended. Your directory proves who they are; a membership on the site decides what they may read; either side can switch it off. See Machine identity.
Every unattended read is on an append-only ledger
Which system, which site, when, what it asked for, how many rows. A refresh that took nine requests is recorded as one pull, because that is what happened.
Consuming it
Power BI, Fabric, Excel
A published Power Query that acquires its own token and walks the evidence to the end — one paste. Excel on Windows works the same way; Excel for Mac cannot send the header this needs, and we say so rather than letting somebody find out.
SAP PM, IBM Maximo, AVEVA PI, your own software
The same door — and the same for a CMMS, a historian, or anything else already on site. The contract is published and self-describing, so anything that can hold a Microsoft identity and make an HTTP request already works. Which of these anybody has actually walked end to end is listed inside the product rather than asserted here.
And the data leaves with you regardless
Nothing here is the only way out. A site administrator can export the complete site record from inside the product on any day, without asking us — the API is a convenience for reporting, never the thing that makes your evidence reachable.
A question this page didn't answer?
Ask it directly — supplier questionnaires and security reviews are answered promptly, by the people who built the platform.