# at.turtleme.game.session

> Published by [turtleme.at](https://lexicon.garden/identity/did:plc:f4h4tl43o4vx4hv2xps6siuz)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:f4h4tl43o4vx4hv2xps6siuz/at.turtleme.game.session)
- [Documentation](https://lexicon.garden/lexicon/did:plc:f4h4tl43o4vx4hv2xps6siuz/at.turtleme.game.session/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:f4h4tl43o4vx4hv2xps6siuz/at.turtleme.game.session/examples)

## Definitions

### `at.turtleme.game.session#castAndStrike`

**Type**: `token`

The timing bar, where striking in the green window lands a turtle.

The timing bar, where striking in the green window lands a turtle.

### `at.turtleme.game.session#driftNet`

**Type**: `token`

The net that fills on its own in real time, including while the page is closed.

The net that fills on its own in real time, including while the page is closed.

### `at.turtleme.game.session`

**Type**: `record`

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.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `burnt` | `integer` | No |  |
| `caught` | `integer` | No |  |
| `cooked` | `integer` | No |  |
| `cookingXp` | `integer` | No |  |
| `endedAt` | `string` (datetime) | Yes |  |
| `fishingXp` | `integer` | No |  |
| `methods` | `array` | No | Which ways of fishing were used. |
| `proof` | `string` | Yes | 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. |
| `startedAt` | `string` (datetime) | Yes |  |

### `at.turtleme.game.session#reef`

**Type**: `token`

The minesweeper reef, swept for a dozing shoal.

The minesweeper reef, swept for a dozing shoal.

### `at.turtleme.game.session#spot`

**Type**: `token`

The wandering fishing spot, fished on a four-tick cadence.

The wandering fishing spot, fished on a four-tick cadence.

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "castAndStrike": {
      "description": "The timing bar, where striking in the green window lands a turtle.",
      "type": "token"
    },
    "driftNet": {
      "description": "The net that fills on its own in real time, including while the page is closed.",
      "type": "token"
    },
    "main": {
      "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.",
      "key": "tid",
      "record": {
        "properties": {
          "burnt": {
            "minimum": 0,
            "type": "integer"
          },
          "caught": {
            "minimum": 0,
            "type": "integer"
          },
          "cooked": {
            "minimum": 0,
            "type": "integer"
          },
          "cookingXp": {
            "minimum": 0,
            "type": "integer"
          },
          "endedAt": {
            "format": "datetime",
            "type": "string"
          },
          "fishingXp": {
            "minimum": 0,
            "type": "integer"
          },
          "methods": {
            "description": "Which ways of fishing were used.",
            "items": {
              "knownValues": [
                "at.turtleme.game.session#spot",
                "at.turtleme.game.session#castAndStrike",
                "at.turtleme.game.session#driftNet",
                "at.turtleme.game.session#reef"
              ],
              "type": "string"
            },
            "maxLength": 4,
            "type": "array"
          },
          "proof": {
            "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.",
            "maxLength": 4096,
            "type": "string"
          },
          "startedAt": {
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "proof",
          "startedAt",
          "endedAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "reef": {
      "description": "The minesweeper reef, swept for a dozing shoal.",
      "type": "token"
    },
    "spot": {
      "description": "The wandering fishing spot, fished on a four-tick cadence.",
      "type": "token"
    }
  },
  "id": "at.turtleme.game.session",
  "lexicon": 1
}
```
