social.colibri.beta.thread.defs
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"threadView": {
"description": "A thread as the AppView serves it. The thread's identity is its space.",
"properties": {
"anchor": {
"description": "The message the thread was opened from. Absent on a thread opened from scratch. Its space stays where the thread was opened even after the thread moves to another channel, which is what drops the thread's marker out of the old channel without losing the quoted message. A client draws the thread's marker in the channel river only where the anchor's space is the channel being read.",
"ref": "social.colibri.beta.defs#spaceRecordRef",
"type": "ref"
},
"anchorMessage": {
"description": "The anchor message itself, for opening a thread without having read its channel. Served by getThread rather than by listThreads.",
"refs": [
"social.colibri.beta.channel.defs#messageView",
"social.colibri.beta.channel.defs#deletedMessageView"
],
"type": "union"
},
"channel": {
"description": "The channel the thread belongs to.",
"format": "space-ref",
"type": "string"
},
"community": {
"description": "The community the thread's channel belongs to.",
"format": "did",
"type": "string"
},
"createdAt": {
"description": "When the thread was opened.",
"format": "datetime",
"type": "string"
},
"createdBy": {
"description": "Who opened the thread.",
"format": "did",
"type": "string"
},
"lastActivityAt": {
"description": "When the thread was last written to. This is what drives the activity age a client shows, since threads carry no presence roster of their own.",
"format": "datetime",
"type": "string"
},
"messageCount": {
"description": "How many messages the thread holds.",
"type": "integer"
},
"movedInCount": {
"description": "How many of those messages were moved in from somewhere else.",
"type": "integer"
},
"name": {
"description": "The thread's title.",
"type": "string"
},
"participants": {
"description": "Who has posted, most recently active first, capped at a handful.",
"items": {
"description": "Someone who has posted in the thread.",
"format": "did",
"type": "string"
},
"type": "array"
},
"private": {
"description": "Whether the thread restricts who may read it beyond who may read its channel.",
"type": "boolean"
},
"space": {
"description": "The thread's space, which is its identity.",
"format": "space-ref",
"type": "string"
},
"viewer": {
"description": "The requesting user's relationship to this thread.",
"ref": "#threadViewerState",
"type": "ref"
},
"visibleToMembers": {
"description": "Members that may read this thread beyond visibleToRoles.",
"items": {
"description": "A member.",
"format": "did",
"type": "string"
},
"type": "array"
},
"visibleToRoles": {
"description": "Roles that may read this thread. Empty means everyone who can read the channel may.",
"items": {
"description": "A role.",
"format": "record-key",
"type": "string"
},
"type": "array"
}
},
"required": [
"space",
"channel",
"community",
"name",
"createdBy",
"createdAt",
"lastActivityAt",
"messageCount",
"participants",
"viewer"
],
"type": "object"
},
"threadViewerState": {
"description": "The requesting user's access and unread state for a thread.",
"properties": {
"canManage": {
"description": "Whether the user may rename, move or delete this thread.",
"type": "boolean"
},
"canPost": {
"description": "Whether the user may post in this thread.",
"type": "boolean"
},
"canRead": {
"description": "Whether the user may read this thread.",
"type": "boolean"
},
"cursor": {
"description": "The user's read cursor in this thread.",
"format": "tid",
"type": "string"
},
"following": {
"description": "Whether the user follows this thread.",
"type": "boolean"
},
"hasUnread": {
"description": "Whether anything in the thread is unread.",
"type": "boolean"
},
"muted": {
"description": "Whether the user has muted this thread.",
"type": "boolean"
},
"unreadMentions": {
"description": "How many unread messages in the thread mention the user.",
"type": "integer"
}
},
"required": [
"canRead",
"canPost",
"canManage",
"following",
"muted",
"hasUnread",
"unreadMentions"
],
"type": "object"
}
},
"id": "social.colibri.beta.thread.defs",
"lexicon": 1
}
Metadata
- DID
-
did:plc:mprdjqjluoswa7awzggaggj3 - CID
-
bafyreiethnn6hizx3lkfqj62qwl7fofedkdhm7pkfdfqowrsg352uevcru - Indexed At
- 2026-09-01 11:12 UTC
- AT-URI
-
at://did:plc:mprdjqjluoswa7awzggaggj3/com.atproto.lexicon.schema/social.colibri.beta.thread.defs
Referenced Schemas (3)
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
social.colibri.beta.thread record
A thread's configuration, including the link to the channel it belongs to. Lives at key 'self' in the thread's own space and is written only by the community.
-
A file attached to a message.
-
A thread beside a text channel. The space key is the thread's identity, and the thread's own configuration is the social.colibri.beta.thread record at key 'self' inside it. That record carries the link to the parent cha…
-
blue.skytalk.talk.thread record
A thread in a channel
-
Opens a thread beside a text channel. This creates a space for the thread, then writes the thread's configuration record at key 'self' inside it. The anchor message is referenced rather than copied, so it stays in its a…