A decentralized music tracking and discovery platform built on AT Protocol 馃幍
rocksky.app
spotify
atproto
lastfm
musicbrainz
scrobbling
listenbrainz
1{
2 "lexicon": 1,
3 "id": "app.rocksky.shout.defs",
4 "defs": {
5 "author": {
6 "type": "object",
7 "properties": {
8 "id": {
9 "type": "string",
10 "description": "The unique identifier of the author."
11 },
12 "did": {
13 "type": "string",
14 "description": "The decentralized identifier (DID) of the author.",
15 "format": "at-identifier"
16 },
17 "handle": {
18 "type": "string",
19 "description": "The handle of the author.",
20 "format": "at-identifier"
21 },
22 "displayName": {
23 "type": "string",
24 "description": "The display name of the author."
25 },
26 "avatar": {
27 "type": "string",
28 "description": "The URL of the author's avatar image.",
29 "format": "uri"
30 }
31 }
32 },
33 "shoutView": {
34 "type": "object",
35 "properties": {
36 "id": {
37 "type": "string",
38 "description": "The unique identifier of the shout."
39 },
40 "message": {
41 "type": "string",
42 "description": "The content of the shout."
43 },
44 "parent": {
45 "type": "string",
46 "description": "The ID of the parent shout if this is a reply, otherwise null."
47 },
48 "createdAt": {
49 "type": "string",
50 "description": "The date and time when the shout was created.",
51 "format": "datetime"
52 },
53 "author": {
54 "type": "ref",
55 "description": "The author of the shout.",
56 "ref": "app.rocksky.shout.defs#author"
57 },
58 "gif": {
59 "type": "ref",
60 "description": "An attached GIF, sticker, or clip.",
61 "ref": "app.rocksky.shout.defs#gif"
62 },
63 "facets": {
64 "type": "array",
65 "description": "Mentions of other actors within the message, anchored to UTF-8 byte ranges.",
66 "items": {
67 "type": "ref",
68 "ref": "app.rocksky.shout.defs#mention"
69 }
70 }
71 }
72 },
73 "mention": {
74 "type": "object",
75 "description": "A mention of another actor within the shout message, anchored to a UTF-8 byte range in the message.",
76 "required": [
77 "did",
78 "byteStart",
79 "byteEnd"
80 ],
81 "properties": {
82 "did": {
83 "type": "string",
84 "description": "The DID of the mentioned actor.",
85 "format": "did"
86 },
87 "byteStart": {
88 "type": "integer",
89 "description": "Inclusive UTF-8 byte offset of the mention start.",
90 "minimum": 0
91 },
92 "byteEnd": {
93 "type": "integer",
94 "description": "Exclusive UTF-8 byte offset of the mention end.",
95 "minimum": 0
96 }
97 }
98 },
99 "gif": {
100 "type": "object",
101 "description": "A GIF, sticker, or clip embedded in a shout. `url` may point at an image (GIF/WebP) or a video (MP4); the client decides how to render it from the file extension.",
102 "required": [
103 "url"
104 ],
105 "properties": {
106 "url": {
107 "type": "string",
108 "description": "Direct URL of the animated GIF/MP4.",
109 "format": "uri"
110 },
111 "previewUrl": {
112 "type": "string",
113 "description": "Smaller still/preview image URL.",
114 "format": "uri"
115 },
116 "alt": {
117 "type": "string",
118 "description": "Alternative text describing the media.",
119 "maxLength": 512
120 },
121 "width": {
122 "type": "integer",
123 "description": "The intrinsic width of the media in pixels.",
124 "minimum": 0
125 },
126 "height": {
127 "type": "integer",
128 "description": "The intrinsic height of the media in pixels.",
129 "minimum": 0
130 }
131 }
132 }
133 }
134}