Skip to content
Merged
64 changes: 64 additions & 0 deletions lexicons/fm.teal.alpha/feed/social/badge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{
"lexicon": 1,
"id": "fm.teal.alpha.feed.social.badge",
"description": "This lexicon is in a not officially released state. It is subject to change. | A teal.fm badge definition.",
"defs": {
"main": {
"type": "record",
"description": "Record containing badge metadata that can be assigned to actors.",
"key": "tid",
"record": {
"type": "object",
"required": [
"name",
"description",
"image",
"creator",
"type",
"createdAt"
],
"properties": {
"name": {
"type": "string",
"description": "Display name for the badge.",
"minLength": 1,
"maxLength": 100,
"maxGraphemes": 100
},
"description": {
"type": "string",
"description": "Description of what the badge represents.",
"minLength": 1,
"maxLength": 5000,
"maxGraphemes": 500
},
"descriptionFacets": {
"type": "array",
"description": "Annotations of text in the badge description.",
"items": { "type": "ref", "ref": "fm.teal.alpha.richtext.facet" }
},
"image": {
"type": "blob",
"description": "Image displayed for the badge.",
"accept": ["image/png", "image/jpeg"],
"maxSize": 1000000
},
"creator": {
"type": "string",
"format": "did",
"description": "DID of the actor who created this badge definition."
},
"type": {
"type": "ref",
"ref": "fm.teal.alpha.feed.social.defs#badgeType"
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this badge was originally created."
}
}
}
}
}
}
38 changes: 38 additions & 0 deletions lexicons/fm.teal.alpha/feed/social/badgeAssignment.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"lexicon": 1,
"id": "fm.teal.alpha.feed.social.badgeAssignment",
"description": "This lexicon is in a not officially released state. It is subject to change. | A teal.fm badge assignment.",
"defs": {
"main": {
"type": "record",
"description": "Record assigning a badge to an actor.",
"key": "tid",
"record": {
"type": "object",
"required": ["badge", "assignee", "assigner", "createdAt"],
"properties": {
"badge": {
"type": "ref",
"ref": "com.atproto.repo.strongRef",
"description": "Strong reference to the badge definition being assigned."
},
"assignee": {
"type": "string",
"format": "did",
"description": "DID of the actor receiving the badge."
},
"assigner": {
"type": "string",
"format": "did",
"description": "DID of the actor assigning the badge."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this badge assignment was originally created."
}
}
}
}
}
}
92 changes: 92 additions & 0 deletions lexicons/fm.teal.alpha/feed/social/defs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
{
"lexicon": 1,
"id": "fm.teal.alpha.feed.social.defs",
"description": "This lexicon is in a not officially released state. It is subject to change. | Miscellaneous types related to the social feed.",
"defs": {
"trackView": {
"type": "object",
"required": ["trackName"],
"properties": {
"trackName": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"maxGraphemes": 2560,
"description": "The name of the track."
},
"trackMbId": {
"type": "string",
"format": "uri",
"description": "The MusicBrainz ID URI of the track, formatted as mbid:<uuid>."
},
"recordingMbId": {
"type": "string",
"format": "uri",
"description": "The MusicBrainz recording ID URI of the track, formatted as mbid:<uuid>."
},
"duration": {
"type": "integer",
"minimum": 0,
"description": "The length of the track in seconds."
},
"artistNames": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"maxGraphemes": 2560
},
"description": "Array of artist names in order of original appearance. Prefer using 'artists'."
},
"artistMbIds": {
"type": "array",
"items": { "type": "string" },
"description": "DEPRECATED: USE 'artists' INSTEAD. Array of Musicbrainz artist IDs."
},
"artists": {
"type": "array",
"items": { "type": "ref", "ref": "fm.teal.alpha.feed.defs#artist" },
"description": "Array of artists in order of original appearance."
},
"releaseName": {
"type": "string",
"maxLength": 256,
"maxGraphemes": 2560,
"description": "The name of the release or album."
},
"releaseMbId": {
"type": "string",
"format": "uri",
"description": "The MusicBrainz release ID URI, formatted as mbid:<uuid>."
},
"isrc": {
"type": "string",
"description": "The ISRC code associated with the recording."
},
"trackDiscriminant": {
"type": "string",
"maxLength": 128,
"maxGraphemes": 1280,
"description": "Distinguishing information for track variants."
},
"releaseDiscriminant": {
"type": "string",
"maxLength": 128,
"maxGraphemes": 1280,
"description": "Distinguishing information for release variants."
},
"originUrl": {
"type": "string",
"format": "uri",
"description": "The URL associated with this track."
}
}
},
"badgeType": {
"type": "string",
"description": "The category of badge.",
"knownValues": ["verification", "listeningParty", "achievement"]
}
}
}
28 changes: 28 additions & 0 deletions lexicons/fm.teal.alpha/feed/social/like.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"lexicon": 1,
"id": "fm.teal.alpha.feed.social.like",
"description": "This lexicon is in a not officially released state. It is subject to change. | The action of 'Liking' a Teal.fm post.",
"defs": {
"main": {
"type": "record",
"description": "Record containing a like for a teal.fm post.",
"key": "tid",
"record": {
"type": "object",
"required": ["subject", "createdAt"],
"properties": {
"subject": {
"type": "ref",
"ref": "com.atproto.repo.strongRef",
"description": "Strong reference to the record being liked."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this like was originally created."
}
}
}
}
}
}
54 changes: 54 additions & 0 deletions lexicons/fm.teal.alpha/feed/social/playlist.json
Comment thread
mmattbtw marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"lexicon": 1,
"id": "fm.teal.alpha.feed.social.playlist",
"description": "This lexicon is in a not officially released state. It is subject to change. | A teal.fm playlist, representing a list of tracks.",
"defs": {
"main": {
"type": "record",
"description": "Record containing the playlist metadata.",
"key": "tid",
"record": {
"type": "object",
"required": ["name", "authors", "createdAt"],
"properties": {
"name": {
"type": "string",
"description": "Display name for the playlist, required.",
"minLength": 1,
"maxLength": 100,
"maxGraphemes": 100
},
"description": {
"type": "string",
"description": "Free-form playlist description text.",
"maxLength": 5000,
"maxGraphemes": 500
},
"descriptionFacets": {
"type": "array",
"description": "Annotations of text in the playlist description.",
"items": { "type": "ref", "ref": "fm.teal.alpha.richtext.facet" }
},
"authors": {
"type": "array",
"description": "DIDs of actors who can author playlist items for this playlist. Include the playlist record author. Appviews may attribute playlist items to this playlist when the item's repo author appears in this list.",
"minLength": 1,
"maxLength": 100,
"items": { "type": "string", "format": "did" }
},
"cover": {
"type": "blob",
"description": "Optional image displayed for the playlist.",
"accept": ["image/png", "image/jpeg"],
"maxSize": 1000000
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this playlist was originally created."
}
}
}
}
}
}
38 changes: 38 additions & 0 deletions lexicons/fm.teal.alpha/feed/social/playlistItem.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"lexicon": 1,
"id": "fm.teal.alpha.feed.social.playlistItem",
"description": "This lexicon is in a not officially released state. It is subject to change. | A teal.fm playlist item.",
"defs": {
"main": {
"type": "record",
"description": "Record containing a playlist item for a teal.fm playlist.",
"key": "tid",
"record": {
"type": "object",
"required": ["subject", "track", "createdAt"],
"properties": {
"subject": {
"type": "ref",
"ref": "com.atproto.repo.strongRef",
"description": "Strong reference to the playlist this item belongs to."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this playlist item was originally created."
},
"track": {
"type": "ref",
"ref": "fm.teal.alpha.feed.social.defs#trackView",
"description": "The track added to the playlist."
},
"order": {
"type": "integer",
"minimum": 0,
"description": "The order of the track in the playlist."
}
}
}
}
}
}
60 changes: 60 additions & 0 deletions lexicons/fm.teal.alpha/feed/social/post.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"lexicon": 1,
"id": "fm.teal.alpha.feed.social.post",
"description": "This lexicon is in a not officially released state. It is subject to change. | Record containing a teal.fm post. Teal.fm posts include a track that is connected to the post, and could have some text. Replies, by default, have the same track as the parent post.",
"defs": {
"main": {
"type": "record",
"description": "Record containing a teal.fm post.",
"key": "tid",
"record": {
"type": "object",
"required": ["text", "track", "createdAt"],
"properties": {
"text": {
"type": "string",
"maxLength": 3000,
"maxGraphemes": 300,
"description": "The primary post content. May be an empty string, if there are embeds."
},
"track": {
"type": "ref",
"ref": "fm.teal.alpha.feed.social.defs#trackView",
"description": "The track associated with this post."
},
"reply": { "type": "ref", "ref": "#replyRef" },
"facets": {
"type": "array",
"description": "Rich text facets, which may include mentions, links, and other features.",
"items": { "type": "ref", "ref": "fm.teal.alpha.richtext.facet" }
},
"langs": {
"type": "array",
"description": "Indicates human language of post primary text content.",
"maxLength": 3,
"items": { "type": "string", "format": "language" }
},
"tags": {
"type": "array",
"description": "Additional hashtags, in addition to any included in post text and facets.",
"maxLength": 8,
"items": { "type": "string", "maxLength": 640, "maxGraphemes": 64 }
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this post was originally created."
}
}
}
},
"replyRef": {
"type": "object",
"required": ["root", "parent"],
"properties": {
"root": { "type": "ref", "ref": "com.atproto.repo.strongRef" },
"parent": { "type": "ref", "ref": "com.atproto.repo.strongRef" }
}
}
}
}
Loading