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.
tid
Timestamp-based ID
Properties
ciphertext
bytes
Optional
Encrypted payload for private posts (client-defined encoding of text, facets, tags, and related fields). Omitted for public/shout posts.
maxLength: 65536createdAt
string
datetime
Required
Client-declared timestamp when this post was originally created.
embed
union
Optional
No description available.
facets
array
of
ref
app.bsky.richtext.facet
Optional
Cleartext annotations (mentions, URLs, hashtags). Omitted when ciphertext is set.
keyEpochId
string
Optional
References an epoch on the author's social.smallbury.actor.trust record. Required when ciphertext is set.
maxLength: 64 bytesminLength: 1 byteslabels
union
Optional
Self-label values for this post. Effectively content warnings.
langs
array
of
string
language
Optional
Indicates human language of post primary text content.
maxLength: 3 itemsopaqueBlobs
array
of
blob
Optional
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.
maxLength: 4 itemsreply
ref
#replyRef
Optional
No description available.
tags
array
of
string
Optional
Additional hashtags. Omitted when ciphertext is set.
maxLength: 8 itemstext
string
Optional
Cleartext primary content for public/shout posts. Omitted or empty when ciphertext is set.
maxLength: 3000 bytesmaxGraphemes: 300 graphemesView raw schema
{
"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."
}