ch.indiemusi.alpha.recording
Schema Diff
+29 -2
Compatibility Analysis
Breaking Changes Detected
4 breaking changes, 8 non-breaking changes.
Breaking Changes (4)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "ch.indiemusi.alpha.recording#audioTrackRef", src: "ch.indiemusi.alpha.recording#audioTrackRef", tgt: "ch.indiemusi.alpha.recording#audioTrackRef.rkey", kind: "prop", name: Some("rkey") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "ch.indiemusi.alpha.recording#audioTrackRef", src: "ch.indiemusi.alpha.recording#audioTrackRef", tgt: "ch.indiemusi.alpha.recording#audioTrackRef.ownerDid", kind: "prop", name: Some("ownerDid") }
- RemovedVertex RemovedVertex { vertex_id: "ch.indiemusi.alpha.recording:body.audioFile" }
- RemovedEdge RemovedEdge { src: "ch.indiemusi.alpha.recording:body", tgt: "ch.indiemusi.alpha.recording:body.audioFile", kind: "prop", name: Some("audioFile") }
Non-Breaking Changes (8)
- AddedVertex AddedVertex { vertex_id: "ch.indiemusi.alpha.recording#audioTrackRef" }
- AddedVertex AddedVertex { vertex_id: "ch.indiemusi.alpha.recording#audioTrackRef.mimeType" }
- AddedVertex AddedVertex { vertex_id: "ch.indiemusi.alpha.recording#audioTrackRef.ownerDid" }
- AddedVertex AddedVertex { vertex_id: "ch.indiemusi.alpha.recording#audioTrackRef.rkey" }
- AddedVertex AddedVertex { vertex_id: "ch.indiemusi.alpha.recording:body.audioTrack" }
- AddedEdge AddedEdge { src: "ch.indiemusi.alpha.recording#audioTrackRef", tgt: "ch.indiemusi.alpha.recording#audioTrackRef.mimeType", kind: "prop", name: Some("mimeType") }
- AddedEdge AddedEdge { src: "ch.indiemusi.alpha.recording:body", tgt: "ch.indiemusi.alpha.recording:body.audioTrack", kind: "prop", name: Some("audioTrack") }
- AddedEdge AddedEdge { src: "ch.indiemusi.alpha.recording:body.audioTrack", tgt: "ch.indiemusi.alpha.recording#audioTrackRef", kind: "ref", name: None }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "ch.indiemusi.alpha.recording:body.audioFile" }
Added Elements
AddedVertex { vertex_id: "ch.indiemusi.alpha.recording#audioTrackRef" }AddedVertex { vertex_id: "ch.indiemusi.alpha.recording#audioTrackRef.mimeType" }AddedVertex { vertex_id: "ch.indiemusi.alpha.recording#audioTrackRef.ownerDid" }AddedVertex { vertex_id: "ch.indiemusi.alpha.recording#audioTrackRef.rkey" }AddedVertex { vertex_id: "ch.indiemusi.alpha.recording:body.audioTrack" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "ch.indiemusi.alpha.recording#audioTrackRef", src: "ch.indiemusi.alpha.recording#audioTrackRef", tgt: "ch.indiemusi.alpha.recording#audioTrackRef.rkey", kind: "prop", name: Some("rkey") }
- Breaking: RequiredEdgeAdded { vertex_id: "ch.indiemusi.alpha.recording#audioTrackRef", src: "ch.indiemusi.alpha.recording#audioTrackRef", tgt: "ch.indiemusi.alpha.recording#audioTrackRef.ownerDid", kind: "prop", name: Some("ownerDid") }
- Breaking: RemovedEdge { src: "ch.indiemusi.alpha.recording:body", tgt: "ch.indiemusi.alpha.recording:body.audioFile", kind: "prop", name: Some("audioFile") }
- Non-breaking: AddedEdge { src: "ch.indiemusi.alpha.recording#audioTrackRef", tgt: "ch.indiemusi.alpha.recording#audioTrackRef.mimeType", kind: "prop", name: Some("mimeType") }
- Non-breaking: AddedEdge { src: "ch.indiemusi.alpha.recording:body", tgt: "ch.indiemusi.alpha.recording:body.audioTrack", kind: "prop", name: Some("audioTrack") }
- Non-breaking: AddedEdge { src: "ch.indiemusi.alpha.recording:body.audioTrack", tgt: "ch.indiemusi.alpha.recording#audioTrackRef", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"artist": {
5
5
"description": "Information about an artist contributing to the recording",
6
6
"properties": {
7
7
"artist": {
8
8
"ref": "ch.indiemusi.alpha.actor.artist",
9
9
"type": "ref"
10
10
},
11
11
"did": {
12
12
"format": "did",
13
13
"type": "string"
14
14
},
15
15
"name": {
16
16
"maxLength": 255,
17
17
"type": "string"
18
18
}
19
19
},
20
20
"required": [
21
21
"name"
22
22
],
23
23
"type": "object"
24
24
},
25
+
"audioTrackRef": {
26
+
"description": "Pointer to a ch.indiemusi.alpha.audioTrack record in the owner's private space. Requires a space credential from the owner's PDS to retrieve the audio blob.",
27
+
"properties": {
28
+
"mimeType": {
29
+
"description": "MIME type hint, e.g. audio/flac. Allows display without fetching the space record.",
30
+
"maxLength": 127,
31
+
"type": "string"
32
+
},
33
+
"ownerDid": {
34
+
"description": "DID of the user whose space hosts the audio track record.",
35
+
"format": "did",
36
+
"type": "string"
37
+
},
38
+
"rkey": {
39
+
"description": "Record key of the ch.indiemusi.alpha.audioTrack record within the space.",
40
+
"maxLength": 512,
41
+
"type": "string"
42
+
}
43
+
},
44
+
"required": [
45
+
"ownerDid",
46
+
"rkey"
47
+
],
48
+
"type": "object"
49
+
},
25
50
"main": {
26
51
"description": "A recording of a song or musical work: the performance captured in a specific format",
27
52
"key": "tid",
28
53
"record": {
29
54
"properties": {
30
55
"artists": {
31
56
"items": {
32
57
"ref": "#artist",
33
58
"type": "ref"
34
59
},
35
60
"minLength": 1,
36
61
"type": "array"
37
62
},
38
-
"audioFile": {
39
-
"type": "blob"
63
+
"audioTrack": {
64
+
"description": "Reference to the access-controlled audio file stored in the owner's atproto space.",
65
+
"ref": "#audioTrackRef",
66
+
"type": "ref"
40
67
},
41
68
"duration": {
42
69
"description": "Duration of the recording in seconds",
43
70
"type": "integer"
44
71
},
45
72
"isrc": {
46
73
"description": "ISRC (International Standard Recording Code) with which the recording is registered",
47
74
"maxLength": 12,
48
75
"type": "string"
49
76
},
50
77
"masterOwner": {
51
78
"ref": "#masterOwnerInfo",
52
79
"type": "ref"
53
80
},
54
81
"song": {
55
82
"ref": "ch.indiemusi.alpha.song",
56
83
"type": "ref"
57
84
},
58
85
"title": {
59
86
"maxLength": 255,
60
87
"type": "string"
61
88
}
62
89
},
63
90
"required": [
64
91
"title",
65
92
"artists"
66
93
],
67
94
"type": "object"
68
95
},
69
96
"type": "record"
70
97
},
71
98
"masterOwnerInfo": {
72
99
"description": "Information about the master owner",
73
100
"properties": {
74
101
"did": {
75
102
"format": "did",
76
103
"type": "string"
77
104
},
78
105
"masterOwner": {
79
106
"ref": "ch.indiemusi.alpha.actor.masterOwner",
80
107
"type": "ref"
81
108
},
82
109
"name": {
83
110
"maxLength": 255,
84
111
"type": "string"
85
112
}
86
113
},
87
114
"type": "object"
88
115
}
89
116
},
90
117
"id": "ch.indiemusi.alpha.recording",
91
118
"lexicon": 1
92
119
}