Single overwritten record: an incremental rollup of the session history, so a normal load doesn't have to cursor-walk every session ever recorded (#16). rkey is literally `self`.
literal:self
Fixed literal value
Properties
currentStreak
integer
Required
No description available.
minimum: 0lastActiveDate
string
Required
YYYY-MM-DD of the most recent session folded in; combined with currentStreak to decide at display time whether the streak is still current.
lastDrilledAt
string
datetime
Optional
endedAt of the session lastDrilledPackRef came from, so folding a batch of sessions can tell which one was actually most recent.
lastDrilledPackRef
string
Optional
at:// uri of the pack from the most recently *drilled* session that carried a packRef, so the home screen can default to it instead of the newest upload (#51).
totalCards
integer
Required
No description available.
minimum: 0totalCorrect
integer
Required
No description available.
minimum: 0totalSessions
integer
Required
No description available.
minimum: 0updatedAt
string
datetime
Required
An RFC 3339 formatted timestamp.
watermark
string
Required
rkey of the newest at.kotoba.session record folded into this summary so far; empty string if none yet. Session rkeys are TID (time-ordered), so a single watermark rkey is enough to resume folding only newer sessions.
View raw schema
{
"key": "literal:self",
"type": "record",
"record": {
"type": "object",
"required": [
"updatedAt",
"watermark",
"totalSessions",
"totalCards",
"totalCorrect",
"currentStreak",
"lastActiveDate"
],
"properties": {
"updatedAt": {
"type": "string",
"format": "datetime"
},
"watermark": {
"type": "string",
"description": "rkey of the newest at.kotoba.session record folded into this summary so far; empty string if none yet. Session rkeys are TID (time-ordered), so a single watermark rkey is enough to resume folding only newer sessions."
},
"totalCards": {
"type": "integer",
"minimum": 0
},
"totalCorrect": {
"type": "integer",
"minimum": 0
},
"currentStreak": {
"type": "integer",
"minimum": 0
},
"lastDrilledAt": {
"type": "string",
"format": "datetime",
"description": "endedAt of the session lastDrilledPackRef came from, so folding a batch of sessions can tell which one was actually most recent."
},
"totalSessions": {
"type": "integer",
"minimum": 0
},
"lastActiveDate": {
"type": "string",
"description": "YYYY-MM-DD of the most recent session folded in; combined with currentStreak to decide at display time whether the streak is still current."
},
"lastDrilledPackRef": {
"type": "string",
"description": "at:// uri of the pack from the most recently *drilled* session that carried a packRef, so the home screen can default to it instead of the newest upload (#51)."
}
}
},
"description": "Single overwritten record: an incremental rollup of the session history, so a normal load doesn't have to cursor-walk every session ever recorded (#16). rkey is literally `self`."
}