···11-{
22- "lexicon": 1,
33- "id": "fm.teal.alpha.feed.defs",
44- "description": "This lexicon is in a not officially released state. It is subject to change. | Misc. items related to feeds.",
55- "defs": {
66- "playView": {
77- "type": "object",
88- "required": ["trackName", "artistNames"],
99- "properties": {
1010- "trackName": {
1111- "type": "string",
1212- "minLength": 1,
1313- "maxLength": 256,
1414- "maxGraphemes": 2560,
1515- "description": "The name of the track"
1616- },
1717- "trackMbId": {
1818- "type": "string",
1919- "description": "The Musicbrainz ID of the track"
2020- },
2121- "recordingMbId": {
2222- "type": "string",
2323- "description": "The Musicbrainz recording ID of the track"
2424- },
2525- "duration": {
2626- "type": "integer",
2727- "description": "The length of the track in seconds"
2828- },
2929- "artistNames": {
3030- "type": "array",
3131- "items": {
3232- "type": "string",
3333- "minLength": 1,
3434- "maxLength": 256,
3535- "maxGraphemes": 2560
3636- },
3737- "description": "Array of artist names in order of original appearance."
3838- },
3939- "artistMbIds": {
4040- "type": "array",
4141- "items": {
4242- "type": "string"
4343- },
4444- "description": "Array of Musicbrainz artist IDs"
4545- },
4646- "releaseName": {
4747- "type": "string",
4848- "maxLength": 256,
4949- "maxGraphemes": 2560,
5050- "description": "The name of the release/album"
5151- },
5252- "releaseMbId": {
5353- "type": "string",
5454- "description": "The Musicbrainz release ID"
5555- },
5656- "isrc": {
5757- "type": "string",
5858- "description": "The ISRC code associated with the recording"
5959- },
6060- "originUrl": {
6161- "type": "string",
6262- "description": "The URL associated with this track"
6363- },
6464- "musicServiceBaseDomain": {
6565- "type": "string",
6666- "description": "The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if not provided."
6767- },
6868- "submissionClientAgent": {
6969- "type": "string",
7070- "maxLength": 256,
7171- "maxGraphemes": 2560,
7272- "description": "A user-agent style string specifying the user agent. e.g. tealtracker/0.0.1b (Linux; Android 13; SM-A715F). Defaults to 'manual/unknown' if not provided."
7373- },
7474- "playedTime": {
7575- "type": "string",
7676- "format": "datetime",
7777- "description": "The unix timestamp of when the track was played"
7878- }
7979- }
8080- }
8181- }
8282-}
-45
api/feed/getActorFeed.json
···11-{
22- "lexicon": 1,
33- "id": "fm.teal.alpha.feed.getActorFeed",
44- "description": "This lexicon is in a not officially released state. It is subject to change. | Retrieves multiple plays from the index or via an author's DID.",
55- "defs": {
66- "main": {
77- "type": "query",
88- "parameters": {
99- "type": "params",
1010- "required": ["authorDID"],
1111- "properties": {
1212- "authorDID": {
1313- "type": "string",
1414- "format": "at-identifier",
1515- "description": "The author's DID for the play"
1616- },
1717- "cursor": {
1818- "type": "string",
1919- "description": "The cursor to start the query from"
2020- },
2121- "limit": {
2222- "type": "integer",
2323- "description": "The upper limit of tracks to get per request. Default is 20, max is 50."
2424- }
2525- }
2626- },
2727- "output": {
2828- "encoding": "application/json",
2929- "schema": {
3030- "type": "object",
3131- "required": ["plays"],
3232- "properties": {
3333- "plays": {
3434- "type": "array",
3535- "items": {
3636- "type": "ref",
3737- "ref": "fm.teal.alpha.feed.defs#playView"
3838- }
3939- }
4040- }
4141- }
4242- }
4343- }
4444- }
4545-}
-38
api/feed/getPlay.json
···11-{
22- "lexicon": 1,
33- "id": "fm.teal.alpha.feed.getPlay",
44- "description": "This lexicon is in a not officially released state. It is subject to change. | Retrieves a play given an author DID and record key.",
55- "defs": {
66- "main": {
77- "type": "query",
88- "parameters": {
99- "type": "params",
1010- "required": ["authorDID", "rkey"],
1111- "properties": {
1212- "authorDID": {
1313- "type": "string",
1414- "format": "at-identifier",
1515- "description": "The author's DID for the play"
1616- },
1717- "rkey": {
1818- "type": "string",
1919- "description": "The record key of the play"
2020- }
2121- }
2222- },
2323- "output": {
2424- "encoding": "application/json",
2525- "schema": {
2626- "type": "object",
2727- "required": ["play"],
2828- "properties": {
2929- "play": {
3030- "type": "ref",
3131- "ref": "fm.teal.alpha.feed.defs#playView"
3232- }
3333- }
3434- }
3535- }
3636- }
3737- }
3838-}
-87
api/feed/play.json
···11-{
22- "lexicon": 1,
33- "id": "fm.teal.alpha.feed.play",
44- "description": "This lexicon is in a not officially released state. It is subject to change. | A declaration of a teal.fm play. Plays are submitted as a result of a user listening to a track. Plays should be marked as tracked when a user has listened to the entire track if it's under 2 minutes long, or half of the track's duration up to 4 minutes, whichever is longest.",
55- "defs": {
66- "main": {
77- "type": "record",
88- "key": "tid",
99- "record": {
1010- "type": "object",
1111- "required": ["trackName", "artistNames"],
1212- "properties": {
1313- "trackName": {
1414- "type": "string",
1515- "minLength": 1,
1616- "maxLength": 256,
1717- "maxGraphemes": 2560,
1818- "description": "The name of the track"
1919- },
2020- "trackMbId": {
2121- "type": "string",
2222-2323- "description": "The Musicbrainz ID of the track"
2424- },
2525- "recordingMbId": {
2626- "type": "string",
2727- "description": "The Musicbrainz recording ID of the track"
2828- },
2929- "duration": {
3030- "type": "integer",
3131- "description": "The length of the track in seconds"
3232- },
3333- "artistNames": {
3434- "type": "array",
3535- "items": {
3636- "type": "string",
3737- "minLength": 1,
3838- "maxLength": 256,
3939- "maxGraphemes": 2560
4040- },
4141- "description": "Array of artist names in order of original appearance."
4242- },
4343- "artistMbIds": {
4444- "type": "array",
4545- "items": {
4646- "type": "string"
4747- },
4848- "description": "Array of Musicbrainz artist IDs"
4949- },
5050- "releaseName": {
5151- "type": "string",
5252- "maxLength": 256,
5353- "maxGraphemes": 2560,
5454- "description": "The name of the release/album"
5555- },
5656- "releaseMbId": {
5757- "type": "string",
5858- "description": "The Musicbrainz release ID"
5959- },
6060- "isrc": {
6161- "type": "string",
6262- "description": "The ISRC code associated with the recording"
6363- },
6464- "originUrl": {
6565- "type": "string",
6666- "description": "The URL associated with this track"
6767- },
6868- "musicServiceBaseDomain": {
6969- "type": "string",
7070- "description": "The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if unavailable or not provided."
7171- },
7272- "submissionClientAgent": {
7373- "type": "string",
7474- "maxLength": 256,
7575- "maxGraphemes": 2560,
7676- "description": "A metadata string specifying the user agent where the format is `<app-identifier>/<version> (<kernel/OS-base>; <platform/OS-version>; <device-model>)`. If string is provided, only `app-identifier` and `version` are required. `app-identifier` is recommended to be in reverse dns format. Defaults to 'manual/unknown' if unavailable or not provided."
7777- },
7878- "playedTime": {
7979- "type": "string",
8080- "format": "datetime",
8181- "description": "The unix timestamp of when the track was played"
8282- }
8383- }
8484- }
8585- }
8686- }
8787-}