# social.smallbury.feed.post

> Published by [lexicon.pds.smallbury.social](https://lexicon.garden/identity/did:plc:wnagcp6h73nxmvmwid2xxukx)

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:wnagcp6h73nxmvmwid2xxukx/social.smallbury.feed.post)
- [Documentation](https://lexicon.garden/lexicon/did:plc:wnagcp6h73nxmvmwid2xxukx/social.smallbury.feed.post/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:wnagcp6h73nxmvmwid2xxukx/social.smallbury.feed.post/examples)

## Definitions

### `social.smallbury.feed.post`

**Type**: `record`

Record containing a Smallbury post. Aligned with app.bsky.feed.post for public/shout content. Private posts reference a keyEpochId on the author's trust record and store encrypted body in ciphertext.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tags` | `array` | No | Additional hashtags. Omitted when ciphertext is set. |
| `text` | `string` | No | Cleartext primary content for public/shout posts. Omitted or empty when ciphertext is set. |
| `embed` | `union` | No |  |
| `langs` | `array` | No | Indicates human language of post primary text content. |
| `reply` | `ref` → `#replyRef` | No |  |
| `facets` | `array` | No | Cleartext annotations (mentions, URLs, hashtags). Omitted when ciphertext is set. |
| `labels` | `union` | No | Self-label values for this post. Effectively content warnings. |
| `createdAt` | `string` (datetime) | Yes | Client-declared timestamp when this post was originally created. |
| `ciphertext` | `bytes` | No | Encrypted payload for private posts (client-defined encoding of text, facets, tags, and related fields). Omitted for public/shout posts. |
| `keyEpochId` | `string` | No | References an epoch on the author's social.smallbury.actor.trust record. Required when ciphertext is set. |
| `opaqueBlobs` | `array` | No | Encrypted blobs referenced from the ciphertext payload. Pins blobs on the PDS without using Bluesky embed types. Does not reveal image content; blob count and sizes are visible. |

### `social.smallbury.feed.post#replyRef`

**Type**: `object`

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

## Raw Schema

```json
{
  "id": "social.smallbury.feed.post",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "createdAt"
        ],
        "properties": {
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 640,
              "maxGraphemes": 64
            },
            "maxLength": 8,
            "description": "Additional hashtags. Omitted when ciphertext is set."
          },
          "text": {
            "type": "string",
            "maxLength": 3000,
            "description": "Cleartext primary content for public/shout posts. Omitted or empty when ciphertext is set.",
            "maxGraphemes": 300
          },
          "embed": {
            "refs": [
              "app.bsky.embed.images",
              "app.bsky.embed.video",
              "app.bsky.embed.external",
              "app.bsky.embed.record",
              "app.bsky.embed.recordWithMedia"
            ],
            "type": "union"
          },
          "langs": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "language"
            },
            "maxLength": 3,
            "description": "Indicates human language of post primary text content."
          },
          "reply": {
            "ref": "#replyRef",
            "type": "ref"
          },
          "facets": {
            "type": "array",
            "items": {
              "ref": "app.bsky.richtext.facet",
              "type": "ref"
            },
            "description": "Cleartext annotations (mentions, URLs, hashtags). Omitted when ciphertext is set."
          },
          "labels": {
            "refs": [
              "com.atproto.label.defs#selfLabels"
            ],
            "type": "union",
            "description": "Self-label values for this post. Effectively content warnings."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "Client-declared timestamp when this post was originally created."
          },
          "ciphertext": {
            "type": "bytes",
            "maxLength": 65536,
            "description": "Encrypted payload for private posts (client-defined encoding of text, facets, tags, and related fields). Omitted for public/shout posts."
          },
          "keyEpochId": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "description": "References an epoch on the author's social.smallbury.actor.trust record. Required when ciphertext is set."
          },
          "opaqueBlobs": {
            "type": "array",
            "items": {
              "type": "blob"
            },
            "maxLength": 4,
            "description": "Encrypted blobs referenced from the ciphertext payload. Pins blobs on the PDS without using Bluesky embed types. Does not reveal image content; blob count and sizes are visible."
          }
        }
      },
      "description": "Record containing a Smallbury post. Aligned with app.bsky.feed.post for public/shout content. Private posts reference a keyEpochId on the author's trust record and store encrypted body in ciphertext."
    },
    "replyRef": {
      "type": "object",
      "required": [
        "root",
        "parent"
      ],
      "properties": {
        "root": {
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        },
        "parent": {
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        }
      }
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
