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
"id": "space.remanso.recording",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"audio",
11
11
"createdAt"
12
12
],
13
13
"properties": {
14
14
"audio": {
15
15
"type": "blob",
16
16
"accept": [
17
17
"audio/*",
18
18
"video/mp4",
19
19
"video/webm"
20
20
],
21
21
"maxSize": 50000000,
22
22
"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."
23
23
},
24
24
"title": {
25
25
"type": "string",
26
26
"maxLength": 1000
27
27
},
28
-
"credits": {
29
-
"type": "array",
30
-
"items": {
31
-
"ref": "#credit",
32
-
"type": "ref"
33
-
},
34
-
"maxLength": 64,
35
-
"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."
36
-
},
37
28
"createdAt": {
38
29
"type": "string",
39
30
"format": "datetime"
40
31
},
41
32
"recordedAt": {
42
33
"type": "string",
43
34
"format": "datetime",
44
35
"description": "When the audio was originally captured — a past stream's air date, not the upload time."
45
36
},
46
37
"durationSec": {
47
38
"type": "integer",
48
39
"description": "Playback length in seconds."
49
40
}
50
41
}
51
42
},
52
-
"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."
53
-
},
54
-
"credit": {
55
-
"type": "object",
56
-
"required": [
57
-
"title",
58
-
"creator",
59
-
"license",
60
-
"licenseUrl",
61
-
"sourceUrl"
62
-
],
63
-
"properties": {
64
-
"title": {
65
-
"type": "string",
66
-
"maxLength": 1000
67
-
},
68
-
"creator": {
69
-
"type": "string",
70
-
"maxLength": 1000
71
-
},
72
-
"license": {
73
-
"type": "string",
74
-
"maxLength": 64,
75
-
"description": "The licence's short id, e.g. \"by\"."
76
-
},
77
-
"sourceUrl": {
78
-
"type": "string",
79
-
"format": "uri",
80
-
"description": "The work's landing page at its provider."
81
-
},
82
-
"licenseUrl": {
83
-
"type": "string",
84
-
"format": "uri"
85
-
}
86
-
},
87
-
"description": "One openly licensed work used in the recording, and where its terms live."
43
+
"description": "An audio recording — a past stream, a podcast episode, a voice note — referenced from a Remanso note by at-uri."
88
44
}
89
45
},
90
46
"$type": "com.atproto.lexicon.schema",
91
47
"lexicon": 1
92
48
}