{
"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
}