DurationBreakdownDto
Reading time split by how it was arrived at.
Deliberately two numbers rather than one. Time from the compatibility surfaces is reconstructed from the gaps between their writes: it undercounts and cannot see reading done from a downloaded book at all. Presenting a combined figure is fine; hiding that part of it is an estimate is not.
inferredMsinteger<int64>required
Milliseconds reconstructed server-side. An underestimate.
Example:
900000measuredMsinteger<int64>required
Milliseconds reported by a client that measured its own reading.
Example:
5400000totalMsinteger<int64>required
Convenience sum of the two, so clients do not each reimplement it.
Example:
6300000DurationBreakdownDto
{
"inferredMs": 900000,
"measuredMs": 5400000,
"totalMs": 6300000
}