dev.tsunagite.score

tsunagite.dev

Schema Diff

+2 -2

From

CID
bafyreigpvzbidaw...
Indexed At
2026-01-10 09:32 UTC
View this version

To

CID
bafyreifl3pzitvt...
Indexed At
2026-01-11 02:50 UTC
View this version
1 1
{
2 2
  "id": "dev.tsunagite.score",
3 3
  "defs": {
4 4
    "enum": {
5 5
      "type": "object",
6 6
      "required": [
7 7
        "value"
8 8
      ],
9 9
      "properties": {
10 10
        "value": {
11 11
          "type": "string",
12 12
          "format": "record-key",
13 13
          "description": "The internal ID of the value, matching with an allowed enum value defined by the game record."
14 14
        }
15 15
      },
16 16
      "description": "An indexable named score component."
17 17
    },
18 18
    "main": {
19 19
      "key": "tid",
20 20
      "type": "record",
21 21
      "record": {
22 22
        "type": "object",
23 23
        "required": [
24 24
          "game",
25 25
          "song",
26 26
          "chart",
27 27
          "judgments",
28 28
          "scoreComponents"
29 29
        ],
30 30
        "properties": {
31 31
          "game": {
32 32
            "type": "string",
33 33
            "format": "at-uri",
34 34
            "description": "The game this score was earned in. URI must point to a record of type `dev.tsunagite.game`."
35 35
          },
36 36
          "mode": {
37 37
            "type": "string",
38 38
            "description": "The game mode this score was earned on. Must be a mode defined by the game record if present."
39 39
          },
40 40
          "song": {
41 41
            "type": "string",
42 42
            "format": "at-uri",
43 43
            "description": "The song this score was earned on. URI must point to a record of type `dev.tsunagite.song`."
44 44
          },
45 45
          "chart": {
46 46
            "type": "string",
47 47
            "format": "at-uri",
48 48
            "description": "The chart this score was earned on. URI must point to a record of type `dev.tsunagite.chart`."
49 49
          },
50 50
          "version": {
51 51
            "type": "bytes",
52 -
            "maxLength": "16",
53 -
            "minLength": "16",
52 +
            "maxLength": 16,
53 +
            "minLength": 16,
54 54
            "description": "The md5 hash of the chart version this score was earned on. Optional if you will not perform leaderboard resets upon any chart changes."
55 55
          },
56 56
          "judgments": {
57 57
            "type": "object",
58 58
            "properties": {
59 59
              "$keyFormat": {
60 60
                "type": "string",
61 61
                "format": "record-key",
62 62
                "maxLength": 32,
63 63
                "minLength": 1,
64 64
                "description": "Must match a judgment defined by the game record."
65 65
              },
66 66
              "$valueType": {
67 67
                "type": "object",
68 68
                "required": [
69 69
                  "total"
70 70
                ],
71 71
                "properties": {
72 72
                  "late": {
73 73
                    "type": "integer",
74 74
                    "description": "The number of total judgments of this type earned when hitting late."
75 75
                  },
76 76
                  "early": {
77 77
                    "type": "integer",
78 78
                    "description": "The number of total judgments of this type earned when hitting early."
79 79
                  },
80 80
                  "total": {
81 81
                    "type": "integer",
82 82
                    "description": "The number of total judgments of this type earned."
83 83
                  }
84 84
                }
85 85
              }
86 86
            },
87 87
            "description": "A map of judgment names to the integer judgment amounts earned during play."
88 88
          },
89 89
          "inputMethod": {
90 90
            "type": "string",
91 91
            "description": "The input method this score was earned using. Must be an input method defined by the game record if present."
92 92
          },
93 93
          "scoreComponents": {
94 94
            "type": "object",
95 95
            "properties": {
96 96
              "$keyFormat": {
97 97
                "type": "string",
98 98
                "format": "record-key",
99 99
                "maxLength": 32,
100 100
                "minLength": 1,
101 101
                "description": "Must match an ID defined by the game record, as well as using the same type."
102 102
              },
103 103
              "$valueType": {
104 104
                "refs": [
105 105
                  "#enum",
106 106
                  "#points",
107 107
                  "#percentage",
108 108
                  "#text"
109 109
                ],
110 110
                "type": "union",
111 111
                "description": "If you need a component type that doesn't exist yet, contact @lemmaeof.gay"
112 112
              }
113 113
            },
114 114
            "description": "The components that make up this score, as defined by the game record."
115 115
          }
116 116
        }
117 117
      },
118 118
      "description": "A score in a game hosting leaderboards via Tsunagite."
119 119
    },
120 120
    "text": {
121 121
      "type": "object",
122 122
      "required": [
123 123
        "id",
124 124
        "value"
125 125
      ],
126 126
      "properties": {
127 127
        "id": {
128 128
          "type": "string",
129 129
          "format": "record-key",
130 130
          "maxLength": 32,
131 131
          "minLength": 1,
132 132
          "description": "The internal ID of this component, matching with a text score defined by the game record."
133 133
        },
134 134
        "value": {
135 135
          "type": "string",
136 136
          "description": "The text value of this score."
137 137
        }
138 138
      },
139 139
      "description": "A fallback score component."
140 140
    },
141 141
    "points": {
142 142
      "type": "object",
143 143
      "required": [
144 144
        "value"
145 145
      ],
146 146
      "properties": {
147 147
        "value": {
148 148
          "type": "integer",
149 149
          "description": "The number of points earned, capped by the limit defined by the game record if present."
150 150
        }
151 151
      },
152 152
      "description": "An integer point score component."
153 153
    },
154 154
    "percentage": {
155 155
      "type": "object",
156 156
      "required": [
157 157
        "value"
158 158
      ],
159 159
      "properties": {
160 160
        "value": {
161 161
          "type": "string",
162 162
          "description": "The percentage score earned, capped and formatted by the limits defined by the game record. Stored as a decimal number without a percent sign."
163 163
        }
164 164
      },
165 165
      "description": "A percentage score component."
166 166
    }
167 167
  },
168 168
  "$type": "com.atproto.lexicon.schema",
169 169
  "lexicon": 1,
170 170
  "description": "Definitions related to scores in games hosting leaderboards via Tsunagite."
171 171
}

Compare Other Versions

Lexicon Garden

@