app.racethesky.teamMembership

A player's claim to be on a Race the Sky team. Only the account holder can write to their own repo, so the presence of this record is the proof of membership — and its absence is the proof of departure. A player races for one team at a time, so the record key is always 'self'.

Repository @racethesky.app did:plc:37slmbx2v4gh6sa4ncfz7yid namespace authority
Details · record, key literal:self
Kindrecord
Record keyliteral:self
Authorityracethesky.app
Indexed
cid bafyreiajgvowe2qcxz5cexsiulf7hsygnrtfvoju4gbfklf7qoommgiy6q

Checks

Valid Lint pass
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A player's claim to be on a Race the Sky team. Only the account holder can write to their own repo, so the presence of this record is the proof of membership — and its absence is the proof of departure. A player races for one team at a time, so the record key is always 'self'.",
      "key": "literal:self",
      "record": {
        "properties": {
          "createdAt": {
            "description": "Client-reported time the player joined.",
            "format": "datetime",
            "type": "string"
          },
          "teamId": {
            "description": "The team being joined. Deliberately not the team's join code: records are public, and a published join code would let anyone onto the squad.",
            "maxLength": 64,
            "type": "string"
          },
          "teamName": {
            "description": "The team's display name when the player joined, so the record reads as something human without a lookup. Advisory — the team's own record is authoritative and the name may since have changed.",
            "maxLength": 64,
            "type": "string"
          }
        },
        "required": [
          "teamId",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "app.racethesky.teamMembership",
  "lexicon": 1
}