space.remanso.recording
Schema Diff
+1 -45
Compatibility Analysis
Breaking Changes Detected
16 breaking changes, 0 non-breaking changes.
Breaking Changes (16)
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.licenseUrl", kind: "prop", name: Some("licenseUrl") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.creator", kind: "prop", name: Some("creator") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.license", kind: "prop", name: Some("license") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.sourceUrl", kind: "prop", name: Some("sourceUrl") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.title", kind: "prop", name: Some("title") }
- RemovedVertex RemovedVertex { vertex_id: "space.remanso.recording#credit" }
- RemovedVertex RemovedVertex { vertex_id: "space.remanso.recording#credit.creator" }
- RemovedVertex RemovedVertex { vertex_id: "space.remanso.recording#credit.license" }
- RemovedVertex RemovedVertex { vertex_id: "space.remanso.recording#credit.licenseUrl" }
- RemovedVertex RemovedVertex { vertex_id: "space.remanso.recording#credit.sourceUrl" }
- RemovedVertex RemovedVertex { vertex_id: "space.remanso.recording#credit.title" }
- RemovedVertex RemovedVertex { vertex_id: "space.remanso.recording:body.credits" }
- RemovedVertex RemovedVertex { vertex_id: "space.remanso.recording:body.credits:items" }
- RemovedEdge RemovedEdge { src: "space.remanso.recording:body", tgt: "space.remanso.recording:body.credits", kind: "prop", name: Some("credits") }
- RemovedEdge RemovedEdge { src: "space.remanso.recording:body.credits", tgt: "space.remanso.recording:body.credits:items", kind: "items", name: None }
- RemovedEdge RemovedEdge { src: "space.remanso.recording:body.credits:items", tgt: "space.remanso.recording#credit", kind: "ref", name: None }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "space.remanso.recording#credit" }RemovedVertex { vertex_id: "space.remanso.recording#credit.creator" }RemovedVertex { vertex_id: "space.remanso.recording#credit.license" }RemovedVertex { vertex_id: "space.remanso.recording#credit.licenseUrl" }RemovedVertex { vertex_id: "space.remanso.recording#credit.sourceUrl" }RemovedVertex { vertex_id: "space.remanso.recording#credit.title" }RemovedVertex { vertex_id: "space.remanso.recording:body.credits" }RemovedVertex { vertex_id: "space.remanso.recording:body.credits:items" }
Additional Notes
- Breaking: RequiredEdgeRemoved { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.licenseUrl", kind: "prop", name: Some("licenseUrl") }
- Breaking: RequiredEdgeRemoved { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.creator", kind: "prop", name: Some("creator") }
- Breaking: RequiredEdgeRemoved { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.license", kind: "prop", name: Some("license") }
- Breaking: RequiredEdgeRemoved { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.sourceUrl", kind: "prop", name: Some("sourceUrl") }
- Breaking: RequiredEdgeRemoved { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.title", kind: "prop", name: Some("title") }
- Breaking: RemovedEdge { src: "space.remanso.recording:body", tgt: "space.remanso.recording:body.credits", kind: "prop", name: Some("credits") }
- Breaking: RemovedEdge { src: "space.remanso.recording:body.credits", tgt: "space.remanso.recording:body.credits:items", kind: "items", name: None }
- Breaking: RemovedEdge { src: "space.remanso.recording:body.credits:items", tgt: "space.remanso.recording#credit", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
-
"credit": {
5
-
"description": "One openly licensed work used in the recording, and where its terms live.",
6
-
"properties": {
7
-
"creator": {
8
-
"maxLength": 1000,
9
-
"type": "string"
10
-
},
11
-
"license": {
12
-
"description": "The licence's short id, e.g. \"by\".",
13
-
"maxLength": 64,
14
-
"type": "string"
15
-
},
16
-
"licenseUrl": {
17
-
"format": "uri",
18
-
"type": "string"
19
-
},
20
-
"sourceUrl": {
21
-
"description": "The work's landing page at its provider.",
22
-
"format": "uri",
23
-
"type": "string"
24
-
},
25
-
"title": {
26
-
"maxLength": 1000,
27
-
"type": "string"
28
-
}
29
-
},
30
-
"required": [
31
-
"title",
32
-
"creator",
33
-
"license",
34
-
"licenseUrl",
35
-
"sourceUrl"
36
-
],
37
-
"type": "object"
38
-
},
39
4
"main": {
40
-
"description": "An audio recording — a past stream, a podcast episode, a voice note. A recording at rkey R is the recording of the space.remanso.note at rkey R in the same repo: one note, at most one recording, paired by convention rather than by a field, so a reader that knows the note's did and rkey reaches the audio with a single getRecord. A recording whose rkey matches no note stands alone and belongs to nobody. Legacy path: a recording is also referenced from a note by at-uri embedded in the note's content.",
5
+
"description": "An audio recording — a past stream, a podcast episode, a voice note — referenced from a Remanso note by at-uri.",
41
6
"key": "tid",
42
7
"record": {
43
8
"properties": {
44
9
"audio": {
45
10
"accept": [
46
11
"audio/*",
47
12
"video/mp4",
48
13
"video/webm"
49
14
],
50
15
"description": "The recording itself. video/mp4 and video/webm are accepted alongside audio/* because a PDS sniffs the container rather than trusting the upload's Content-Type: an audio-only MP4 or M4A sniffs as video/mp4, and a sniffer that reads no further than the EBML magic calls an audio-only WebM video/webm.",
51
16
"maxSize": 50000000,
52
17
"type": "blob"
53
18
},
54
19
"createdAt": {
55
20
"format": "datetime",
56
21
"type": "string"
57
-
},
58
-
"credits": {
59
-
"description": "Attribution for openly licensed music mixed into the recording. Only licences that require it are listed — a CC0 track is deliberately absent, because CC0 asks for nothing and an entry here would imply otherwise.",
60
-
"items": {
61
-
"ref": "#credit",
62
-
"type": "ref"
63
-
},
64
-
"maxLength": 64,
65
-
"type": "array"
66
22
},
67
23
"durationSec": {
68
24
"description": "Playback length in seconds.",
69
25
"type": "integer"
70
26
},
71
27
"recordedAt": {
72
28
"description": "When the audio was originally captured — a past stream's air date, not the upload time.",
73
29
"format": "datetime",
74
30
"type": "string"
75
31
},
76
32
"title": {
77
33
"maxLength": 1000,
78
34
"type": "string"
79
35
}
80
36
},
81
37
"required": [
82
38
"audio",
83
39
"createdAt"
84
40
],
85
41
"type": "object"
86
42
},
87
43
"type": "record"
88
44
}
89
45
},
90
46
"id": "space.remanso.recording",
91
47
"lexicon": 1
92
48
}