ReadingByDeviceDto
Totals for one device, most-read first.
deviceIdstringrequired
deviceNamestring | nullnullable
Friendly name where the client sent one, or the API key's label.
Example:
Ash's iPhoneduration 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:
6300000lastReadAtstring<date-time>required
pagesReadinteger<int64>required
sessionsinteger<int64>required
ReadingByDeviceDto
{
"deviceId": "string",
"deviceName": "Ash's iPhone",
"duration": {
"inferredMs": 900000,
"measuredMs": 5400000,
"totalMs": 6300000
},
"lastReadAt": "2024-07-29T15:51:28.071Z",
"pagesRead": 0,
"sessions": 0
}