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