A rhythm game net ranking service built on ATproto.
1{
2 "lexicon": 1,
3 "id": "dev.tsunagite.chart",
4 "description": "Definitions related to charts included in games hosting leaderboards via Tsunagite.",
5 "defs": {
6 "main": {
7 "type": "record",
8 "description": "A chart included in a game hosting leaderboards via Tsunagite.",
9 "key": "any",
10 "record": {
11 "type": "object",
12 "properties": {
13 "game": {
14 "type": "string",
15 "description": "The game this chart is included in. URI must point to a record of type `dev.tsunagite.game`.",
16 "format": "at-uri"
17 },
18 "song": {
19 "type": "string",
20 "description": "The song this chart is for. URI must point to a record of type `dev.tsunagite.song`.",
21 "format": "at-uri"
22 },
23 "difficulty": {
24 "type": "union",
25 "description": "The difficulty slot this chart is placed in. Can be an inline definition or a reference to a standard-defined difficulty slot.",
26 "refs": [
27 "dev.tsunagite.difficulty",
28 "dev.tsunagite.defs#typedRef"
29 ]
30 },
31 "rating": {
32 "type": "string",
33 "description": "The numeric difficulty rating displayed to players, formatted as a string to support decimal or + difficulties."
34 },
35 "rankedVersions": {
36 "type": "array",
37 "description": "The md5 hashes of any versions of the chart that are up-to-date enough to be leaderboard-legal. Optional if you will not perform leaderboard resets upon any chart changes.",
38 "items": {
39 "type": "bytes",
40 "minLength": 16,
41 "maxLength": 16
42 }
43 },
44 "jacket": {
45 "type": "blob",
46 "description": "The jacket or banner art of this chart, for display in UI. Will fall back to the song jacket if not present",
47 "accept": [
48 "image/png",
49 "image/jpeg",
50 "image/jxl",
51 "image/webp"
52 ],
53 "maxSize": 8000000
54 },
55 "jacketArtist": {
56 "type": "ref",
57 "description": "The name of the jacket artist for this chart.",
58 "ref": "dev.tsunagite.translatable"
59 },
60 "createdAt": {
61 "type": "string",
62 "format": "datetime"
63 },
64 "updatedAt": {
65 "type": "string",
66 "format": "datetime"
67 }
68 },
69 "required": [
70 "game",
71 "song",
72 "difficulty",
73 "rating"
74 ]
75 }
76 }
77 }
78}