ch.indiemusi.alpha.recording

indiemusi.ch

Schema Diff

+6 -6

From

CID
bafyreicsujnspxz...
Indexed At
2026-08-30 15:56 UTC
View this version

To

CID
bafyreig26d2aarx...
Indexed At
2026-08-30 17:36 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@