{
  "lexicon": 1,
  "id": "net.bisks.tallybot.point",
  "defs": {
    "main": {
      "type": "record",
      "description": "A single +1 or -1 cast against an arbitrarily-named 'point' (any string, not an account) — tallybot's leaderboard is keyed by the lowercased name, not by identity. One record per vote, never overwritten. The running score and the one-vote-per-name-per-hour cooldown are tallied server-side from Jetstream, not stored in the record itself. A vote can equivalently be cast with no sign-in by posting '<name> +1' or '<name> -1' as a whole Bluesky post, which tallybot also counts, but that path never writes this record type. Written and read by tallybot (https://tallybot.bisks.net).",
      "key": "tid",
      "record": {
        "type": "object",
        "required": ["name", "delta", "createdAt"],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 560,
            "maxGraphemes": 140,
            "description": "The point's display name, exactly as typed in the 'name of the point' field (UI caps input at 140 characters). The leaderboard groups votes by this name lowercased and whitespace-collapsed."
          },
          "delta": {
            "type": "integer",
            "minimum": -1,
            "maximum": 1,
            "description": "The vote's direction: always exactly 1 (the '+1' button) or -1 (the '-1' button) in the current client — there is no way to cast a larger swing in one vote."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "When the vote was cast, as an ISO 8601 datetime."
          }
        }
      }
    }
  }
}
