cafe.thunderbird.sevenup.match

thunderbird.cafe

Documentation

One player's copy of a finished Seven-Up match. Each player saves their own; the record key is the match id (a TID made when the house flips the coin), so the two copies share it. A player against the bot saves alone.

main record

One player's copy of a finished Seven-Up match. Each player saves their own; the record key is the match id (a TID made when the house flips the coin), so the two copies share it. A player against the bot saves alone.

Record Key tid Timestamp-based ID

Properties

createdAt string datetime Required

An RFC 3339 formatted timestamp.

firstPlayer integer Required

Who the house's coin chose to start.

minimum: 1maximum: 2
handoffs array of string Required

How the dice changed hands between rounds: granted by the player holding them, or passed by the house after 10 seconds.

maxLength: 5 items
matchId string Required

The match id, also this record's key: a TID made when the house flipped the coin. (Matches saved before Oct 17 2026 have random 13-character ids.)

maxLength: 13 bytesminLength: 13 bytes
players array of ref #player Required

No description available.

maxLength: 2 itemsminLength: 2 items
rounds array of ref #round Required

All six rounds in play order, three each, players taking turns.

maxLength: 6 itemsminLength: 6 items
seat integer Required

Which player saved this record (1 or 2, an index into players).

minimum: 1maximum: 2
summary array of ref #summary Required

Each player's totals, in player order. Special rolls are worked out from the rolls.

maxLength: 2 itemsminLength: 2 items
View raw schema
{
  "description": "One player's copy of a finished Seven-Up match. Each player saves their own; the record key is the match id (a TID made when the house flips the coin), so the two copies share it. A player against the bot saves alone.",
  "key": "tid",
  "record": {
    "properties": {
      "createdAt": {
        "format": "datetime",
        "type": "string"
      },
      "firstPlayer": {
        "description": "Who the house's coin chose to start.",
        "maximum": 2,
        "minimum": 1,
        "type": "integer"
      },
      "handoffs": {
        "description": "How the dice changed hands between rounds: granted by the player holding them, or passed by the house after 10 seconds.",
        "items": {
          "knownValues": [
            "granted",
            "auto"
          ],
          "type": "string"
        },
        "maxLength": 5,
        "type": "array"
      },
      "house": {
        "description": "The house tile that refereed the match (rolled the dice and kept the score).",
        "ref": "com.atproto.repo.strongRef",
        "type": "ref"
      },
      "matchId": {
        "description": "The match id, also this record's key: a TID made when the house flipped the coin. (Matches saved before Oct 17 2026 have random 13-character ids.)",
        "maxLength": 13,
        "minLength": 13,
        "type": "string"
      },
      "players": {
        "items": {
          "ref": "#player",
          "type": "ref"
        },
        "maxLength": 2,
        "minLength": 2,
        "type": "array"
      },
      "rounds": {
        "description": "All six rounds in play order, three each, players taking turns.",
        "items": {
          "ref": "#round",
          "type": "ref"
        },
        "maxLength": 6,
        "minLength": 6,
        "type": "array"
      },
      "seat": {
        "description": "Which player saved this record (1 or 2, an index into players).",
        "maximum": 2,
        "minimum": 1,
        "type": "integer"
      },
      "summary": {
        "description": "Each player's totals, in player order. Special rolls are worked out from the rolls.",
        "items": {
          "ref": "#summary",
          "type": "ref"
        },
        "maxLength": 2,
        "minLength": 2,
        "type": "array"
      }
    },
    "required": [
      "matchId",
      "seat",
      "players",
      "firstPlayer",
      "rounds",
      "handoffs",
      "summary",
      "createdAt"
    ],
    "type": "object"
  },
  "type": "record"
}
player object

No description available.

Properties

bot boolean Optional

True when this seat was played by the table's bot.

diceStyle string Required

No description available.

Known values: bone, casino, jade, midnight, glow, brick
did string did Required

A decentralized identifier (DID).

handle string handle Required

The handle at the time of the match, for display; the did is what counts.

View raw schema
{
  "properties": {
    "bot": {
      "description": "True when this seat was played by the table's bot.",
      "type": "boolean"
    },
    "diceStyle": {
      "knownValues": [
        "bone",
        "casino",
        "jade",
        "midnight",
        "glow",
        "brick"
      ],
      "type": "string"
    },
    "did": {
      "format": "did",
      "type": "string"
    },
    "handle": {
      "description": "The handle at the time of the match, for display; the did is what counts.",
      "format": "handle",
      "type": "string"
    }
  },
  "required": [
    "did",
    "handle",
    "diceStyle"
  ],
  "type": "object"
}
round object

No description available.

Properties

player integer Required

No description available.

minimum: 1maximum: 2
rolls array of array Required

Every roll of the round, two dice each, ending with the first 7.

minLength: 1 items
View raw schema
{
  "properties": {
    "player": {
      "maximum": 2,
      "minimum": 1,
      "type": "integer"
    },
    "rolls": {
      "description": "Every roll of the round, two dice each, ending with the first 7.",
      "items": {
        "items": {
          "maximum": 6,
          "minimum": 1,
          "type": "integer"
        },
        "maxLength": 2,
        "minLength": 2,
        "type": "array"
      },
      "minLength": 1,
      "type": "array"
    }
  },
  "required": [
    "player",
    "rolls"
  ],
  "type": "object"
}
summary object

No description available.

Properties

longest integer Required

Rolls in the player's longest round.

minimum: 0
quickest integer Required

Rolls in the player's quickest round.

minimum: 0
specials integer Required

Special rolls (snake eyes, yo-leven, boxcars and the doubles 2 to 5), never counting the closing 7.

minimum: 0
View raw schema
{
  "properties": {
    "longest": {
      "description": "Rolls in the player's longest round.",
      "minimum": 0,
      "type": "integer"
    },
    "quickest": {
      "description": "Rolls in the player's quickest round.",
      "minimum": 0,
      "type": "integer"
    },
    "specials": {
      "description": "Special rolls (snake eyes, yo-leven, boxcars and the doubles 2 to 5), never counting the closing 7.",
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "longest",
    "quickest",
    "specials"
  ],
  "type": "object"
}

Lexicon Garden

@