No description available.
tid
Timestamp-based ID
Properties
achievedAt
string
datetime
Required
Timestamp assigned by the signing server, part of the HMAC payload.
did
string
did
Required
The author's DID, copied into the record so the server HMAC binds the score to the player. Must match the record repo's DID when displayed.
game
string
Required
The game identifier. Includes the variant for games with multiple boards (e.g. typing-30).
maxLength: 64 bytessnake, wordle, typing-15, typing-30, typing-60replay
string
Optional
Optional compact replay data (input log, guess sequence, typed text hash). Not required; when present, the signing server may use it for additional validation before signing.
maxLength: 4000 bytesscore
integer
Required
The numeric score. Meaning depends on the game — for snake, food eaten; for typing, wpm; for wordle, guesses used (lower is better).
minimum: 0sig
string
Required
Base64url-encoded HMAC-SHA256 of the canonical {game, score, did, achievedAt} payload, signed with a server secret. The leaderboard renderer verifies this and drops records that don't match.
maxLength: 128 bytessubject
string
at-uri
Required
AT-URI of the leaderboard marker record this score is claiming against.
View raw schema
{
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"game",
"score",
"subject",
"did",
"achievedAt",
"sig"
],
"properties": {
"did": {
"type": "string",
"format": "did",
"description": "The author's DID, copied into the record so the server HMAC binds the score to the player. Must match the record repo's DID when displayed."
},
"sig": {
"type": "string",
"maxLength": 128,
"description": "Base64url-encoded HMAC-SHA256 of the canonical {game, score, did, achievedAt} payload, signed with a server secret. The leaderboard renderer verifies this and drops records that don't match."
},
"game": {
"type": "string",
"maxLength": 64,
"description": "The game identifier. Includes the variant for games with multiple boards (e.g. typing-30).",
"knownValues": [
"snake",
"wordle",
"typing-15",
"typing-30",
"typing-60"
]
},
"score": {
"type": "integer",
"minimum": 0,
"description": "The numeric score. Meaning depends on the game — for snake, food eaten; for typing, wpm; for wordle, guesses used (lower is better)."
},
"replay": {
"type": "string",
"maxLength": 4000,
"description": "Optional compact replay data (input log, guess sequence, typed text hash). Not required; when present, the signing server may use it for additional validation before signing."
},
"subject": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the leaderboard marker record this score is claiming against."
},
"achievedAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp assigned by the signing server, part of the HMAC payload."
}
}
}
}