# app.tempomusic.feed.defs

> Published by [lexicons.tempomusic.fan](https://lexicon.garden/identity/did:plc:pxsuqmultto34oks44m2lgxm)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:pxsuqmultto34oks44m2lgxm/app.tempomusic.feed.defs)
- [Documentation](https://lexicon.garden/lexicon/did:plc:pxsuqmultto34oks44m2lgxm/app.tempomusic.feed.defs/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:pxsuqmultto34oks44m2lgxm/app.tempomusic.feed.defs/examples)

## Definitions

### `app.tempomusic.feed.defs#songRef`

**Type**: `object`

A specific song. Used as a post subject and as an inline music facet target.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | No | Optional DID of a verified Tempo record for this song (e.g. owned by a verified artist account). |
| `title` | `string` | Yes |  |
| `artist` | `ref` → `#artistInfo` | Yes | The performing artist. Carries display name plus optional DID and external identifiers. |
| `albumTitle` | `string` | No | Display hint for the album this song is from. Optional. For posts about the album itself as a subject, use albumRef instead. |
| `artworkUrl` | `string` (uri) | No | Fallback artwork URL. AppViews should prefer artwork resolved via platformIds against the music-catalogue when available. |
| `platformIds` | `array` | No | Commercial platform identifiers (Spotify track ID, Apple Music ID, etc.). |
| `releaseYear` | `integer` | No | Year of release. For finer precision (full date, time), AppViews should resolve via platformIds against the music-catalogue rather than encoding it here. |
| `standardIds` | `array` | No | Canonical identifiers (ISRC, MusicBrainz recording MBID, etc.). |

### `app.tempomusic.feed.defs#albumRef`

**Type**: `object`

An album, EP, single, or any long-form release.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | No | Optional DID of a verified Tempo record for this album. |
| `title` | `string` | Yes |  |
| `artist` | `ref` → `#artistInfo` | Yes |  |
| `artworkUrl` | `string` (uri) | No | Fallback artwork URL. AppViews should prefer artwork resolved via platformIds against the music-catalogue when available. |
| `platformIds` | `array` | No | Commercial platform identifiers (Spotify album ID, Apple Music album ID, etc.). |
| `releaseYear` | `integer` | No | Year of release. For finer precision (full date, time), AppViews should resolve via platformIds against the music-catalogue rather than encoding it here. |
| `standardIds` | `array` | No | Canonical identifiers (UPC, MusicBrainz release MBID, etc.). |

### `app.tempomusic.feed.defs#postView`

**Type**: `object`

AppView projection of an app.tempomusic.feed.post record.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cid` | `string` (cid) | Yes |  |
| `uri` | `string` (at-uri) | Yes |  |
| `author` | `ref` → `#authorView` | Yes |  |
| `record` | `unknown` | Yes | The underlying app.tempomusic.feed.post record. Carried verbatim with its $type discriminator; lexicon-typed as unknown to match the AT Protocol convention for embedded records. |
| `viewer` | `ref` → `#viewerState` | No | Viewer-relative projection. Absent when the request omitted the viewer parameter. |
| `indexedAt` | `string` (datetime) | Yes | Timestamp at which the AppView indexed this post. |
| `likeCount` | `integer` | No | Number of likes indexed against this post. |
| `replyCount` | `integer` | No | Number of replies indexed against this post. |

### `app.tempomusic.feed.defs#artistRef`

**Type**: `object`

A music artist as the standalone subject of a post (no specific release referenced). For artist as an attribute of a song or album, see #artistInfo.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | No | Optional DID of the verified Tempo account for this artist. |
| `name` | `string` | Yes |  |
| `artworkUrl` | `string` (uri) | No | Fallback artist photo or avatar URL. AppViews should prefer artwork resolved via platformIds against the music-catalogue when available. |
| `platformIds` | `array` | No | Commercial platform identifiers (Spotify artist ID, Apple Music artist ID, etc.). |
| `standardIds` | `array` | No | Canonical identifiers (MusicBrainz artist MBID, etc.). |

### `app.tempomusic.feed.defs#replyView`

**Type**: `object`

AppView projection of an app.tempomusic.feed.reply record.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cid` | `string` (cid) | Yes |  |
| `uri` | `string` (at-uri) | Yes |  |
| `author` | `ref` → `#authorView` | Yes |  |
| `record` | `unknown` | Yes | The underlying app.tempomusic.feed.reply record. Carried verbatim with its $type discriminator; lexicon-typed as unknown to match the AT Protocol convention for embedded records. |
| `viewer` | `ref` → `#viewerState` | No | Viewer-relative projection. Absent when the request omitted the viewer parameter. |
| `indexedAt` | `string` (datetime) | Yes | Timestamp at which the AppView indexed this reply. |
| `likeCount` | `integer` | No | Number of likes indexed against this reply. |

### `app.tempomusic.feed.defs#artistInfo`

**Type**: `object`

Artist information embedded as an attribute of a song or album. Distinct from artistRef, which represents an artist as the standalone subject of a post. Notably omits artworkUrl, since artwork in this context belongs to the parent entity (the song or album).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | No | Optional DID of the verified Tempo account for this artist. |
| `name` | `string` | Yes |  |
| `platformIds` | `array` | No |  |
| `standardIds` | `array` | No |  |

### `app.tempomusic.feed.defs#authorView`

**Type**: `object`

AppView projection of an actor profile for use as a post or reply author.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | Yes |  |
| `avatar` | `string` | No | Avatar catalog identifier from the author's most recent actor.profile record. Bounds mirror app.tempomusic.actor.profile#catalogAvatar.id. |
| `displayName` | `string` | No | Display name from the author's most recent actor.profile record. Bounds mirror app.tempomusic.actor.profile#displayName. |
| `avatarBackgroundColor` | `string` | No | Avatar background color palette token from the author's most recent actor.profile record. Bounds mirror app.tempomusic.actor.profile#catalogAvatar.backgroundColor. |

### `app.tempomusic.feed.defs#platformId`

**Type**: `object`

An identifier issued by a commercial music platform. May change or disappear over time; multiple per entity are possible (regional variants, re-releases, remasters).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `id` | `string` | Yes |  |
| `uri` | `string` (uri) | No | Optional deep-link URI (e.g. spotify:track:xxx, https://music.apple.com/...). |
| `provider` | `string` | Yes | The platform issuing the identifier. knownValues is informational; AppViews should accept unknown providers and skip them. |

### `app.tempomusic.feed.defs#standardId`

**Type**: `object`

A canonical, normative identifier issued by a standards body or community-curated database. Stable across platforms; intended for cross-service resolution and deduplication.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `value` | `string` | Yes |  |
| `format` | `string` | Yes | The identifier format. knownValues is informational; AppViews should accept unknown formats and skip them. |

### `app.tempomusic.feed.defs#viewerState`

**Type**: `object`

Per-viewer projection on a post or reply view.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `like` | `string` (at-uri) | No | AT-URI of the viewer's like record on this subject, when one exists. |

## Raw Schema

```json
{
  "id": "app.tempomusic.feed.defs",
  "defs": {
    "songRef": {
      "type": "object",
      "required": [
        "title",
        "artist"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did",
          "description": "Optional DID of a verified Tempo record for this song (e.g. owned by a verified artist account)."
        },
        "title": {
          "type": "string",
          "maxLength": 512
        },
        "artist": {
          "ref": "#artistInfo",
          "type": "ref",
          "description": "The performing artist. Carries display name plus optional DID and external identifiers."
        },
        "albumTitle": {
          "type": "string",
          "maxLength": 512,
          "description": "Display hint for the album this song is from. Optional. For posts about the album itself as a subject, use albumRef instead."
        },
        "artworkUrl": {
          "type": "string",
          "format": "uri",
          "description": "Fallback artwork URL. AppViews should prefer artwork resolved via platformIds against the music-catalogue when available."
        },
        "platformIds": {
          "type": "array",
          "items": {
            "ref": "#platformId",
            "type": "ref"
          },
          "description": "Commercial platform identifiers (Spotify track ID, Apple Music ID, etc.)."
        },
        "releaseYear": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 1860,
          "description": "Year of release. For finer precision (full date, time), AppViews should resolve via platformIds against the music-catalogue rather than encoding it here."
        },
        "standardIds": {
          "type": "array",
          "items": {
            "ref": "#standardId",
            "type": "ref"
          },
          "description": "Canonical identifiers (ISRC, MusicBrainz recording MBID, etc.)."
        }
      },
      "description": "A specific song. Used as a post subject and as an inline music facet target."
    },
    "albumRef": {
      "type": "object",
      "required": [
        "title",
        "artist"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did",
          "description": "Optional DID of a verified Tempo record for this album."
        },
        "title": {
          "type": "string",
          "maxLength": 512
        },
        "artist": {
          "ref": "#artistInfo",
          "type": "ref"
        },
        "artworkUrl": {
          "type": "string",
          "format": "uri",
          "description": "Fallback artwork URL. AppViews should prefer artwork resolved via platformIds against the music-catalogue when available."
        },
        "platformIds": {
          "type": "array",
          "items": {
            "ref": "#platformId",
            "type": "ref"
          },
          "description": "Commercial platform identifiers (Spotify album ID, Apple Music album ID, etc.)."
        },
        "releaseYear": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 1860,
          "description": "Year of release. For finer precision (full date, time), AppViews should resolve via platformIds against the music-catalogue rather than encoding it here."
        },
        "standardIds": {
          "type": "array",
          "items": {
            "ref": "#standardId",
            "type": "ref"
          },
          "description": "Canonical identifiers (UPC, MusicBrainz release MBID, etc.)."
        }
      },
      "description": "An album, EP, single, or any long-form release."
    },
    "postView": {
      "type": "object",
      "required": [
        "uri",
        "cid",
        "author",
        "record",
        "indexedAt"
      ],
      "properties": {
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "author": {
          "ref": "#authorView",
          "type": "ref"
        },
        "record": {
          "type": "unknown",
          "description": "The underlying app.tempomusic.feed.post record. Carried verbatim with its $type discriminator; lexicon-typed as unknown to match the AT Protocol convention for embedded records."
        },
        "viewer": {
          "ref": "#viewerState",
          "type": "ref",
          "description": "Viewer-relative projection. Absent when the request omitted the viewer parameter."
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime",
          "description": "Timestamp at which the AppView indexed this post."
        },
        "likeCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of likes indexed against this post."
        },
        "replyCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of replies indexed against this post."
        }
      },
      "description": "AppView projection of an app.tempomusic.feed.post record."
    },
    "artistRef": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did",
          "description": "Optional DID of the verified Tempo account for this artist."
        },
        "name": {
          "type": "string",
          "maxLength": 256
        },
        "artworkUrl": {
          "type": "string",
          "format": "uri",
          "description": "Fallback artist photo or avatar URL. AppViews should prefer artwork resolved via platformIds against the music-catalogue when available."
        },
        "platformIds": {
          "type": "array",
          "items": {
            "ref": "#platformId",
            "type": "ref"
          },
          "description": "Commercial platform identifiers (Spotify artist ID, Apple Music artist ID, etc.)."
        },
        "standardIds": {
          "type": "array",
          "items": {
            "ref": "#standardId",
            "type": "ref"
          },
          "description": "Canonical identifiers (MusicBrainz artist MBID, etc.)."
        }
      },
      "description": "A music artist as the standalone subject of a post (no specific release referenced). For artist as an attribute of a song or album, see #artistInfo."
    },
    "replyView": {
      "type": "object",
      "required": [
        "uri",
        "cid",
        "author",
        "record",
        "indexedAt"
      ],
      "properties": {
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "author": {
          "ref": "#authorView",
          "type": "ref"
        },
        "record": {
          "type": "unknown",
          "description": "The underlying app.tempomusic.feed.reply record. Carried verbatim with its $type discriminator; lexicon-typed as unknown to match the AT Protocol convention for embedded records."
        },
        "viewer": {
          "ref": "#viewerState",
          "type": "ref",
          "description": "Viewer-relative projection. Absent when the request omitted the viewer parameter."
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime",
          "description": "Timestamp at which the AppView indexed this reply."
        },
        "likeCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of likes indexed against this reply."
        }
      },
      "description": "AppView projection of an app.tempomusic.feed.reply record."
    },
    "artistInfo": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did",
          "description": "Optional DID of the verified Tempo account for this artist."
        },
        "name": {
          "type": "string",
          "maxLength": 256
        },
        "platformIds": {
          "type": "array",
          "items": {
            "ref": "#platformId",
            "type": "ref"
          }
        },
        "standardIds": {
          "type": "array",
          "items": {
            "ref": "#standardId",
            "type": "ref"
          }
        }
      },
      "description": "Artist information embedded as an attribute of a song or album. Distinct from artistRef, which represents an artist as the standalone subject of a post. Notably omits artworkUrl, since artwork in this context belongs to the parent entity (the song or album)."
    },
    "authorView": {
      "type": "object",
      "required": [
        "did"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        },
        "avatar": {
          "type": "string",
          "maxLength": 64,
          "description": "Avatar catalog identifier from the author's most recent actor.profile record. Bounds mirror app.tempomusic.actor.profile#catalogAvatar.id."
        },
        "displayName": {
          "type": "string",
          "maxLength": 180,
          "description": "Display name from the author's most recent actor.profile record. Bounds mirror app.tempomusic.actor.profile#displayName.",
          "maxGraphemes": 18
        },
        "avatarBackgroundColor": {
          "type": "string",
          "maxLength": 32,
          "description": "Avatar background color palette token from the author's most recent actor.profile record. Bounds mirror app.tempomusic.actor.profile#catalogAvatar.backgroundColor."
        }
      },
      "description": "AppView projection of an actor profile for use as a post or reply author."
    },
    "platformId": {
      "type": "object",
      "required": [
        "provider",
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "maxLength": 256
        },
        "uri": {
          "type": "string",
          "format": "uri",
          "description": "Optional deep-link URI (e.g. spotify:track:xxx, https://music.apple.com/...)."
        },
        "provider": {
          "type": "string",
          "maxLength": 100,
          "description": "The platform issuing the identifier. knownValues is informational; AppViews should accept unknown providers and skip them.",
          "knownValues": [
            "spotify",
            "appleMusic",
            "deezer",
            "tidal",
            "amazonMusic",
            "youtubeMusic"
          ]
        }
      },
      "description": "An identifier issued by a commercial music platform. May change or disappear over time; multiple per entity are possible (regional variants, re-releases, remasters)."
    },
    "standardId": {
      "type": "object",
      "required": [
        "format",
        "value"
      ],
      "properties": {
        "value": {
          "type": "string",
          "maxLength": 128
        },
        "format": {
          "type": "string",
          "maxLength": 100,
          "description": "The identifier format. knownValues is informational; AppViews should accept unknown formats and skip them.",
          "knownValues": [
            "isrc",
            "iswc",
            "upc",
            "ean",
            "musicBrainz"
          ]
        }
      },
      "description": "A canonical, normative identifier issued by a standards body or community-curated database. Stable across platforms; intended for cross-service resolution and deduplication."
    },
    "viewerState": {
      "type": "object",
      "properties": {
        "like": {
          "type": "string",
          "format": "at-uri",
          "description": "AT-URI of the viewer's like record on this subject, when one exists."
        }
      },
      "description": "Per-viewer projection on a post or reply view."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
