{
"id": "org.simocracy.feed.post",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"text",
"createdAt"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 640,
"maxGraphemes": 64
},
"maxLength": 8,
"description": "Additional hashtags, in addition to any included in post text and facets."
},
"text": {
"type": "string",
"maxLength": 3000,
"description": "The primary post content. May be an empty string, if there are embeds.",
"maxGraphemes": 300
},
"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": "Annotations of text (mentions, URLs, hashtags, etc)."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this post was originally created."
}
}
},
"description": "Record containing a Simocracy feed post. A port of app.bsky.feed.post (via app.gainforest.feed.post) into the org.simocracy.feed namespace. A reply (i.e. a 'comment') is a post that carries a `reply` ref; because that ref uses com.atproto.repo.strongRef, the Simocracy appview can honour replies whose parent/root is ANY record in the commons (a proposal, sim, gathering, decision, skill, or another post), not only another post. Deprecated `entities`/`textSlice` fields from the Bluesky source were omitted in favour of `facets`; the `embed` union and `labels` are omitted for now and may be added additively later."
},
"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
}