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. 10 non-breaking changes.

Non-Breaking Changes (10)
  • 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") }
  • AddedEdge AddedEdge { src: "app.rocksky.scrobble.defs#scrobbleViewDetailed.firstScrobble", tgt: "app.rocksky.scrobble.defs#firstScrobbleView", kind: "ref", name: None }

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

Compare Other Versions

Lexicon Garden

@