at.rolld.rating

The user's grade for a game. Single overwritable record per game (BGG id in the record key); re-rating replaces it, no history kept in v1. Scale is 1-10 to align with BGG's community average you already hydrate.

Repository @rolld.at did:plc:vjpkp7kuxs6iicilpqlibvl4 namespace authority
Details · record, key any
Kindrecord
Record keyany
Authorityrolld.at
Indexed
cid bafyreigurled5h42vashur6oczffkl4ied46ofxjthuhaj5wglcthhtmwq

Checks

Valid
  • large-string defs.main.record.properties.textContentmaxLength is over 20 KB. Use a blob for content that large.
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "The user's grade for a game. Single overwritable record per game (BGG id in the record key); re-rating replaces it, no history kept in v1. Scale is 1-10 to align with BGG's community average you already hydrate.",
      "key": "any",
      "record": {
        "properties": {
          "bskyPostRef": {
            "description": "Strong ref to a companion app.bsky.feed.post, if the user shared this rating on Bluesky. Links back to the per-entry permalink (/@<handle>/rating/<rkey> — note rating rkey is the BGG id). Enables Bluesky replies as discussion later.",
            "ref": "com.atproto.repo.strongRef",
            "type": "ref"
          },
          "content": {
            "description": "Optional rich review of the game. Same model as at.rolld.play: open union (bring-your-own-content), v1 accepts markpub Markdown, render via $type with textContent as fallback. Replaces the earlier plain 'review' string so play and rating share one note shape.",
            "refs": [
              "at.markpub.markdown"
            ],
            "type": "union"
          },
          "createdAt": {
            "description": "When last rated. Doubles as ratedAt since the record is overwritten in place.",
            "format": "datetime",
            "type": "string"
          },
          "game": {
            "ref": "at.rolld.defs#gameRef",
            "type": "ref"
          },
          "rating": {
            "description": "Grade from 1 (worst) to 10 (best).",
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          },
          "target": {
            "description": "The canonical per-game URL (https://rolld.at/g/<bggId>) — the SAME frozen target the play record uses. Present so ratings are Constellation-discoverable by game (the community-wide 'what does rolld rate this game' + 'follows' reviews of this game' queries, D-39). Identical format and shared helper as play.target (D-9). FROZEN format. The targeted 'did this specific follow rate it' lookup uses getRecord by rkey (= BGG id) instead; target powers the open-ended who-rated-this queries.",
            "format": "uri",
            "type": "string"
          },
          "textContent": {
            "description": "Plain-text rendering of `content`, always populated when `content` is present. Universal fallback + search/preview field. No grapheme limit.",
            "maxLength": 100000,
            "type": "string"
          }
        },
        "required": [
          "game",
          "target",
          "rating",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "at.rolld.rating",
  "lexicon": 1
}