social.colibri.sync.subscribeEvents

colibri.social

{
  "id": "social.colibri.sync.subscribeEvents",
  "defs": {
    "ack": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "const": "ack"
        }
      },
      "description": "Sent in response to a heartbeat message."
    },
    "main": {
      "type": "subscription",
      "errors": [
        {
          "name": "AuthRequired",
          "description": "Missing, malformed, or unverifiable service auth."
        }
      ],
      "message": {
        "schema": {
          "refs": [
            "lex:social.colibri.sync.subscribeEvents#ack",
            "lex:social.colibri.sync.subscribeEvents#communityEvent",
            "lex:social.colibri.sync.subscribeEvents#memberEvent",
            "lex:social.colibri.sync.subscribeEvents#categoryEvent",
            "lex:social.colibri.sync.subscribeEvents#channelEvent",
            "lex:social.colibri.sync.subscribeEvents#messageEvent",
            "lex:social.colibri.sync.subscribeEvents#reactionEvent",
            "lex:social.colibri.sync.subscribeEvents#userEvent",
            "lex:social.colibri.sync.subscribeEvents#typingEvent",
            "lex:social.colibri.sync.subscribeEvents#voicePresenceEvent",
            "lex:social.colibri.sync.subscribeEvents#voiceStateEvent"
          ],
          "type": "union"
        }
      },
      "description": "Opens a WebSocket stream that transmits relevant events for the authenticated user."
    },
    "userEvent": {
      "type": "object",
      "required": [
        "type",
        "data"
      ],
      "properties": {
        "data": {
          "ref": "lex:social.colibri.sync.subscribeEvents#userEventData",
          "type": "ref"
        },
        "type": {
          "type": "string",
          "const": "user_event"
        }
      },
      "description": "Sent when a known user has updated their profile or Colibri status."
    },
    "userStatus": {
      "type": "object",
      "required": [
        "state",
        "text"
      ],
      "properties": {
        "text": {
          "type": "string"
        },
        "emoji": {
          "type": "string"
        },
        "state": {
          "type": "string",
          "knownValues": [
            "online",
            "away",
            "dnd",
            "offline"
          ]
        }
      }
    },
    "humEnvelope": {
      "type": "object",
      "required": [
        "origin",
        "id",
        "ttl",
        "subject",
        "community",
        "event"
      ],
      "properties": {
        "id": {
          "type": "string",
          "maxLength": 64,
          "description": "Unique id for this Hum, used by receivers to dedup across relay paths."
        },
        "ttl": {
          "type": "integer",
          "maximum": 8,
          "minimum": 0,
          "description": "Remaining relay hops. Decremented on each forward; a Hum at ttl 0 is delivered locally but never relayed."
        },
        "event": {
          "refs": [
            "lex:social.colibri.sync.subscribeEvents#userEvent",
            "lex:social.colibri.sync.subscribeEvents#typingEvent",
            "lex:social.colibri.sync.subscribeEvents#voicePresenceEvent",
            "lex:social.colibri.sync.subscribeEvents#voiceStateEvent"
          ],
          "type": "union",
          "description": "Ephemeral event payload. Only off-protocol types are permitted."
        },
        "origin": {
          "type": "string",
          "format": "did",
          "description": "DID of the AppView that first emitted this Hum."
        },
        "subject": {
          "type": "string",
          "format": "did",
          "description": "The user this event is about. Receiver MUST verify origin equals subject's declared presenceService before trusting or relaying."
        },
        "community": {
          "type": "string",
          "format": "at-uri",
          "description": "Community the event is scoped to. Receiver relays to local clients only if they are members of this community."
        }
      },
      "description": "An off-protocol event relayed between AppViews. The authenticated sender (inter-service auth JWT: aud = receiving AppView did:web, lxm = social.colibri.sync.sendHum) is the origin of record; `origin` is echoed for relay/loop control and MUST match the JWT issuer. Only off-protocol event types are permitted — on-protocol events are never carried by a Hum and are derived from the firehose instead."
    },
    "memberEvent": {
      "type": "object",
      "required": [
        "type",
        "data"
      ],
      "properties": {
        "data": {
          "ref": "lex:social.colibri.sync.subscribeEvents#memberEventData",
          "type": "ref"
        },
        "type": {
          "type": "string",
          "const": "member_event"
        }
      },
      "description": "Sent when a member has joined or left a community."
    },
    "typingEvent": {
      "type": "object",
      "required": [
        "type",
        "data"
      ],
      "properties": {
        "data": {
          "ref": "lex:social.colibri.sync.subscribeEvents#typingEventData",
          "type": "ref"
        },
        "type": {
          "type": "string",
          "const": "typing_event"
        }
      },
      "description": "Sent when a user is typing in a channel the client is viewing."
    },
    "userProfile": {
      "type": "object",
      "required": [
        "handle"
      ],
      "properties": {
        "avatar": {
          "type": "blob"
        },
        "banner": {
          "type": "blob"
        },
        "handle": {
          "type": "string",
          "format": "handle"
        },
        "description": {
          "type": "string"
        },
        "displayName": {
          "type": "string"
        }
      }
    },
    "channelEvent": {
      "type": "object",
      "required": [
        "type",
        "data"
      ],
      "properties": {
        "data": {
          "ref": "lex:social.colibri.sync.subscribeEvents#channelEventData",
          "type": "ref"
        },
        "type": {
          "type": "string",
          "const": "channel_event"
        }
      },
      "description": "Sent when a channel has been created, updated, or deleted."
    },
    "messageEvent": {
      "type": "object",
      "required": [
        "type",
        "data"
      ],
      "properties": {
        "data": {
          "ref": "lex:social.colibri.sync.subscribeEvents#messageEventData",
          "type": "ref"
        },
        "type": {
          "type": "string",
          "const": "message_event"
        }
      },
      "description": "Sent when a message has been sent, edited, or deleted."
    },
    "categoryEvent": {
      "type": "object",
      "required": [
        "type",
        "data"
      ],
      "properties": {
        "data": {
          "ref": "lex:social.colibri.sync.subscribeEvents#categoryEventData",
          "type": "ref"
        },
        "type": {
          "type": "string",
          "const": "category_event"
        }
      },
      "description": "Sent when a category has been created, updated, or deleted."
    },
    "reactionEvent": {
      "type": "object",
      "required": [
        "type",
        "data"
      ],
      "properties": {
        "data": {
          "ref": "lex:social.colibri.sync.subscribeEvents#reactionEventData",
          "type": "ref"
        },
        "type": {
          "type": "string",
          "const": "reaction_event"
        }
      },
      "description": "Sent when a reaction has been added to or removed from a message."
    },
    "userEventData": {
      "type": "object",
      "required": [
        "did",
        "profile"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        },
        "status": {
          "ref": "lex:social.colibri.sync.subscribeEvents#userStatus",
          "type": "ref"
        },
        "profile": {
          "ref": "lex:social.colibri.sync.subscribeEvents#userProfile",
          "type": "ref"
        }
      }
    },
    "communityEvent": {
      "type": "object",
      "required": [
        "type",
        "data"
      ],
      "properties": {
        "data": {
          "ref": "lex:social.colibri.sync.subscribeEvents#communityEventData",
          "type": "ref"
        },
        "type": {
          "type": "string",
          "const": "community_event"
        }
      },
      "description": "Sent when a community has been updated or deleted."
    },
    "memberEventData": {
      "type": "object",
      "required": [
        "event",
        "community"
      ],
      "properties": {
        "event": {
          "type": "string",
          "knownValues": [
            "join",
            "leave",
            "roles_updated"
          ]
        },
        "member": {
          "ref": "lex:social.colibri.sync.subscribeEvents#memberEventMember",
          "type": "ref",
          "description": "The affected member, hydrated. Present on `join` and `roles_updated`."
        },
        "community": {
          "type": "string",
          "format": "at-uri"
        },
        "memberDid": {
          "type": "string",
          "format": "did",
          "description": "DID of the member who left. Present on `leave`."
        },
        "membership": {
          "type": "string",
          "format": "at-uri"
        }
      }
    },
    "typingEventData": {
      "type": "object",
      "required": [
        "event",
        "channel",
        "did"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        },
        "event": {
          "type": "string",
          "knownValues": [
            "start",
            "stop"
          ]
        },
        "channel": {
          "type": "string",
          "format": "at-uri"
        }
      }
    },
    "voiceStateEvent": {
      "type": "object",
      "required": [
        "type",
        "data"
      ],
      "properties": {
        "data": {
          "ref": "lex:social.colibri.sync.subscribeEvents#voiceStateEventData",
          "type": "ref"
        },
        "type": {
          "type": "string",
          "const": "voice_state_event"
        }
      },
      "description": "Sent when a user's voice state changes within a voice channel. `muted` and `deafened` are the user's own choices; `serverMuted` and `serverDeafened` are moderator-applied and enforced by the SFU. Each field is absent when unchanged."
    },
    "channelEventData": {
      "type": "object",
      "required": [
        "event",
        "uri",
        "community"
      ],
      "properties": {
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "event": {
          "type": "string",
          "knownValues": [
            "upsert",
            "delete"
          ]
        },
        "category": {
          "type": "string",
          "format": "at-uri"
        },
        "community": {
          "type": "string",
          "format": "at-uri"
        },
        "description": {
          "type": "string"
        }
      }
    },
    "messageEventData": {
      "type": "object",
      "required": [
        "event",
        "uri",
        "channel"
      ],
      "properties": {
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "text": {
          "type": "string"
        },
        "event": {
          "type": "string",
          "knownValues": [
            "upsert",
            "delete"
          ]
        },
        "edited": {
          "type": "boolean"
        },
        "facets": {
          "type": "array",
          "items": {
            "ref": "lex:social.colibri.richtext.facet",
            "type": "ref"
          }
        },
        "parent": {
          "type": "string",
          "format": "at-uri"
        },
        "channel": {
          "type": "string",
          "format": "at-uri"
        },
        "createdAt": {
          "type": "string",
          "format": "datetime"
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime"
        },
        "attachments": {
          "type": "array",
          "items": {
            "type": "blob"
          }
        }
      }
    },
    "categoryEventData": {
      "type": "object",
      "required": [
        "event",
        "uri",
        "community"
      ],
      "properties": {
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "name": {
          "type": "string"
        },
        "event": {
          "type": "string",
          "knownValues": [
            "upsert",
            "delete"
          ]
        },
        "community": {
          "type": "string",
          "format": "at-uri"
        },
        "channelOrder": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "at-uri"
          }
        }
      }
    },
    "memberEventMember": {
      "type": "object",
      "required": [
        "did",
        "handle",
        "roles",
        "data"
      ],
      "properties": {
        "vc": {
          "type": "string",
          "format": "at-uri",
          "description": "AT-URI of the voice channel the member is currently connected to, if any. Only set when that channel belongs to `community`."
        },
        "did": {
          "type": "string",
          "format": "did"
        },
        "data": {
          "ref": "lex:social.colibri.actor.defs#actorData",
          "type": "ref"
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "at-uri"
          }
        },
        "handle": {
          "type": "string",
          "format": "handle"
        },
        "vcMuted": {
          "type": "boolean"
        },
        "joinedAt": {
          "type": "string",
          "format": "datetime"
        },
        "nickname": {
          "type": "string"
        },
        "vcDeafened": {
          "type": "boolean"
        }
      },
      "description": "The affected member as carried by a member event. Mirrors `social.colibri.community.defs#memberView`, including the member's current voice channel state so a receiving client can place them in a voice channel without refetching."
    },
    "reactionEventData": {
      "type": "object",
      "required": [
        "event",
        "uri",
        "emoji",
        "target",
        "channel"
      ],
      "properties": {
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "emoji": {
          "type": "string"
        },
        "event": {
          "type": "string",
          "knownValues": [
            "added",
            "removed"
          ]
        },
        "target": {
          "type": "string",
          "format": "at-uri"
        },
        "channel": {
          "type": "string",
          "format": "at-uri"
        }
      }
    },
    "communityEventData": {
      "type": "object",
      "required": [
        "event",
        "uri"
      ],
      "properties": {
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "name": {
          "type": "string"
        },
        "event": {
          "type": "string",
          "knownValues": [
            "upsert",
            "delete"
          ]
        },
        "banner": {
          "type": "blob"
        },
        "picture": {
          "type": "blob"
        },
        "description": {
          "type": "string"
        },
        "categoryOrder": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "at-uri"
          }
        },
        "requiresApprovalToJoin": {
          "type": "boolean"
        }
      }
    },
    "voicePresenceEvent": {
      "type": "object",
      "required": [
        "type",
        "data"
      ],
      "properties": {
        "data": {
          "ref": "lex:social.colibri.sync.subscribeEvents#voicePresenceEventData",
          "type": "ref"
        },
        "type": {
          "type": "string",
          "const": "voice_presence_event"
        }
      },
      "description": "Sent when a user joins or leaves a voice channel."
    },
    "voiceStateEventData": {
      "type": "object",
      "required": [
        "channel",
        "did"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        },
        "muted": {
          "type": "boolean"
        },
        "channel": {
          "type": "string",
          "format": "at-uri"
        },
        "deafened": {
          "type": "boolean"
        },
        "serverMuted": {
          "type": "boolean"
        },
        "serverDeafened": {
          "type": "boolean"
        }
      }
    },
    "voicePresenceEventData": {
      "type": "object",
      "required": [
        "event",
        "channel",
        "did"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        },
        "event": {
          "type": "string",
          "knownValues": [
            "join",
            "leave"
          ]
        },
        "channel": {
          "type": "string",
          "format": "at-uri"
        }
      }
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "revision": 1
}

Validate Record

Validate a record against social.colibri.sync.subscribeEvents

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:mprdjqjluoswa7awzggaggj3
CID
bafyreievhjau2ileevpevppgm5d5abik7jmlm3rbtegxfj2h3rmrundcoi
Indexed At
2026-07-31 21:23 UTC
AT-URI
at://did:plc:mprdjqjluoswa7awzggaggj3/com.atproto.lexicon.schema/social.colibri.sync.subscribeEvents

Version History (6 versions)

Referenced Schemas (26)

  • lex:social.colibri.actor.defs#actorData
  • lex:social.colibri.richtext.facet
  • lex:social.colibri.sync.subscribeEvents#ack
  • lex:social.colibri.sync.subscribeEvents#categoryEvent
  • lex:social.colibri.sync.subscribeEvents#categoryEventData
  • lex:social.colibri.sync.subscribeEvents#channelEvent
  • lex:social.colibri.sync.subscribeEvents#channelEventData
  • lex:social.colibri.sync.subscribeEvents#communityEvent
  • lex:social.colibri.sync.subscribeEvents#communityEventData
  • lex:social.colibri.sync.subscribeEvents#memberEvent
  • lex:social.colibri.sync.subscribeEvents#memberEventData
  • lex:social.colibri.sync.subscribeEvents#memberEventMember
  • lex:social.colibri.sync.subscribeEvents#messageEvent
  • lex:social.colibri.sync.subscribeEvents#messageEventData
  • lex:social.colibri.sync.subscribeEvents#reactionEvent
  • lex:social.colibri.sync.subscribeEvents#reactionEventData
  • lex:social.colibri.sync.subscribeEvents#typingEvent
  • lex:social.colibri.sync.subscribeEvents#typingEventData
  • lex:social.colibri.sync.subscribeEvents#userEvent
  • lex:social.colibri.sync.subscribeEvents#userEventData
  • lex:social.colibri.sync.subscribeEvents#userProfile
  • lex:social.colibri.sync.subscribeEvents#userStatus
  • lex:social.colibri.sync.subscribeEvents#voicePresenceEvent
  • lex:social.colibri.sync.subscribeEvents#voicePresenceEventData
  • lex:social.colibri.sync.subscribeEvents#voiceStateEvent
  • lex:social.colibri.sync.subscribeEvents#voiceStateEventData

Lexicon Garden

@