# blue.backyard.feed.post

> Published by [backyard.blue](https://lexicon.garden/identity/did:plc:achxuyl54r4cfkkkycp46yhg)

✓ This is the authoritative definition for this NSID.

## Description

An original post in a user's Backyard feed. Content is structured as an ordered array of blocks (text, images, embeds) to support inline media.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:achxuyl54r4cfkkkycp46yhg/blue.backyard.feed.post)
- [Documentation](https://lexicon.garden/lexicon/did:plc:achxuyl54r4cfkkkycp46yhg/blue.backyard.feed.post/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:achxuyl54r4cfkkkycp46yhg/blue.backyard.feed.post/examples)

## Definitions

### `blue.backyard.feed.post`

**Type**: `record`

An original post in a user's Backyard feed.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tags` | `array` | No | Additional non-inline tags for categorization. |
| `langs` | `array` | No | BCP-47 language tags of the post text. |
| `content` | `array` | Yes | Ordered array of content blocks. Each block is a text block, image block, or embed block. |
| `createdAt` | `string` (datetime) | Yes |  |

### `blue.backyard.feed.post#textBlock`

**Type**: `object`

A block of rich text content.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `text` | `string` | Yes | The text content of this block. |
| `facets` | `array` | No | Annotations of text (mentions, URLs, hashtags, formatting). |

### `blue.backyard.feed.post#embedBlock`

**Type**: `object`

An inline URL embed (link preview).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `url` | `string` (uri) | Yes | The URL to embed as a link preview. |

### `blue.backyard.feed.post#imageBlock`

**Type**: `object`

An inline image or video.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `alt` | `string` | No | Alt text description for accessibility. |
| `blob` | `blob` | Yes |  |
| `mimeType` | `string` | Yes | MIME type of the media (e.g. image/jpeg, video/mp4). Duplicated from the blob ref for convenience. |
| `aspectRatio` | `ref` → `#aspectRatio` | No |  |

### `blue.backyard.feed.post#aspectRatio`

**Type**: `object`

Width and height of the media, used for layout before the blob is loaded.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `width` | `integer` | Yes |  |
| `height` | `integer` | Yes |  |

## Raw Schema

```json
{
  "id": "blue.backyard.feed.post",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "content",
          "createdAt"
        ],
        "properties": {
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 640,
              "maxGraphemes": 64
            },
            "maxLength": 8,
            "description": "Additional non-inline tags for categorization."
          },
          "langs": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "language"
            },
            "maxLength": 3,
            "description": "BCP-47 language tags of the post text."
          },
          "content": {
            "type": "array",
            "items": {
              "refs": [
                "#textBlock",
                "#imageBlock",
                "#embedBlock"
              ],
              "type": "union"
            },
            "maxLength": 20,
            "minLength": 1,
            "description": "Ordered array of content blocks. Each block is a text block, image block, or embed block."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime"
          }
        }
      },
      "description": "An original post in a user's Backyard feed."
    },
    "textBlock": {
      "type": "object",
      "required": [
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "maxLength": 30000,
          "description": "The text content of this block.",
          "maxGraphemes": 3000
        },
        "facets": {
          "type": "array",
          "items": {
            "ref": "blue.backyard.richtext.facet",
            "type": "ref"
          },
          "description": "Annotations of text (mentions, URLs, hashtags, formatting)."
        }
      },
      "description": "A block of rich text content."
    },
    "embedBlock": {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "description": "The URL to embed as a link preview."
        }
      },
      "description": "An inline URL embed (link preview)."
    },
    "imageBlock": {
      "type": "object",
      "required": [
        "blob",
        "mimeType"
      ],
      "properties": {
        "alt": {
          "type": "string",
          "maxLength": 10000,
          "description": "Alt text description for accessibility.",
          "maxGraphemes": 1000
        },
        "blob": {
          "type": "blob",
          "accept": [
            "image/png",
            "image/jpeg",
            "image/gif",
            "image/webp",
            "image/avif",
            "video/mp4",
            "video/webm"
          ],
          "maxSize": 50000000
        },
        "mimeType": {
          "type": "string",
          "maxLength": 255,
          "description": "MIME type of the media (e.g. image/jpeg, video/mp4). Duplicated from the blob ref for convenience."
        },
        "aspectRatio": {
          "ref": "#aspectRatio",
          "type": "ref"
        }
      },
      "description": "An inline image or video."
    },
    "aspectRatio": {
      "type": "object",
      "required": [
        "width",
        "height"
      ],
      "properties": {
        "width": {
          "type": "integer",
          "minimum": 1
        },
        "height": {
          "type": "integer",
          "minimum": 1
        }
      },
      "description": "Width and height of the media, used for layout before the blob is loaded."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "description": "An original post in a user's Backyard feed. Content is structured as an ordered array of blocks (text, images, embeds) to support inline media."
}
```
