A reading status change event for a book. Records are append-only and timestamped — each status transition creates a new record rather than mutating an existing one. The current status of a book is derived by taking the most recent status record (by createdAt) referencing that book.
tid
Timestamp-based ID
Properties
book
ref
com.atproto.repo.strongRef
Required
Strong reference to the com.hectorsector.book.book anchor this status applies to.
createdAt
string
datetime
Required
When the status change occurred. May differ from the record's server-side timestamp when backfilling history from imports (e.g. StoryGraph CSV).
status
string
Required
The reading status being set. Open union — future status tokens may be added; consumers should handle unknown values gracefully.
maxLength: 128 bytescom.hectorsector.book.status#wantToRead, com.hectorsector.book.status#reading, com.hectorsector.book.status#paused, com.hectorsector.book.status#didNotFinish, com.hectorsector.book.status#finishedView raw schema
{
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"book",
"status",
"createdAt"
],
"properties": {
"book": {
"ref": "com.atproto.repo.strongRef",
"type": "ref",
"description": "Strong reference to the com.hectorsector.book.book anchor this status applies to."
},
"status": {
"type": "string",
"maxLength": 128,
"description": "The reading status being set. Open union — future status tokens may be added; consumers should handle unknown values gracefully.",
"knownValues": [
"com.hectorsector.book.status#wantToRead",
"com.hectorsector.book.status#reading",
"com.hectorsector.book.status#paused",
"com.hectorsector.book.status#didNotFinish",
"com.hectorsector.book.status#finished"
]
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "When the status change occurred. May differ from the record's server-side timestamp when backfilling history from imports (e.g. StoryGraph CSV)."
}
}
},
"description": "A reading status change event for a book. Records are append-only and timestamped — each status transition creates a new record rather than mutating an existing one. The current status of a book is derived by taking the most recent status record (by createdAt) referencing that book."
}