space.dailygame.profile
Schema Diff
+58 -0
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 10 non-breaking changes.
Breaking Changes (2)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.dailygame.profile#badge", src: "space.dailygame.profile#badge", tgt: "space.dailygame.profile#badge.earnedAt", kind: "prop", name: Some("earnedAt") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.dailygame.profile#badge", src: "space.dailygame.profile#badge", tgt: "space.dailygame.profile#badge.id", kind: "prop", name: Some("id") }
Non-Breaking Changes (10)
- AddedVertex AddedVertex { vertex_id: "space.dailygame.profile#badge" }
- AddedVertex AddedVertex { vertex_id: "space.dailygame.profile#badge.category" }
- AddedVertex AddedVertex { vertex_id: "space.dailygame.profile#badge.earnedAt" }
- AddedVertex AddedVertex { vertex_id: "space.dailygame.profile#badge.id" }
- AddedVertex AddedVertex { vertex_id: "space.dailygame.profile:body.badges" }
- AddedVertex AddedVertex { vertex_id: "space.dailygame.profile:body.badges:items" }
- AddedEdge AddedEdge { src: "space.dailygame.profile#badge", tgt: "space.dailygame.profile#badge.category", kind: "prop", name: Some("category") }
- AddedEdge AddedEdge { src: "space.dailygame.profile:body", tgt: "space.dailygame.profile:body.badges", kind: "prop", name: Some("badges") }
- AddedEdge AddedEdge { src: "space.dailygame.profile:body.badges", tgt: "space.dailygame.profile:body.badges:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "space.dailygame.profile:body.badges:items", tgt: "space.dailygame.profile#badge", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "space.dailygame.profile#badge" }AddedVertex { vertex_id: "space.dailygame.profile#badge.category" }AddedVertex { vertex_id: "space.dailygame.profile#badge.earnedAt" }AddedVertex { vertex_id: "space.dailygame.profile#badge.id" }AddedVertex { vertex_id: "space.dailygame.profile:body.badges" }AddedVertex { vertex_id: "space.dailygame.profile:body.badges:items" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "space.dailygame.profile#badge", src: "space.dailygame.profile#badge", tgt: "space.dailygame.profile#badge.earnedAt", kind: "prop", name: Some("earnedAt") }
- Breaking: RequiredEdgeAdded { vertex_id: "space.dailygame.profile#badge", src: "space.dailygame.profile#badge", tgt: "space.dailygame.profile#badge.id", kind: "prop", name: Some("id") }
- Non-breaking: AddedEdge { src: "space.dailygame.profile#badge", tgt: "space.dailygame.profile#badge.category", kind: "prop", name: Some("category") }
- Non-breaking: AddedEdge { src: "space.dailygame.profile:body", tgt: "space.dailygame.profile:body.badges", kind: "prop", name: Some("badges") }
- Non-breaking: AddedEdge { src: "space.dailygame.profile:body.badges", tgt: "space.dailygame.profile:body.badges:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "space.dailygame.profile:body.badges:items", tgt: "space.dailygame.profile#badge", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
+
"badge": {
5
+
"description": "A user accomplishment. `id` is a stable identifier from the app's badge catalog; `earnedAt` is the date the user first met the criteria.",
6
+
"properties": {
7
+
"category": {
8
+
"description": "Grouping used by the app UI.",
9
+
"knownValues": [
10
+
"streak",
11
+
"variety",
12
+
"breadth",
13
+
"category-expert"
14
+
],
15
+
"type": "string"
16
+
},
17
+
"earnedAt": {
18
+
"description": "When the badge was first earned (date of earliest play that satisfied the criteria).",
19
+
"format": "datetime",
20
+
"type": "string"
21
+
},
22
+
"id": {
23
+
"description": "Badge id. Known values cover the app's published badge catalog; unknown values are accepted for forward compatibility.",
24
+
"knownValues": [
25
+
"streak-10",
26
+
"streak-25",
27
+
"streak-50",
28
+
"streak-100",
29
+
"streak-250",
30
+
"streak-365",
31
+
"games-10",
32
+
"games-15",
33
+
"games-20",
34
+
"games-30",
35
+
"games-50",
36
+
"5x5",
37
+
"10x10",
38
+
"category-expert-word",
39
+
"category-expert-logic",
40
+
"category-expert-geography",
41
+
"category-expert-trivia"
42
+
],
43
+
"maxLength": 64,
44
+
"type": "string"
45
+
}
46
+
},
47
+
"required": [
48
+
"id",
49
+
"earnedAt"
50
+
],
51
+
"type": "object"
52
+
},
4
53
"main": {
5
54
"description": "A user's daily-games profile. Singleton per repo (rkey = 'self').",
6
55
"key": "literal:self",
7
56
"record": {
8
57
"properties": {
58
+
"badges": {
59
+
"description": "Badges the user has earned. Once earned, a badge stays earned.",
60
+
"items": {
61
+
"ref": "#badge",
62
+
"type": "ref"
63
+
},
64
+
"maxLength": 256,
65
+
"type": "array"
66
+
},
9
67
"createdAt": {
10
68
"description": "When this profile record was first created.",
11
69
"format": "datetime",
12
70
"type": "string"
13
71
},
14
72
"displayName": {
15
73
"description": "Optional override of the user's Bluesky display name for this app.",
16
74
"maxGraphemes": 64,
17
75
"maxLength": 640,
18
76
"type": "string"
19
77
},
20
78
"displayOrder": {
21
79
"description": "Optional user-preferred ordering of game ids.",
22
80
"items": {
23
81
"maxLength": 64,
24
82
"type": "string"
25
83
},
26
84
"maxLength": 256,
27
85
"type": "array"
28
86
},
29
87
"favorites": {
30
88
"description": "Game ids that the user has favorited. Shown in a dedicated group on the home page.",
31
89
"items": {
32
90
"maxLength": 64,
33
91
"type": "string"
34
92
},
35
93
"maxLength": 256,
36
94
"type": "array"
37
95
},
38
96
"games": {
39
97
"description": "Game ids from the app catalog that the user plays.",
40
98
"items": {
41
99
"maxLength": 64,
42
100
"type": "string"
43
101
},
44
102
"maxLength": 256,
45
103
"type": "array"
46
104
},
47
105
"timezone": {
48
106
"description": "IANA timezone name used to compute daily resets for this user.",
49
107
"maxLength": 128,
50
108
"type": "string"
51
109
}
52
110
},
53
111
"required": [
54
112
"createdAt"
55
113
],
56
114
"type": "object"
57
115
},
58
116
"type": "record"
59
117
}
60
118
},
61
119
"id": "space.dailygame.profile",
62
120
"lexicon": 1
63
121
}