space.remanso.recording

apoena.dev

Schema Diff

+45 -1

From

CID
bafyreifj4rbippi...
Indexed At
2026-08-02 19:32 UTC
View this version

To

CID
bafyreie2zjvhgiw...
Indexed At
2026-08-02 19:35 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

5 breaking changes, 11 non-breaking changes.

Breaking Changes (5)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.licenseUrl", kind: "prop", name: Some("licenseUrl") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.creator", kind: "prop", name: Some("creator") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.license", kind: "prop", name: Some("license") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.sourceUrl", kind: "prop", name: Some("sourceUrl") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.title", kind: "prop", name: Some("title") }
Non-Breaking Changes (11)
  • AddedVertex AddedVertex { vertex_id: "space.remanso.recording#credit" }
  • AddedVertex AddedVertex { vertex_id: "space.remanso.recording#credit.creator" }
  • AddedVertex AddedVertex { vertex_id: "space.remanso.recording#credit.license" }
  • AddedVertex AddedVertex { vertex_id: "space.remanso.recording#credit.licenseUrl" }
  • AddedVertex AddedVertex { vertex_id: "space.remanso.recording#credit.sourceUrl" }
  • AddedVertex AddedVertex { vertex_id: "space.remanso.recording#credit.title" }
  • AddedVertex AddedVertex { vertex_id: "space.remanso.recording:body.credits" }
  • AddedVertex AddedVertex { vertex_id: "space.remanso.recording:body.credits:items" }
  • AddedEdge AddedEdge { src: "space.remanso.recording:body", tgt: "space.remanso.recording:body.credits", kind: "prop", name: Some("credits") }
  • AddedEdge AddedEdge { src: "space.remanso.recording:body.credits", tgt: "space.remanso.recording:body.credits:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "space.remanso.recording:body.credits:items", tgt: "space.remanso.recording#credit", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "space.remanso.recording#credit" }
  • AddedVertex { vertex_id: "space.remanso.recording#credit.creator" }
  • AddedVertex { vertex_id: "space.remanso.recording#credit.license" }
  • AddedVertex { vertex_id: "space.remanso.recording#credit.licenseUrl" }
  • AddedVertex { vertex_id: "space.remanso.recording#credit.sourceUrl" }
  • AddedVertex { vertex_id: "space.remanso.recording#credit.title" }
  • AddedVertex { vertex_id: "space.remanso.recording:body.credits" }
  • AddedVertex { vertex_id: "space.remanso.recording:body.credits:items" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.licenseUrl", kind: "prop", name: Some("licenseUrl") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.creator", kind: "prop", name: Some("creator") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.license", kind: "prop", name: Some("license") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.sourceUrl", kind: "prop", name: Some("sourceUrl") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.remanso.recording#credit", src: "space.remanso.recording#credit", tgt: "space.remanso.recording#credit.title", kind: "prop", name: Some("title") }
  • Non-breaking: AddedEdge { src: "space.remanso.recording:body", tgt: "space.remanso.recording:body.credits", kind: "prop", name: Some("credits") }
  • Non-breaking: AddedEdge { src: "space.remanso.recording:body.credits", tgt: "space.remanso.recording:body.credits:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { 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 +
    },
4 39
    "main": {
5 -
      "description": "An audio recording — a past stream, a podcast episode, a voice note — referenced from a Remanso note by at-uri.",
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.",
6 41
      "key": "tid",
7 42
      "record": {
8 43
        "properties": {
9 44
          "audio": {
10 45
            "accept": [
11 46
              "audio/*",
12 47
              "video/mp4",
13 48
              "video/webm"
14 49
            ],
15 50
            "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.",
16 51
            "maxSize": 50000000,
17 52
            "type": "blob"
18 53
          },
19 54
          "createdAt": {
20 55
            "format": "datetime",
21 56
            "type": "string"
22 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 +
          },
23 67
          "durationSec": {
24 68
            "description": "Playback length in seconds.",
25 69
            "type": "integer"
26 70
          },
27 71
          "recordedAt": {
28 72
            "description": "When the audio was originally captured — a past stream's air date, not the upload time.",
29 73
            "format": "datetime",
30 74
            "type": "string"
31 75
          },
32 76
          "title": {
33 77
            "maxLength": 1000,
34 78
            "type": "string"
35 79
          }
36 80
        },
37 81
        "required": [
38 82
          "audio",
39 83
          "createdAt"
40 84
        ],
41 85
        "type": "object"
42 86
      },
43 87
      "type": "record"
44 88
    }
45 89
  },
46 90
  "id": "space.remanso.recording",
47 91
  "lexicon": 1
48 92
}

Compare Other Versions

Lexicon Garden

@