at.turtleme.game.session

turtleme.at

{
  "id": "at.turtleme.game.session",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "proof",
          "startedAt",
          "endedAt"
        ],
        "properties": {
          "burnt": {
            "type": "integer",
            "minimum": 0
          },
          "proof": {
            "type": "string",
            "maxLength": 4096,
            "description": "A compact JWS signed by turtle meat carrying the authoritative account of the session. As with at.turtleme.player.state, this is the only field that counts and the rest are a transcription."
          },
          "caught": {
            "type": "integer",
            "minimum": 0
          },
          "cooked": {
            "type": "integer",
            "minimum": 0
          },
          "endedAt": {
            "type": "string",
            "format": "datetime"
          },
          "methods": {
            "type": "array",
            "items": {
              "type": "string",
              "knownValues": [
                "at.turtleme.game.session#spot",
                "at.turtleme.game.session#castAndStrike",
                "at.turtleme.game.session#driftNet",
                "at.turtleme.game.session#reef"
              ]
            },
            "maxLength": 4,
            "description": "Which ways of fishing were used."
          },
          "cookingXp": {
            "type": "integer",
            "minimum": 0
          },
          "fishingXp": {
            "type": "integer",
            "minimum": 0
          },
          "startedAt": {
            "type": "string",
            "format": "datetime"
          }
        }
      },
      "description": "One adjudicated session of play, published by the player as a public trail of how their progress was earned. The leaderboard does not need these records; at.turtleme.player.state alone is enough to rank someone. They exist so that progress can be read as a history rather than a number, and so other clients have something to render. Written per session rather than per catch, which keeps a player's repository from growing without limit."
    },
    "reef": {
      "type": "token",
      "description": "The minesweeper reef, swept for a dozing shoal."
    },
    "spot": {
      "type": "token",
      "description": "The wandering fishing spot, fished on a four-tick cadence."
    },
    "driftNet": {
      "type": "token",
      "description": "The net that fills on its own in real time, including while the page is closed."
    },
    "castAndStrike": {
      "type": "token",
      "description": "The timing bar, where striking in the green window lands a turtle."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}

Validate Record

Validate a record against at.turtleme.game.session

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:f4h4tl43o4vx4hv2xps6siuz
CID
bafyreidsnp7alw3uezwz2gtsh6e6eincwr43edxtg2lethfos6yrkvqveq
Indexed At
2026-09-14 19:34 UTC
AT-URI
at://did:plc:f4h4tl43o4vx4hv2xps6siuz/com.atproto.lexicon.schema/at.turtleme.game.session

Lexicon Garden

@