app.rocksky.scrobble.defs
Schema Diff
+24 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 9 non-breaking changes.
Non-Breaking Changes (9)
- AddedVertex AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView" }
- AddedVertex AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView.avatar" }
- AddedVertex AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView.handle" }
- AddedVertex AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView.timestamp" }
- AddedVertex AddedVertex { vertex_id: "app.rocksky.scrobble.defs#scrobbleViewDetailed.firstScrobble" }
- AddedEdge AddedEdge { src: "app.rocksky.scrobble.defs#firstScrobbleView", tgt: "app.rocksky.scrobble.defs#firstScrobbleView.avatar", kind: "prop", name: Some("avatar") }
- AddedEdge AddedEdge { src: "app.rocksky.scrobble.defs#firstScrobbleView", tgt: "app.rocksky.scrobble.defs#firstScrobbleView.handle", kind: "prop", name: Some("handle") }
- AddedEdge AddedEdge { src: "app.rocksky.scrobble.defs#firstScrobbleView", tgt: "app.rocksky.scrobble.defs#firstScrobbleView.timestamp", kind: "prop", name: Some("timestamp") }
- AddedEdge AddedEdge { src: "app.rocksky.scrobble.defs#scrobbleViewDetailed", tgt: "app.rocksky.scrobble.defs#scrobbleViewDetailed.firstScrobble", kind: "prop", name: Some("firstScrobble") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView" }AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView.avatar" }AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView.handle" }AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView.timestamp" }AddedVertex { vertex_id: "app.rocksky.scrobble.defs#scrobbleViewDetailed.firstScrobble" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.rocksky.scrobble.defs#firstScrobbleView", tgt: "app.rocksky.scrobble.defs#firstScrobbleView.avatar", kind: "prop", name: Some("avatar") }
- Non-breaking: AddedEdge { src: "app.rocksky.scrobble.defs#firstScrobbleView", tgt: "app.rocksky.scrobble.defs#firstScrobbleView.handle", kind: "prop", name: Some("handle") }
- Non-breaking: AddedEdge { src: "app.rocksky.scrobble.defs#firstScrobbleView", tgt: "app.rocksky.scrobble.defs#firstScrobbleView.timestamp", kind: "prop", name: Some("timestamp") }
- Non-breaking: AddedEdge { src: "app.rocksky.scrobble.defs#scrobbleViewDetailed", tgt: "app.rocksky.scrobble.defs#scrobbleViewDetailed.firstScrobble", kind: "prop", name: Some("firstScrobble") }
1
1
{
2
2
"id": "app.rocksky.scrobble.defs",
3
3
"defs": {
4
+
"firstScrobbleView": {
5
+
"type": "object",
6
+
"properties": {
7
+
"avatar": {
8
+
"type": "string",
9
+
"format": "uri",
10
+
"description": "The avatar URL of the user who first scrobbled this song."
11
+
},
12
+
"handle": {
13
+
"type": "string",
14
+
"description": "The handle of the user who first scrobbled this song."
15
+
},
16
+
"timestamp": {
17
+
"type": "string",
18
+
"format": "datetime",
19
+
"description": "The timestamp of the first scrobble."
20
+
}
21
+
}
22
+
},
4
23
"scrobbleViewBasic": {
5
24
"type": "object",
6
25
"properties": {
7
26
"id": {
8
27
"type": "string",
9
28
"description": "The unique identifier of the scrobble."
10
29
},
11
30
"uri": {
12
31
"type": "string",
13
32
"format": "uri",
14
33
"description": "The URI of the scrobble."
15
34
},
16
35
"date": {
17
36
"type": "string",
18
37
"format": "datetime",
19
38
"description": "The timestamp when the scrobble was created."
20
39
},
21
40
"user": {
22
41
"type": "string",
23
42
"description": "The handle of the user who created the scrobble."
24
43
},
25
44
"album": {
26
45
"type": "string",
27
46
"description": "The album of the song."
28
47
},
29
48
"cover": {
30
49
"type": "string",
31
50
"format": "uri",
32
51
"description": "The album art URL of the song."
33
52
},
34
53
"liked": {
35
54
"type": "boolean"
36
55
},
37
56
"title": {
38
57
"type": "string",
39
58
"description": "The title of the scrobble."
40
59
},
41
60
"artist": {
42
61
"type": "string",
43
62
"description": "The artist of the song."
44
63
},
45
64
"sha256": {
46
65
"type": "string",
47
66
"description": "The SHA256 hash of the scrobble data."
48
67
},
49
68
"albumUri": {
50
69
"type": "string",
51
70
"format": "at-uri",
52
71
"description": "The URI of the album."
53
72
},
54
73
"artistUri": {
55
74
"type": "string",
56
75
"format": "at-uri",
57
76
"description": "The URI of the artist."
58
77
},
59
78
"likesCount": {
60
79
"type": "integer"
61
80
},
62
81
"userAvatar": {
63
82
"type": "string",
64
83
"format": "uri",
65
84
"description": "The avatar URL of the user who created the scrobble."
66
85
},
67
86
"userDisplayName": {
68
87
"type": "string",
69
88
"description": "The display name of the user who created the scrobble."
70
89
}
71
90
}
72
91
},
73
92
"scrobbleViewDetailed": {
74
93
"type": "object",
75
94
"properties": {
76
95
"id": {
77
96
"type": "string",
78
97
"description": "The unique identifier of the scrobble."
79
98
},
80
99
"uri": {
81
100
"type": "string",
82
101
"format": "uri",
83
102
"description": "The URI of the scrobble."
84
103
},
85
104
"date": {
86
105
"type": "string",
87
106
"format": "datetime",
88
107
"description": "The timestamp when the scrobble was created."
89
108
},
90
109
"user": {
91
110
"type": "string",
92
111
"description": "The handle of the user who created the scrobble."
93
112
},
94
113
"album": {
95
114
"type": "string",
96
115
"description": "The album of the song."
97
116
},
98
117
"cover": {
99
118
"type": "string",
100
119
"format": "uri",
101
120
"description": "The album art URL of the song."
102
121
},
103
122
"title": {
104
123
"type": "string",
105
124
"description": "The title of the scrobble."
106
125
},
107
126
"artist": {
108
127
"type": "string",
109
128
"description": "The artist of the song."
110
129
},
111
130
"sha256": {
112
131
"type": "string",
113
132
"description": "The SHA256 hash of the scrobble data."
114
133
},
115
134
"artists": {
116
135
"type": "array",
117
136
"items": {
118
137
"ref": "app.rocksky.artist.defs#artistViewBasic",
119
138
"type": "ref"
120
139
}
121
140
},
122
141
"albumUri": {
123
142
"type": "string",
124
143
"format": "at-uri",
125
144
"description": "The URI of the album."
126
145
},
127
146
"artistUri": {
128
147
"type": "string",
129
148
"format": "at-uri",
130
149
"description": "The URI of the artist."
131
150
},
132
151
"listeners": {
133
152
"type": "integer",
134
153
"description": "The number of listeners"
135
154
},
136
155
"scrobbles": {
137
156
"type": "integer",
138
157
"description": "The number of scrobbles for this song"
158
+
},
159
+
"firstScrobble": {
160
+
"ref": "app.rocksky.scrobble.defs#firstScrobbleView",
161
+
"type": "ref",
162
+
"description": "The first scrobble of this song on Rocksky."
139
163
}
140
164
}
141
165
}
142
166
},
143
167
"$type": "com.atproto.lexicon.schema",
144
168
"lexicon": 1
145
169
}