space.opendeck.profile
Schema Diff
+192 -13
Compatibility Analysis
Breaking Changes Detected
15 breaking changes, 53 non-breaking changes.
Breaking Changes (15)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.secondsStudied", kind: "prop", name: Some("secondsStudied") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.activity", kind: "prop", name: Some("activity") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.updatedAt", kind: "prop", name: Some("updatedAt") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.repetitions", kind: "prop", name: Some("repetitions") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.learned", kind: "prop", name: Some("learned") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.learning", kind: "prop", name: Some("learning") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.activityEnd", kind: "prop", name: Some("activityEnd") }
- RemovedVertex RemovedVertex { vertex_id: "space.opendeck.profile:body.reminderTime" }
- RemovedVertex RemovedVertex { vertex_id: "space.opendeck.profile:body.visibleDecks" }
- RemovedVertex RemovedVertex { vertex_id: "space.opendeck.profile:body.visibleDecks:items" }
- RemovedEdge RemovedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.reminderTime", kind: "prop", name: Some("reminderTime") }
- RemovedEdge RemovedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.visibleDecks", kind: "prop", name: Some("visibleDecks") }
- RemovedEdge RemovedEdge { src: "space.opendeck.profile:body.visibleDecks", tgt: "space.opendeck.profile:body.visibleDecks:items", kind: "items", name: None }
- ConstraintAdded ConstraintAdded { vertex_id: "space.opendeck.profile:body.reminderDays:items", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "space.opendeck.profile:body.reminderDays:items", sort: "maximum", value: "6" }
Non-Breaking Changes (53)
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile#publicStats" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile#publicStats.activity" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile#publicStats.activity:items" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile#publicStats.activityEnd" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile#publicStats.firstStudiedOn" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile#publicStats.lastStudiedAt" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile#publicStats.learned" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile#publicStats.learning" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile#publicStats.repetitions" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile#publicStats.retention" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile#publicStats.secondsStudied" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile#publicStats.updatedAt" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.breakReminders" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.creditStyle" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.newCardsPerDay" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.publicStats" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.reminderHour" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.shortTermIntervals" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.showCredits" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.showFollowsOnProfile" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.showMotivation" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.showStats" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.showTier" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.studyDays" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.studyDays:items" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.studyDaysEnd" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.studyTier" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.studyTierAt" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.tierStyle" }
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.uiLanguage" }
- AddedEdge AddedEdge { src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.firstStudiedOn", kind: "prop", name: Some("firstStudiedOn") }
- AddedEdge AddedEdge { src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.lastStudiedAt", kind: "prop", name: Some("lastStudiedAt") }
- AddedEdge AddedEdge { src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.retention", kind: "prop", name: Some("retention") }
- AddedEdge AddedEdge { src: "space.opendeck.profile#publicStats.activity", tgt: "space.opendeck.profile#publicStats.activity:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.breakReminders", kind: "prop", name: Some("breakReminders") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.creditStyle", kind: "prop", name: Some("creditStyle") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.newCardsPerDay", kind: "prop", name: Some("newCardsPerDay") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.publicStats", kind: "prop", name: Some("publicStats") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.reminderHour", kind: "prop", name: Some("reminderHour") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.shortTermIntervals", kind: "prop", name: Some("shortTermIntervals") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.showCredits", kind: "prop", name: Some("showCredits") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.showFollowsOnProfile", kind: "prop", name: Some("showFollowsOnProfile") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.showMotivation", kind: "prop", name: Some("showMotivation") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.showStats", kind: "prop", name: Some("showStats") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.showTier", kind: "prop", name: Some("showTier") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.studyDays", kind: "prop", name: Some("studyDays") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.studyDaysEnd", kind: "prop", name: Some("studyDaysEnd") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.studyTier", kind: "prop", name: Some("studyTier") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.studyTierAt", kind: "prop", name: Some("studyTierAt") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.tierStyle", kind: "prop", name: Some("tierStyle") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.uiLanguage", kind: "prop", name: Some("uiLanguage") }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body.publicStats", tgt: "space.opendeck.profile#publicStats", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body.studyDays", tgt: "space.opendeck.profile:body.studyDays:items", kind: "items", name: None }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "space.opendeck.profile:body.reminderTime" }RemovedVertex { vertex_id: "space.opendeck.profile:body.visibleDecks" }RemovedVertex { vertex_id: "space.opendeck.profile:body.visibleDecks:items" }
Added Elements
AddedVertex { vertex_id: "space.opendeck.profile#publicStats" }AddedVertex { vertex_id: "space.opendeck.profile#publicStats.activity" }AddedVertex { vertex_id: "space.opendeck.profile#publicStats.activity:items" }AddedVertex { vertex_id: "space.opendeck.profile#publicStats.activityEnd" }AddedVertex { vertex_id: "space.opendeck.profile#publicStats.firstStudiedOn" }AddedVertex { vertex_id: "space.opendeck.profile#publicStats.lastStudiedAt" }AddedVertex { vertex_id: "space.opendeck.profile#publicStats.learned" }AddedVertex { vertex_id: "space.opendeck.profile#publicStats.learning" }AddedVertex { vertex_id: "space.opendeck.profile#publicStats.repetitions" }AddedVertex { vertex_id: "space.opendeck.profile#publicStats.retention" }AddedVertex { vertex_id: "space.opendeck.profile#publicStats.secondsStudied" }AddedVertex { vertex_id: "space.opendeck.profile#publicStats.updatedAt" }AddedVertex { vertex_id: "space.opendeck.profile:body.breakReminders" }AddedVertex { vertex_id: "space.opendeck.profile:body.creditStyle" }AddedVertex { vertex_id: "space.opendeck.profile:body.newCardsPerDay" }AddedVertex { vertex_id: "space.opendeck.profile:body.publicStats" }AddedVertex { vertex_id: "space.opendeck.profile:body.reminderHour" }AddedVertex { vertex_id: "space.opendeck.profile:body.shortTermIntervals" }AddedVertex { vertex_id: "space.opendeck.profile:body.showCredits" }AddedVertex { vertex_id: "space.opendeck.profile:body.showFollowsOnProfile" }AddedVertex { vertex_id: "space.opendeck.profile:body.showMotivation" }AddedVertex { vertex_id: "space.opendeck.profile:body.showStats" }AddedVertex { vertex_id: "space.opendeck.profile:body.showTier" }AddedVertex { vertex_id: "space.opendeck.profile:body.studyDays" }AddedVertex { vertex_id: "space.opendeck.profile:body.studyDays:items" }AddedVertex { vertex_id: "space.opendeck.profile:body.studyDaysEnd" }AddedVertex { vertex_id: "space.opendeck.profile:body.studyTier" }AddedVertex { vertex_id: "space.opendeck.profile:body.studyTierAt" }AddedVertex { vertex_id: "space.opendeck.profile:body.tierStyle" }AddedVertex { vertex_id: "space.opendeck.profile:body.uiLanguage" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "space.opendeck.profile:body.reminderDays:items", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "space.opendeck.profile:body.reminderDays:items", sort: "maximum", value: "6" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.secondsStudied", kind: "prop", name: Some("secondsStudied") }
- Breaking: RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.activity", kind: "prop", name: Some("activity") }
- Breaking: RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.updatedAt", kind: "prop", name: Some("updatedAt") }
- Breaking: RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.repetitions", kind: "prop", name: Some("repetitions") }
- Breaking: RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.learned", kind: "prop", name: Some("learned") }
- Breaking: RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.learning", kind: "prop", name: Some("learning") }
- Breaking: RequiredEdgeAdded { vertex_id: "space.opendeck.profile#publicStats", src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.activityEnd", kind: "prop", name: Some("activityEnd") }
- Breaking: RemovedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.reminderTime", kind: "prop", name: Some("reminderTime") }
- Breaking: RemovedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.visibleDecks", kind: "prop", name: Some("visibleDecks") }
- Breaking: RemovedEdge { src: "space.opendeck.profile:body.visibleDecks", tgt: "space.opendeck.profile:body.visibleDecks:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.firstStudiedOn", kind: "prop", name: Some("firstStudiedOn") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.lastStudiedAt", kind: "prop", name: Some("lastStudiedAt") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile#publicStats", tgt: "space.opendeck.profile#publicStats.retention", kind: "prop", name: Some("retention") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile#publicStats.activity", tgt: "space.opendeck.profile#publicStats.activity:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.breakReminders", kind: "prop", name: Some("breakReminders") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.creditStyle", kind: "prop", name: Some("creditStyle") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.newCardsPerDay", kind: "prop", name: Some("newCardsPerDay") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.publicStats", kind: "prop", name: Some("publicStats") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.reminderHour", kind: "prop", name: Some("reminderHour") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.shortTermIntervals", kind: "prop", name: Some("shortTermIntervals") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.showCredits", kind: "prop", name: Some("showCredits") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.showFollowsOnProfile", kind: "prop", name: Some("showFollowsOnProfile") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.showMotivation", kind: "prop", name: Some("showMotivation") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.showStats", kind: "prop", name: Some("showStats") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.showTier", kind: "prop", name: Some("showTier") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.studyDays", kind: "prop", name: Some("studyDays") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.studyDaysEnd", kind: "prop", name: Some("studyDaysEnd") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.studyTier", kind: "prop", name: Some("studyTier") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.studyTierAt", kind: "prop", name: Some("studyTierAt") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.tierStyle", kind: "prop", name: Some("tierStyle") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.uiLanguage", kind: "prop", name: Some("uiLanguage") }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body.publicStats", tgt: "space.opendeck.profile#publicStats", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body.studyDays", tgt: "space.opendeck.profile:body.studyDays:items", kind: "items", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "OpenDeck profile and synced preferences.",
6
6
"key": "literal:self",
7
7
"record": {
8
8
"properties": {
9
9
"accentColor": {
10
10
"description": "Hex accent color, e.g. #3b82f6.",
11
11
"maxGraphemes": 9,
12
12
"maxLength": 90,
13
13
"type": "string"
14
14
},
15
15
"bio": {
16
16
"maxGraphemes": 2000,
17
17
"maxLength": 20000,
18
18
"type": "string"
19
19
},
20
+
"breakReminders": {
21
+
"description": "Suggest breaks after long study sessions or days; absent means on.",
22
+
"type": "boolean"
23
+
},
24
+
"creditStyle": {
25
+
"description": "How shown credit roles look: theme styles the whole profile, badges only lists them; absent means theme.",
26
+
"enum": [
27
+
"theme",
28
+
"badges"
29
+
],
30
+
"type": "string"
31
+
},
20
32
"defaultVisibility": {
21
33
"enum": [
22
34
"public",
23
35
"private"
24
36
],
25
37
"type": "string"
26
38
},
39
+
"newCardsPerDay": {
40
+
"description": "How many new cards to introduce per deck each day; absent means no limit.",
41
+
"maximum": 1000,
42
+
"minimum": 1,
43
+
"type": "integer"
44
+
},
45
+
"publicStats": {
46
+
"description": "Summary of your study stats without deck or card details; only present while showStats is everyone.",
47
+
"ref": "space.opendeck.profile#publicStats",
48
+
"type": "ref"
49
+
},
27
50
"reminderDays": {
28
-
"description": "Weekdays 0-6 (Sun-Sat).",
51
+
"description": "Weekdays 0-6 (Sun-Sat); absent means Monday to Friday.",
29
52
"items": {
53
+
"maximum": 6,
54
+
"minimum": 0,
30
55
"type": "integer"
31
56
},
32
57
"maxLength": 7,
33
58
"type": "array"
34
59
},
35
60
"reminderEnabled": {
36
61
"type": "boolean"
37
62
},
38
-
"reminderTime": {
39
-
"description": "Local reminder time, HH:MM.",
40
-
"maxGraphemes": 5,
41
-
"maxLength": 50,
63
+
"reminderHour": {
64
+
"description": "Local hour (0-23) of the study reminder; absent means 19.",
65
+
"maximum": 23,
66
+
"minimum": 0,
67
+
"type": "integer"
68
+
},
69
+
"shortTermIntervals": {
70
+
"description": "Default short-term intervals preset; absent means auto.",
71
+
"enum": [
72
+
"auto",
73
+
"quick",
74
+
"balanced",
75
+
"relaxed",
76
+
"spaced"
77
+
],
42
78
"type": "string"
43
79
},
44
80
"showActivityOnProfile": {
45
81
"type": "boolean"
46
82
},
83
+
"showCredits": {
84
+
"description": "Who sees your OpenDeck credit roles on your profile; absent means everyone.",
85
+
"enum": [
86
+
"nobody",
87
+
"me",
88
+
"everyone"
89
+
],
90
+
"type": "string"
91
+
},
47
92
"showDecksOnProfile": {
48
93
"type": "boolean"
49
94
},
95
+
"showFollowsOnProfile": {
96
+
"type": "boolean"
97
+
},
98
+
"showMotivation": {
99
+
"description": "Who sees tier progress boxes: nobody hides them, me shows them on the home, study and profile pages, everyone also shows the profile box to visitors (only while showTier is everyone); absent means me.",
100
+
"enum": [
101
+
"nobody",
102
+
"me",
103
+
"everyone"
104
+
],
105
+
"type": "string"
106
+
},
50
107
"showProgressOnProfile": {
51
108
"type": "boolean"
52
109
},
53
-
"updatedAt": {
54
-
"format": "datetime",
110
+
"showStats": {
111
+
"description": "Who sees your study stats on your profile; absent means me.",
112
+
"enum": [
113
+
"nobody",
114
+
"me",
115
+
"everyone"
116
+
],
55
117
"type": "string"
56
118
},
57
-
"visibleDecks": {
119
+
"showTier": {
120
+
"description": "Who sees your study tier on your profile, and with everyone also in battles; absent means me.",
121
+
"enum": [
122
+
"nobody",
123
+
"me",
124
+
"everyone"
125
+
],
126
+
"type": "string"
127
+
},
128
+
"studyDays": {
129
+
"description": "Study sessions per day (capped at 3) for the 84 days up to studyDaysEnd, oldest first; only present while the motivation box is public.",
58
130
"items": {
59
-
"format": "at-uri",
60
-
"maxGraphemes": 1000,
61
-
"maxLength": 10000,
62
-
"type": "string"
131
+
"maximum": 3,
132
+
"minimum": 0,
133
+
"type": "integer"
63
134
},
135
+
"maxLength": 84,
136
+
"type": "array"
137
+
},
138
+
"studyDaysEnd": {
139
+
"description": "Local date (YYYY-MM-DD) of the last entry in studyDays.",
140
+
"maxGraphemes": 10,
64
141
"maxLength": 100,
65
-
"type": "array"
142
+
"type": "string"
143
+
},
144
+
"studyTier": {
145
+
"description": "Study tier from the days studied in the last four weeks; only present while it is shown publicly.",
146
+
"enum": [
147
+
"bronze",
148
+
"silver",
149
+
"gold",
150
+
"platinum",
151
+
"diamond",
152
+
"champion",
153
+
"grandChampion",
154
+
"supernova"
155
+
],
156
+
"type": "string"
157
+
},
158
+
"studyTierAt": {
159
+
"description": "When studyTier was last computed.",
160
+
"format": "datetime",
161
+
"type": "string"
162
+
},
163
+
"tierStyle": {
164
+
"description": "How a shown tier looks: theme styles the whole profile, badge only adds a badge; absent means theme.",
165
+
"enum": [
166
+
"theme",
167
+
"badge"
168
+
],
169
+
"type": "string"
170
+
},
171
+
"uiLanguage": {
172
+
"description": "BCP-47 language tag for the OpenDeck interface.",
173
+
"maxGraphemes": 20,
174
+
"maxLength": 200,
175
+
"type": "string"
176
+
},
177
+
"updatedAt": {
178
+
"format": "datetime",
179
+
"type": "string"
66
180
}
67
181
},
68
182
"type": "object"
69
183
},
70
184
"type": "record"
185
+
},
186
+
"publicStats": {
187
+
"properties": {
188
+
"activity": {
189
+
"description": "Repetitions per day for the days up to activityEnd, oldest first.",
190
+
"items": {
191
+
"minimum": 0,
192
+
"type": "integer"
193
+
},
194
+
"maxLength": 371,
195
+
"type": "array"
196
+
},
197
+
"activityEnd": {
198
+
"description": "Local date (YYYY-MM-DD) of the last entry in activity.",
199
+
"maxGraphemes": 10,
200
+
"maxLength": 100,
201
+
"type": "string"
202
+
},
203
+
"firstStudiedOn": {
204
+
"description": "Local date (YYYY-MM-DD) of the first study day.",
205
+
"maxGraphemes": 10,
206
+
"maxLength": 100,
207
+
"type": "string"
208
+
},
209
+
"lastStudiedAt": {
210
+
"format": "datetime",
211
+
"type": "string"
212
+
},
213
+
"learned": {
214
+
"description": "Cards in review.",
215
+
"type": "integer"
216
+
},
217
+
"learning": {
218
+
"description": "Cards in learning or relearning.",
219
+
"type": "integer"
220
+
},
221
+
"repetitions": {
222
+
"description": "All ratings ever given.",
223
+
"type": "integer"
224
+
},
225
+
"retention": {
226
+
"description": "Percent of ratings in the last 30 days that were not again.",
227
+
"maximum": 100,
228
+
"minimum": 0,
229
+
"type": "integer"
230
+
},
231
+
"secondsStudied": {
232
+
"description": "Active study time in the last 365 days.",
233
+
"type": "integer"
234
+
},
235
+
"updatedAt": {
236
+
"format": "datetime",
237
+
"type": "string"
238
+
}
239
+
},
240
+
"required": [
241
+
"learned",
242
+
"learning",
243
+
"repetitions",
244
+
"secondsStudied",
245
+
"activity",
246
+
"activityEnd",
247
+
"updatedAt"
248
+
],
249
+
"type": "object"
71
250
}
72
251
},
73
252
"id": "space.opendeck.profile",
74
253
"lexicon": 1
75
254
}