ReadingSummaryDto
Headline totals for the window.
12Books finished in the window. Unlike time and pages, this is populated for reading that predates session tracking.
5duration 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.
Milliseconds reconstructed server-side. An underestimate.
900000Milliseconds reported by a client that measured its own reading.
5400000Convenience sum of the two, so clients do not each reimplement it.
63000001240Distinct sittings, after adjacent writes were merged.
48Sittings whose client could report no time at all. A large number here explains a total that looks lower than the reading felt.
3Sittings whose client reported no page count. Only a reader that measures its own sitting reports one, so this covers reading that predates session tracking as well as apps that only save a position.
3{
"books": 12,
"booksFinished": 5,
"duration": {
"inferredMs": 900000,
"measuredMs": 5400000,
"totalMs": 6300000
},
"pagesRead": 1240,
"sessions": 48,
"sessionsWithoutDuration": 3,
"sessionsWithoutPages": 3
}