ReadingSummaryDto
Headline totals for the window.
booksinteger<int64>required
Example:
12duration objectrequired
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:
6300000pagesReadinteger<int64>required
Example:
1240sessionsinteger<int64>required
Distinct sittings, after adjacent writes were merged.
Example:
48sessionsWithoutDurationinteger<int64>required
Sittings whose client could report no time at all. A large number here explains a total that looks lower than the reading felt.
Example:
3ReadingSummaryDto
{
"books": 12,
"duration": {
"inferredMs": 900000,
"measuredMs": 5400000,
"totalMs": 6300000
},
"pagesRead": 1240,
"sessions": 48,
"sessionsWithoutDuration": 3
}