dev.tsunagite.score
Schema Diff
+2 -2
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
}