app.rocksky.scrobble.defs

rocksky.app

Schema Diff

+24 -0

From

CID
bafyreiepx5olkma...
Indexed At
2026-02-18 18:24 UTC
View this version

To

CID
bafyreiepxov45gi...
Indexed At
2026-05-31 08:20 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 9 non-breaking changes.

Non-Breaking Changes (9)
  • AddedVertex AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView" }
  • AddedVertex AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView.avatar" }
  • AddedVertex AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView.handle" }
  • AddedVertex AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView.timestamp" }
  • AddedVertex AddedVertex { vertex_id: "app.rocksky.scrobble.defs#scrobbleViewDetailed.firstScrobble" }
  • AddedEdge AddedEdge { src: "app.rocksky.scrobble.defs#firstScrobbleView", tgt: "app.rocksky.scrobble.defs#firstScrobbleView.avatar", kind: "prop", name: Some("avatar") }
  • AddedEdge AddedEdge { src: "app.rocksky.scrobble.defs#firstScrobbleView", tgt: "app.rocksky.scrobble.defs#firstScrobbleView.handle", kind: "prop", name: Some("handle") }
  • AddedEdge AddedEdge { src: "app.rocksky.scrobble.defs#firstScrobbleView", tgt: "app.rocksky.scrobble.defs#firstScrobbleView.timestamp", kind: "prop", name: Some("timestamp") }
  • AddedEdge AddedEdge { src: "app.rocksky.scrobble.defs#scrobbleViewDetailed", tgt: "app.rocksky.scrobble.defs#scrobbleViewDetailed.firstScrobble", kind: "prop", name: Some("firstScrobble") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView" }
  • AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView.avatar" }
  • AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView.handle" }
  • AddedVertex { vertex_id: "app.rocksky.scrobble.defs#firstScrobbleView.timestamp" }
  • AddedVertex { vertex_id: "app.rocksky.scrobble.defs#scrobbleViewDetailed.firstScrobble" }

Additional Notes

  • Non-breaking: AddedEdge { src: "app.rocksky.scrobble.defs#firstScrobbleView", tgt: "app.rocksky.scrobble.defs#firstScrobbleView.avatar", kind: "prop", name: Some("avatar") }
  • Non-breaking: AddedEdge { src: "app.rocksky.scrobble.defs#firstScrobbleView", tgt: "app.rocksky.scrobble.defs#firstScrobbleView.handle", kind: "prop", name: Some("handle") }
  • Non-breaking: AddedEdge { src: "app.rocksky.scrobble.defs#firstScrobbleView", tgt: "app.rocksky.scrobble.defs#firstScrobbleView.timestamp", kind: "prop", name: Some("timestamp") }
  • Non-breaking: AddedEdge { src: "app.rocksky.scrobble.defs#scrobbleViewDetailed", tgt: "app.rocksky.scrobble.defs#scrobbleViewDetailed.firstScrobble", kind: "prop", name: Some("firstScrobble") }
1 1
{
2 2
  "id": "app.rocksky.scrobble.defs",
3 3
  "defs": {
4 +
    "firstScrobbleView": {
5 +
      "type": "object",
6 +
      "properties": {
7 +
        "avatar": {
8 +
          "type": "string",
9 +
          "format": "uri",
10 +
          "description": "The avatar URL of the user who first scrobbled this song."
11 +
        },
12 +
        "handle": {
13 +
          "type": "string",
14 +
          "description": "The handle of the user who first scrobbled this song."
15 +
        },
16 +
        "timestamp": {
17 +
          "type": "string",
18 +
          "format": "datetime",
19 +
          "description": "The timestamp of the first scrobble."
20 +
        }
21 +
      }
22 +
    },
4 23
    "scrobbleViewBasic": {
5 24
      "type": "object",
6 25
      "properties": {
7 26
        "id": {
8 27
          "type": "string",
9 28
          "description": "The unique identifier of the scrobble."
10 29
        },
11 30
        "uri": {
12 31
          "type": "string",
13 32
          "format": "uri",
14 33
          "description": "The URI of the scrobble."
15 34
        },
16 35
        "date": {
17 36
          "type": "string",
18 37
          "format": "datetime",
19 38
          "description": "The timestamp when the scrobble was created."
20 39
        },
21 40
        "user": {
22 41
          "type": "string",
23 42
          "description": "The handle of the user who created the scrobble."
24 43
        },
25 44
        "album": {
26 45
          "type": "string",
27 46
          "description": "The album of the song."
28 47
        },
29 48
        "cover": {
30 49
          "type": "string",
31 50
          "format": "uri",
32 51
          "description": "The album art URL of the song."
33 52
        },
34 53
        "liked": {
35 54
          "type": "boolean"
36 55
        },
37 56
        "title": {
38 57
          "type": "string",
39 58
          "description": "The title of the scrobble."
40 59
        },
41 60
        "artist": {
42 61
          "type": "string",
43 62
          "description": "The artist of the song."
44 63
        },
45 64
        "sha256": {
46 65
          "type": "string",
47 66
          "description": "The SHA256 hash of the scrobble data."
48 67
        },
49 68
        "albumUri": {
50 69
          "type": "string",
51 70
          "format": "at-uri",
52 71
          "description": "The URI of the album."
53 72
        },
54 73
        "artistUri": {
55 74
          "type": "string",
56 75
          "format": "at-uri",
57 76
          "description": "The URI of the artist."
58 77
        },
59 78
        "likesCount": {
60 79
          "type": "integer"
61 80
        },
62 81
        "userAvatar": {
63 82
          "type": "string",
64 83
          "format": "uri",
65 84
          "description": "The avatar URL of the user who created the scrobble."
66 85
        },
67 86
        "userDisplayName": {
68 87
          "type": "string",
69 88
          "description": "The display name of the user who created the scrobble."
70 89
        }
71 90
      }
72 91
    },
73 92
    "scrobbleViewDetailed": {
74 93
      "type": "object",
75 94
      "properties": {
76 95
        "id": {
77 96
          "type": "string",
78 97
          "description": "The unique identifier of the scrobble."
79 98
        },
80 99
        "uri": {
81 100
          "type": "string",
82 101
          "format": "uri",
83 102
          "description": "The URI of the scrobble."
84 103
        },
85 104
        "date": {
86 105
          "type": "string",
87 106
          "format": "datetime",
88 107
          "description": "The timestamp when the scrobble was created."
89 108
        },
90 109
        "user": {
91 110
          "type": "string",
92 111
          "description": "The handle of the user who created the scrobble."
93 112
        },
94 113
        "album": {
95 114
          "type": "string",
96 115
          "description": "The album of the song."
97 116
        },
98 117
        "cover": {
99 118
          "type": "string",
100 119
          "format": "uri",
101 120
          "description": "The album art URL of the song."
102 121
        },
103 122
        "title": {
104 123
          "type": "string",
105 124
          "description": "The title of the scrobble."
106 125
        },
107 126
        "artist": {
108 127
          "type": "string",
109 128
          "description": "The artist of the song."
110 129
        },
111 130
        "sha256": {
112 131
          "type": "string",
113 132
          "description": "The SHA256 hash of the scrobble data."
114 133
        },
115 134
        "artists": {
116 135
          "type": "array",
117 136
          "items": {
118 137
            "ref": "app.rocksky.artist.defs#artistViewBasic",
119 138
            "type": "ref"
120 139
          }
121 140
        },
122 141
        "albumUri": {
123 142
          "type": "string",
124 143
          "format": "at-uri",
125 144
          "description": "The URI of the album."
126 145
        },
127 146
        "artistUri": {
128 147
          "type": "string",
129 148
          "format": "at-uri",
130 149
          "description": "The URI of the artist."
131 150
        },
132 151
        "listeners": {
133 152
          "type": "integer",
134 153
          "description": "The number of listeners"
135 154
        },
136 155
        "scrobbles": {
137 156
          "type": "integer",
138 157
          "description": "The number of scrobbles for this song"
158 +
        },
159 +
        "firstScrobble": {
160 +
          "ref": "app.rocksky.scrobble.defs#firstScrobbleView",
161 +
          "type": "ref",
162 +
          "description": "The first scrobble of this song on Rocksky."
139 163
        }
140 164
      }
141 165
    }
142 166
  },
143 167
  "$type": "com.atproto.lexicon.schema",
144 168
  "lexicon": 1
145 169
}

Compare Other Versions

Lexicon Garden

@