ExportBookDto
One book inside a series, keyed for matching by path, name, and hash rather than by id: the whole point of the file is that ids on the far side are expected to be different.
completions object[]
Array [
completedAtstring<date-time>required
idstring<uuid>required
startedAtstring<date-time>required
]
fileHashstring
Empty when the book was never analyzed; never treated as a value to match on in that case.
fileNamestringrequired
Example:
v01.cbzpartialHashstring
pathstringrequired
Relative to the series folder, so a series move does not invalidate it.
Example:
Vol 01/v01.cbzprogress object
The live resume position for one book. Retains r2_progression: it is the
only place the EPUB locator survives, since sessions strip it.
completedbooleanrequired
completedAt(string | null)<date-time>nullable
currentPageinteger<int32>required
progressPercentage(number | null)<double>nullable
r2Progressionstring | nullnullable
startedAtstring<date-time>required
updatedAtstring<date-time>required
sessions object[]
Omitted entirely (not an empty array) when the export was taken with
includeSessions=false.
Array [
activeDurationMs(integer | null)<int64>nullable
clientEndedAtstring<date-time>required
clientStartedAtstring<date-time>required
deviceIdstringrequired
deviceNamestring | nullnullable
durationSourcestringrequired
"measured", "inferred", or "unknown".
Example:
measuredidstring<uuid>required
kindstringrequired
"progress", "completed", or "reset".
Example:
progresspagesRead(integer | null)<int32>nullable
passinteger<int32>required
serverRecordedAtstring<date-time>required
toPage(integer | null)<int32>nullable
toPercentage(number | null)<double>nullable
]
ExportBookDto
{
"completions": [
{
"completedAt": "2024-07-29T15:51:28.071Z",
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"startedAt": "2024-07-29T15:51:28.071Z"
}
],
"fileHash": "string",
"fileName": "v01.cbz",
"partialHash": "string",
"path": "Vol 01/v01.cbz",
"progress": {
"completed": true,
"completedAt": "2024-07-29T15:51:28.071Z",
"currentPage": 0,
"progressPercentage": 0,
"r2Progression": "string",
"startedAt": "2024-07-29T15:51:28.071Z",
"updatedAt": "2024-07-29T15:51:28.071Z"
},
"sessions": "Unknown Type: array,null"
}