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