com.suibari.nagi.getRadioTrack
Schema Diff
+22 -2
Compatibility Analysis
Breaking Changes Detected
3 breaking changes, 8 non-breaking changes.
Breaking Changes (3)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getRadioTrack#track", src: "com.suibari.nagi.getRadioTrack#track", tgt: "com.suibari.nagi.getRadioTrack#track.songUrl", kind: "prop", name: Some("songUrl") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getRadioTrack#track", src: "com.suibari.nagi.getRadioTrack#track", tgt: "com.suibari.nagi.getRadioTrack#track.thumbnailUrl", kind: "prop", name: Some("thumbnailUrl") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "com.suibari.nagi.getRadioTrack#track", src: "com.suibari.nagi.getRadioTrack#track", tgt: "com.suibari.nagi.getRadioTrack#track.videoId", kind: "prop", name: Some("videoId") }
Non-Breaking Changes (8)
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getRadioTrack#track.commentEn" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getRadioTrack#track.commentJa" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getRadioTrack#track.songUrl" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getRadioTrack#track.thumbnailUrl" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getRadioTrack:output.unreadSlotKey" }
- AddedEdge AddedEdge { src: "com.suibari.nagi.getRadioTrack#track", tgt: "com.suibari.nagi.getRadioTrack#track.commentEn", kind: "prop", name: Some("commentEn") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.getRadioTrack#track", tgt: "com.suibari.nagi.getRadioTrack#track.commentJa", kind: "prop", name: Some("commentJa") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.getRadioTrack:output", tgt: "com.suibari.nagi.getRadioTrack:output.unreadSlotKey", kind: "prop", name: Some("unreadSlotKey") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.suibari.nagi.getRadioTrack#track.commentEn" }AddedVertex { vertex_id: "com.suibari.nagi.getRadioTrack#track.commentJa" }AddedVertex { vertex_id: "com.suibari.nagi.getRadioTrack#track.songUrl" }AddedVertex { vertex_id: "com.suibari.nagi.getRadioTrack#track.thumbnailUrl" }AddedVertex { vertex_id: "com.suibari.nagi.getRadioTrack:output.unreadSlotKey" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getRadioTrack#track", src: "com.suibari.nagi.getRadioTrack#track", tgt: "com.suibari.nagi.getRadioTrack#track.songUrl", kind: "prop", name: Some("songUrl") }
- Breaking: RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getRadioTrack#track", src: "com.suibari.nagi.getRadioTrack#track", tgt: "com.suibari.nagi.getRadioTrack#track.thumbnailUrl", kind: "prop", name: Some("thumbnailUrl") }
- Breaking: RequiredEdgeRemoved { vertex_id: "com.suibari.nagi.getRadioTrack#track", src: "com.suibari.nagi.getRadioTrack#track", tgt: "com.suibari.nagi.getRadioTrack#track.videoId", kind: "prop", name: Some("videoId") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.getRadioTrack#track", tgt: "com.suibari.nagi.getRadioTrack#track.commentEn", kind: "prop", name: Some("commentEn") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.getRadioTrack#track", tgt: "com.suibari.nagi.getRadioTrack#track.commentJa", kind: "prop", name: Some("commentJa") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.getRadioTrack:output", tgt: "com.suibari.nagi.getRadioTrack:output.unreadSlotKey", kind: "prop", name: Some("unreadSlotKey") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "認証した本人の現在のbotたんラジオ曲と未読状態。",
6
6
"output": {
7
7
"encoding": "application/json",
8
8
"schema": {
9
9
"properties": {
10
10
"hasUnread": {
11
11
"type": "boolean"
12
12
},
13
13
"track": {
14
14
"ref": "#track",
15
15
"type": "ref"
16
+
},
17
+
"unreadSlotKey": {
18
+
"type": "string"
16
19
}
17
20
},
18
21
"required": [
19
22
"hasUnread"
20
23
],
21
24
"type": "object"
22
25
}
23
26
},
24
27
"type": "query"
25
28
},
26
29
"track": {
27
30
"properties": {
28
31
"artist": {
29
32
"type": "string"
30
33
},
31
34
"comment": {
32
35
"type": "string"
33
36
},
37
+
"commentEn": {
38
+
"type": "string"
39
+
},
40
+
"commentJa": {
41
+
"type": "string"
42
+
},
34
43
"publishedAt": {
35
44
"format": "datetime",
36
45
"type": "string"
37
46
},
38
47
"slotKey": {
39
48
"type": "string"
40
49
},
50
+
"songUrl": {
51
+
"description": "選曲した曲のページ。Last.fmまたは既存のYouTubeリンク。",
52
+
"format": "uri",
53
+
"type": "string"
54
+
},
41
55
"sourceUrl": {
42
56
"format": "uri",
43
57
"type": "string"
44
58
},
59
+
"thumbnailUrl": {
60
+
"description": "曲のジャケット画像。既存のYouTube履歴では動画サムネイル。",
61
+
"format": "uri",
62
+
"type": "string"
63
+
},
45
64
"title": {
46
65
"type": "string"
47
66
},
48
67
"videoId": {
49
68
"type": "string"
50
69
}
51
70
},
52
71
"required": [
53
72
"slotKey",
54
73
"title",
55
74
"artist",
56
75
"comment",
57
-
"videoId",
58
-
"publishedAt"
76
+
"publishedAt",
77
+
"songUrl",
78
+
"thumbnailUrl"
59
79
],
60
80
"type": "object"
61
81
}
62
82
},
63
83
"id": "com.suibari.nagi.getRadioTrack",
64
84
"lexicon": 1
65
85
}