A request for large trades in the last hour comes back with an empty list. What does that mean?
It could mean the hour was quiet. Or it could mean the upstream source timed out, an error was swallowed somewhere, and the code path that builds the response ran with nothing to put in it. Those are opposite facts and they arrive looking identical.
Why the second one is worse than an error
If the request had failed, you would know to retry or wait. Instead you receive a successful response containing a factual claim — the market was quiet — and nothing signals that the claim is unfounded. A trader acting on an absence of unusual activity when the truth is that nobody checked has been actively misled, not merely underserved.
This is why an outage that returns errors is safer than an outage that returns zeroes.
The three states a field needs
Present with a value: we measured it. Explicitly null or absent with a reason: we tried and could not. And, for a tiered product, listed as withheld: it exists, we have it, this plan does not include it.
That third one matters more than it sounds. A gated field reported as zero will be read as a measurement. Naming the withheld fields in a list — so the consumer can see that something is being held back rather than reported as nil — is the difference between a tier boundary and a lie.
How to test a vendor for this
Ask what happens when their upstream fails. If the answer is that the endpoint returns the last good value, ask how you would know. If the answer is that it returns an empty result, you have learned something important about how much weight the quiet readings can carry.