# app.tempomusic.feed.reply

> 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.reply)
- [Documentation](https://lexicon.garden/lexicon/did:plc:pxsuqmultto34oks44m2lgxm/app.tempomusic.feed.reply/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:pxsuqmultto34oks44m2lgxm/app.tempomusic.feed.reply/examples)

## Definitions

### `app.tempomusic.feed.reply`

**Type**: `record`

A text reply attached to a Tempo post. Reply records form threads via the reply ref; the music subject lives on the root post, not on the reply itself.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `text` | `string` | Yes | The reply content. |
| `langs` | `array` | No | BCP-47 language tags for the text content. Up to three. |
| `reply` | `ref` → `#replyRef` | Yes | Threading context. Required: every reply must point at the post (and possibly intermediate reply) it answers. |
| `labels` | `union` | No | Author-declared content warnings. Uses the standard AT Protocol self-label vocabulary for ecosystem compatibility. |
| `createdAt` | `string` (datetime) | Yes | Client-declared timestamp when this reply was originally created. |

### `app.tempomusic.feed.reply#replyRef`

**Type**: `object`

Threading context. AppViews MUST enforce: root references an app.tempomusic.feed.post (threads anchor on a post); parent references either an app.tempomusic.feed.post or an app.tempomusic.feed.reply (sub-thread replies). strongRef is collection-agnostic by design — these constraints live in AppView validation, not in the lexicon schema.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `root` | `ref` → `com.atproto.repo.strongRef` | Yes |  |
| `parent` | `ref` → `com.atproto.repo.strongRef` | Yes |  |

## Raw Schema

```json
{
  "id": "app.tempomusic.feed.reply",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "text",
          "reply",
          "createdAt"
        ],
        "properties": {
          "text": {
            "type": "string",
            "maxLength": 3000,
            "description": "The reply content.",
            "maxGraphemes": 300
          },
          "langs": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "language"
            },
            "maxLength": 3,
            "description": "BCP-47 language tags for the text content. Up to three."
          },
          "reply": {
            "ref": "#replyRef",
            "type": "ref",
            "description": "Threading context. Required: every reply must point at the post (and possibly intermediate reply) it answers."
          },
          "labels": {
            "refs": [
              "com.atproto.label.defs#selfLabels"
            ],
            "type": "union",
            "description": "Author-declared content warnings. Uses the standard AT Protocol self-label vocabulary for ecosystem compatibility."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "Client-declared timestamp when this reply was originally created."
          }
        }
      },
      "description": "A text reply attached to a Tempo post. Reply records form threads via the reply ref; the music subject lives on the root post, not on the reply itself."
    },
    "replyRef": {
      "type": "object",
      "required": [
        "root",
        "parent"
      ],
      "properties": {
        "root": {
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        },
        "parent": {
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        }
      },
      "description": "Threading context. AppViews MUST enforce: root references an app.tempomusic.feed.post (threads anchor on a post); parent references either an app.tempomusic.feed.post or an app.tempomusic.feed.reply (sub-thread replies). strongRef is collection-agnostic by design — these constraints live in AppView validation, not in the lexicon schema."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
