# fm.teal.feed.play

> Published by [lexicons.opensocial.fyi](https://lexicon.garden/identity/did:plc:2gqnilpksz2e7faj3bwvo6qc)

## 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.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:2gqnilpksz2e7faj3bwvo6qc/fm.teal.feed.play)
- [Documentation](https://lexicon.garden/lexicon/did:plc:2gqnilpksz2e7faj3bwvo6qc/fm.teal.feed.play/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:2gqnilpksz2e7faj3bwvo6qc/fm.teal.feed.play/examples)

## Definitions

### `fm.teal.feed.play`

**Type**: `record`

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `artistMbIds` | `array` | No | DEPRECATED: USE 'artists' INSTEAD. Array of Musicbrainz artist IDs. |
| `artistNames` | `array` | No | DEPRECATED: USE 'artists' INSTEAD. Array of artist names in order of original appearance. |
| `artists` | `array` | No | Array of artists in order of original appearance. |
| `duration` | `integer` | No | The length of the track in seconds |
| `isrc` | `string` | No | The ISRC code associated with the recording |
| `musicServiceUri` | `string` (uri) | No | The canonical URI identifying the listening surface or music service. |
| `originUri` | `string` (uri) | No | The exact URI where the listening event originated. |
| `playedTime` | `string` (datetime) | No | The datetime at which playback began. |
| `recordingMbId` | `string` (uri) | No | The MusicBrainz recording ID URI of the track, formatted as mbid:<uuid> |
| `releaseDiscriminant` | `string` | No | Distinguishing information for release variants (e.g. 'Deluxe Edition', 'Remastered', '2023 Remaster', 'Special Edition'). Used to differentiate between different versions of the same base release while maintaining grouping capabilities. |
| `releaseMbId` | `string` (uri) | No | The MusicBrainz release ID URI, formatted as mbid:<uuid> |
| `releaseName` | `string` | No | The name of the release/album |
| `submissionClientAgent` | `string` | No | 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. |
| `trackDiscriminant` | `string` | No | Distinguishing information for track variants (e.g. 'Acoustic Version', 'Live at Wembley', 'Radio Edit', 'Demo'). Used to differentiate between different versions of the same base track while maintaining grouping capabilities. |
| `trackMbId` | `string` (uri) | No | The MusicBrainz ID URI of the track, formatted as mbid:<uuid> |
| `trackName` | `string` | Yes | The name of the track |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "key": "tid",
      "record": {
        "properties": {
          "artistMbIds": {
            "description": "DEPRECATED: USE 'artists' INSTEAD. Array of Musicbrainz artist IDs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "artistNames": {
            "description": "DEPRECATED: USE 'artists' INSTEAD. Array of artist names in order of original appearance.",
            "items": {
              "maxGraphemes": 2560,
              "maxLength": 256,
              "minLength": 1,
              "type": "string"
            },
            "type": "array"
          },
          "artists": {
            "description": "Array of artists in order of original appearance.",
            "items": {
              "ref": "fm.teal.feed.defs#artist",
              "type": "ref"
            },
            "type": "array"
          },
          "duration": {
            "description": "The length of the track in seconds",
            "type": "integer"
          },
          "isrc": {
            "description": "The ISRC code associated with the recording",
            "type": "string"
          },
          "musicServiceUri": {
            "description": "The canonical URI identifying the listening surface or music service.",
            "format": "uri",
            "type": "string"
          },
          "originUri": {
            "description": "The exact URI where the listening event originated.",
            "format": "uri",
            "type": "string"
          },
          "playedTime": {
            "description": "The datetime at which playback began.",
            "format": "datetime",
            "type": "string"
          },
          "recordingMbId": {
            "description": "The MusicBrainz recording ID URI of the track, formatted as mbid:<uuid>",
            "format": "uri",
            "type": "string"
          },
          "releaseDiscriminant": {
            "description": "Distinguishing information for release variants (e.g. 'Deluxe Edition', 'Remastered', '2023 Remaster', 'Special Edition'). Used to differentiate between different versions of the same base release while maintaining grouping capabilities.",
            "maxGraphemes": 1280,
            "maxLength": 128,
            "type": "string"
          },
          "releaseMbId": {
            "description": "The MusicBrainz release ID URI, formatted as mbid:<uuid>",
            "format": "uri",
            "type": "string"
          },
          "releaseName": {
            "description": "The name of the release/album",
            "maxGraphemes": 2560,
            "maxLength": 256,
            "type": "string"
          },
          "submissionClientAgent": {
            "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.",
            "maxGraphemes": 2560,
            "maxLength": 256,
            "type": "string"
          },
          "trackDiscriminant": {
            "description": "Distinguishing information for track variants (e.g. 'Acoustic Version', 'Live at Wembley', 'Radio Edit', 'Demo'). Used to differentiate between different versions of the same base track while maintaining grouping capabilities.",
            "maxGraphemes": 1280,
            "maxLength": 128,
            "type": "string"
          },
          "trackMbId": {
            "description": "The MusicBrainz ID URI of the track, formatted as mbid:<uuid>",
            "format": "uri",
            "type": "string"
          },
          "trackName": {
            "description": "The name of the track",
            "maxGraphemes": 2560,
            "maxLength": 256,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "trackName"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "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.",
  "id": "fm.teal.feed.play",
  "lexicon": 1
}
```
