A review of one edition by an actor. Duplicate convention: the rkey is a TID minted once at first create and never changes. Several records may exist for one actor and edition (for example from out-of-band writers); consumers SHOULD treat the record with the greatest `updatedAt` (falling back to `createdAt`) as the winner and break ties by the lowest TID, ignoring the others. This is a convention, not an enforced contract: AppViews MUST tolerate a differing winner, and may see a record's catalogTarget change over time.
tid
Timestamp-based ID
Properties
catalogSnapshot
ref
social.dracome.work.defs#catalogSnapshot
Required
Point-in-time catalog metadata for the reviewed work or edition, captured when this record was last written. Refreshed on every update.
catalogTarget
ref
social.dracome.work.defs#catalogTarget
Required
The work and edition that this review is about. Mutable.
createdAt
string
datetime
Required
Canonical UTC instant serialized as ISO 8601 with a trailing Z suffix.
images
ref
social.dracome.embed.defs#images
Optional
Optional attached images: an optional primary image plus up to 4 secondary images (5 total). Images are independently addable/removable.
language
string
language
Optional
Optional language code the review text is written in, if different from or more specific than the actor's default language.
rating
integer
Required
Scale-relative rating value. Valid range depends on ratingScale: 1-5 for 1 (whole stars), 1-10 for 2 (half stars), 1-20 for 4 (quarter stars). Interpretation: stars = rating / ratingScale. Runtime validation MUST enforce per-scale limits.
minimum: 1maximum: 20ratingScale
integer
Required
The rating granularity divisor used at write time: divide rating by this value to recover stars. 1 = whole stars, 2 = half stars, 4 = quarter stars. Reflects whichever scale was in effect the last time rating was written on this record.
reviewCopy
boolean
Optional
True when the posted review discloses that the actor received or owns a review copy of this work or edition.
text
string
Optional
Optional review text. When provided, must be non-empty after trimming.
maxLength: 40000 bytesmaxGraphemes: 10000 graphemesupdatedAt
string
datetime
Optional
Canonical UTC instant serialized as ISO 8601 with a trailing Z suffix.
View raw schema
{
"description": "A review of one edition by an actor. Duplicate convention: the rkey is a TID minted once at first create and never changes. Several records may exist for one actor and edition (for example from out-of-band writers); consumers SHOULD treat the record with the greatest `updatedAt` (falling back to `createdAt`) as the winner and break ties by the lowest TID, ignoring the others. This is a convention, not an enforced contract: AppViews MUST tolerate a differing winner, and may see a record's catalogTarget change over time.",
"key": "tid",
"record": {
"properties": {
"catalogSnapshot": {
"description": "Point-in-time catalog metadata for the reviewed work or edition, captured when this record was last written. Refreshed on every update.",
"ref": "social.dracome.work.defs#catalogSnapshot",
"type": "ref"
},
"catalogTarget": {
"description": "The work and edition that this review is about. Mutable.",
"ref": "social.dracome.work.defs#catalogTarget",
"type": "ref"
},
"createdAt": {
"description": "Canonical UTC instant serialized as ISO 8601 with a trailing Z suffix.",
"format": "datetime",
"type": "string"
},
"images": {
"description": "Optional attached images: an optional primary image plus up to 4 secondary images (5 total). Images are independently addable/removable.",
"ref": "social.dracome.embed.defs#images",
"type": "ref"
},
"language": {
"description": "Optional language code the review text is written in, if different from or more specific than the actor's default language.",
"format": "language",
"type": "string"
},
"rating": {
"description": "Scale-relative rating value. Valid range depends on ratingScale: 1-5 for 1 (whole stars), 1-10 for 2 (half stars), 1-20 for 4 (quarter stars). Interpretation: stars = rating / ratingScale. Runtime validation MUST enforce per-scale limits.",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"ratingScale": {
"description": "The rating granularity divisor used at write time: divide rating by this value to recover stars. 1 = whole stars, 2 = half stars, 4 = quarter stars. Reflects whichever scale was in effect the last time rating was written on this record.",
"enum": [
1,
2,
4
],
"type": "integer"
},
"reviewCopy": {
"description": "True when the posted review discloses that the actor received or owns a review copy of this work or edition.",
"type": "boolean"
},
"text": {
"description": "Optional review text. When provided, must be non-empty after trimming.",
"maxGraphemes": 10000,
"maxLength": 40000,
"type": "string"
},
"updatedAt": {
"description": "Canonical UTC instant serialized as ISO 8601 with a trailing Z suffix.",
"format": "datetime",
"type": "string"
}
},
"required": [
"catalogTarget",
"catalogSnapshot",
"rating",
"ratingScale",
"createdAt"
],
"type": "object"
},
"type": "record"
}