social.colibri.sync.subscribeEvents

colibri.social

Schema Diff

+221 -4

From

CID
bafyreifdlnjyvog...
Indexed At
2026-04-19 12:22 UTC
View this version

To

CID
bafyreihrarl3uu6...
Indexed At
2026-08-15 21:21 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

23 breaking changes, 81 non-breaking changes.

Breaking Changes (23)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.origin", kind: "prop", name: Some("origin") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.community", kind: "prop", name: Some("community") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.subject", kind: "prop", name: Some("subject") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.ttl", kind: "prop", name: Some("ttl") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event", kind: "prop", name: Some("event") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEvent", src: "social.colibri.sync.subscribeEvents#voiceStateEvent", tgt: "social.colibri.sync.subscribeEvents#voiceStateEvent.data", kind: "prop", name: Some("data") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEvent", src: "social.colibri.sync.subscribeEvents#voiceStateEvent", tgt: "social.colibri.sync.subscribeEvents#voiceStateEvent.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData", src: "social.colibri.sync.subscribeEvents#voicePresenceEventData", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEventData.channel", kind: "prop", name: Some("channel") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData", src: "social.colibri.sync.subscribeEvents#voicePresenceEventData", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEventData.did", kind: "prop", name: Some("did") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData", src: "social.colibri.sync.subscribeEvents#voicePresenceEventData", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEventData.event", kind: "prop", name: Some("event") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember", src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.did", kind: "prop", name: Some("did") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember", src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.data", kind: "prop", name: Some("data") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember", src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.handle", kind: "prop", name: Some("handle") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember", src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.roles", kind: "prop", name: Some("roles") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent", src: "social.colibri.sync.subscribeEvents#voicePresenceEvent", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEvent.type", kind: "prop", name: Some("type") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent", src: "social.colibri.sync.subscribeEvents#voicePresenceEvent", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEvent.data", kind: "prop", name: Some("data") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData", src: "social.colibri.sync.subscribeEvents#voiceStateEventData", tgt: "social.colibri.sync.subscribeEvents#voiceStateEventData.channel", kind: "prop", name: Some("channel") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData", src: "social.colibri.sync.subscribeEvents#voiceStateEventData", tgt: "social.colibri.sync.subscribeEvents#voiceStateEventData.did", kind: "prop", name: Some("did") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "social.colibri.sync.subscribeEvents#memberEventData", src: "social.colibri.sync.subscribeEvents#memberEventData", tgt: "social.colibri.sync.subscribeEvents#memberEventData.membership", kind: "prop", name: Some("membership") }
  • ConstraintAdded ConstraintAdded { vertex_id: "social.colibri.sync.subscribeEvents#communityEventData.categoryOrder:items", sort: "format", value: "at-uri" }
  • ConstraintAdded ConstraintAdded { vertex_id: "social.colibri.sync.subscribeEvents#categoryEventData.channelOrder:items", sort: "format", value: "at-uri" }
  • ConstraintTightened ConstraintTightened { vertex_id: "social.colibri.sync.subscribeEvents#memberEventData.event", sort: "knownValues", old_value: "[\"join\",\"leave\"]", new_value: "[\"join\",\"leave\",\"roles_updated\"]" }
Non-Breaking Changes (81)
  • AddedVertex AddedVertex { vertex_id: "lex:social.colibri.actor.defs#actorData" }
  • AddedVertex AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#memberEventMember" }
  • AddedVertex AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#typingEvent" }
  • AddedVertex AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#userEvent" }
  • AddedVertex AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#voicePresenceEvent" }
  • AddedVertex AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#voicePresenceEventData" }
  • AddedVertex AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#voiceStateEvent" }
  • AddedVertex AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#voiceStateEventData" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#channelEventData.category" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#communityEventData.banner" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#communityEventData.requiresApprovalToJoin" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.community" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant0" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant1" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant2" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant3" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.id" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.origin" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.subject" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.ttl" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventData.member" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventData.memberDid" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.data" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.did" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.handle" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.joinedAt" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.nickname" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.roles" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.roles:items" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.vc" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.vcDeafened" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.vcMuted" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#messageEventData.live" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent.data" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent.type" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData.channel" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData.did" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData.event" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEvent" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEvent.data" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEvent.type" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData.channel" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData.deafened" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData.did" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData.muted" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData.serverDeafened" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData.serverMuted" }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#channelEventData", tgt: "social.colibri.sync.subscribeEvents#channelEventData.category", kind: "prop", name: Some("category") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#communityEventData", tgt: "social.colibri.sync.subscribeEvents#communityEventData.banner", kind: "prop", name: Some("banner") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#communityEventData", tgt: "social.colibri.sync.subscribeEvents#communityEventData.requiresApprovalToJoin", kind: "prop", name: Some("requiresApprovalToJoin") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant0", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#userEvent") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant1", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#typingEvent") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant2", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#voicePresenceEvent") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant3", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#voiceStateEvent") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant0", tgt: "lex:social.colibri.sync.subscribeEvents#userEvent", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant1", tgt: "lex:social.colibri.sync.subscribeEvents#typingEvent", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant2", tgt: "lex:social.colibri.sync.subscribeEvents#voicePresenceEvent", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant3", tgt: "lex:social.colibri.sync.subscribeEvents#voiceStateEvent", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventData", tgt: "social.colibri.sync.subscribeEvents#memberEventData.member", kind: "prop", name: Some("member") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventData", tgt: "social.colibri.sync.subscribeEvents#memberEventData.memberDid", kind: "prop", name: Some("memberDid") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventData.member", tgt: "lex:social.colibri.sync.subscribeEvents#memberEventMember", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.joinedAt", kind: "prop", name: Some("joinedAt") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.nickname", kind: "prop", name: Some("nickname") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.vc", kind: "prop", name: Some("vc") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.vcDeafened", kind: "prop", name: Some("vcDeafened") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.vcMuted", kind: "prop", name: Some("vcMuted") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember.data", tgt: "lex:social.colibri.actor.defs#actorData", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember.roles", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.roles:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#messageEventData", tgt: "social.colibri.sync.subscribeEvents#messageEventData.live", kind: "prop", name: Some("live") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#voicePresenceEvent.data", tgt: "lex:social.colibri.sync.subscribeEvents#voicePresenceEventData", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#voiceStateEvent.data", tgt: "lex:social.colibri.sync.subscribeEvents#voiceStateEventData", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#voiceStateEventData", tgt: "social.colibri.sync.subscribeEvents#voiceStateEventData.deafened", kind: "prop", name: Some("deafened") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#voiceStateEventData", tgt: "social.colibri.sync.subscribeEvents#voiceStateEventData.muted", kind: "prop", name: Some("muted") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#voiceStateEventData", tgt: "social.colibri.sync.subscribeEvents#voiceStateEventData.serverDeafened", kind: "prop", name: Some("serverDeafened") }
  • AddedEdge AddedEdge { src: "social.colibri.sync.subscribeEvents#voiceStateEventData", tgt: "social.colibri.sync.subscribeEvents#voiceStateEventData.serverMuted", kind: "prop", name: Some("serverMuted") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "lex:social.colibri.actor.defs#actorData" }
  • AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#memberEventMember" }
  • AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#typingEvent" }
  • AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#userEvent" }
  • AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#voicePresenceEvent" }
  • AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#voicePresenceEventData" }
  • AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#voiceStateEvent" }
  • AddedVertex { vertex_id: "lex:social.colibri.sync.subscribeEvents#voiceStateEventData" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#channelEventData.category" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#communityEventData.banner" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#communityEventData.requiresApprovalToJoin" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.community" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant0" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant1" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant2" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant3" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.id" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.origin" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.subject" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope.ttl" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventData.member" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventData.memberDid" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.data" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.did" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.handle" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.joinedAt" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.nickname" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.roles" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.roles:items" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.vc" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.vcDeafened" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember.vcMuted" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#messageEventData.live" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent.data" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent.type" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData.channel" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData.did" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData.event" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEvent" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEvent.data" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEvent.type" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData.channel" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData.deafened" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData.did" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData.muted" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData.serverDeafened" }
  • AddedVertex { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData.serverMuted" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "social.colibri.sync.subscribeEvents#memberEventData.event", sort: "knownValues", old_value: "[\"join\",\"leave\"]", new_value: "[\"join\",\"leave\",\"roles_updated\"]" }
  • ConstraintAdded ConstraintAdded { vertex_id: "social.colibri.sync.subscribeEvents#categoryEventData.channelOrder:items", sort: "format", value: "at-uri" }
  • ConstraintAdded ConstraintAdded { vertex_id: "social.colibri.sync.subscribeEvents#communityEventData.categoryOrder:items", sort: "format", value: "at-uri" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.origin", kind: "prop", name: Some("origin") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.community", kind: "prop", name: Some("community") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.subject", kind: "prop", name: Some("subject") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.ttl", kind: "prop", name: Some("ttl") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.id", kind: "prop", name: Some("id") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#humEnvelope", src: "social.colibri.sync.subscribeEvents#humEnvelope", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event", kind: "prop", name: Some("event") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent", src: "social.colibri.sync.subscribeEvents#voicePresenceEvent", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEvent.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEvent", src: "social.colibri.sync.subscribeEvents#voicePresenceEvent", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEvent.data", kind: "prop", name: Some("data") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData", src: "social.colibri.sync.subscribeEvents#voicePresenceEventData", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEventData.channel", kind: "prop", name: Some("channel") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData", src: "social.colibri.sync.subscribeEvents#voicePresenceEventData", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEventData.did", kind: "prop", name: Some("did") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voicePresenceEventData", src: "social.colibri.sync.subscribeEvents#voicePresenceEventData", tgt: "social.colibri.sync.subscribeEvents#voicePresenceEventData.event", kind: "prop", name: Some("event") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember", src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.did", kind: "prop", name: Some("did") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember", src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.data", kind: "prop", name: Some("data") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember", src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.handle", kind: "prop", name: Some("handle") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#memberEventMember", src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.roles", kind: "prop", name: Some("roles") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEvent", src: "social.colibri.sync.subscribeEvents#voiceStateEvent", tgt: "social.colibri.sync.subscribeEvents#voiceStateEvent.data", kind: "prop", name: Some("data") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEvent", src: "social.colibri.sync.subscribeEvents#voiceStateEvent", tgt: "social.colibri.sync.subscribeEvents#voiceStateEvent.type", kind: "prop", name: Some("type") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData", src: "social.colibri.sync.subscribeEvents#voiceStateEventData", tgt: "social.colibri.sync.subscribeEvents#voiceStateEventData.channel", kind: "prop", name: Some("channel") }
  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.sync.subscribeEvents#voiceStateEventData", src: "social.colibri.sync.subscribeEvents#voiceStateEventData", tgt: "social.colibri.sync.subscribeEvents#voiceStateEventData.did", kind: "prop", name: Some("did") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "social.colibri.sync.subscribeEvents#memberEventData", src: "social.colibri.sync.subscribeEvents#memberEventData", tgt: "social.colibri.sync.subscribeEvents#memberEventData.membership", kind: "prop", name: Some("membership") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#channelEventData", tgt: "social.colibri.sync.subscribeEvents#channelEventData.category", kind: "prop", name: Some("category") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#communityEventData", tgt: "social.colibri.sync.subscribeEvents#communityEventData.banner", kind: "prop", name: Some("banner") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#communityEventData", tgt: "social.colibri.sync.subscribeEvents#communityEventData.requiresApprovalToJoin", kind: "prop", name: Some("requiresApprovalToJoin") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant0", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#userEvent") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant1", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#typingEvent") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant2", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#voicePresenceEvent") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event", tgt: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant3", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#voiceStateEvent") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant0", tgt: "lex:social.colibri.sync.subscribeEvents#userEvent", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant1", tgt: "lex:social.colibri.sync.subscribeEvents#typingEvent", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant2", tgt: "lex:social.colibri.sync.subscribeEvents#voicePresenceEvent", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#humEnvelope.event:variant3", tgt: "lex:social.colibri.sync.subscribeEvents#voiceStateEvent", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventData", tgt: "social.colibri.sync.subscribeEvents#memberEventData.member", kind: "prop", name: Some("member") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventData", tgt: "social.colibri.sync.subscribeEvents#memberEventData.memberDid", kind: "prop", name: Some("memberDid") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventData.member", tgt: "lex:social.colibri.sync.subscribeEvents#memberEventMember", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.joinedAt", kind: "prop", name: Some("joinedAt") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.nickname", kind: "prop", name: Some("nickname") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.vc", kind: "prop", name: Some("vc") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.vcDeafened", kind: "prop", name: Some("vcDeafened") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.vcMuted", kind: "prop", name: Some("vcMuted") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember.data", tgt: "lex:social.colibri.actor.defs#actorData", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#memberEventMember.roles", tgt: "social.colibri.sync.subscribeEvents#memberEventMember.roles:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#messageEventData", tgt: "social.colibri.sync.subscribeEvents#messageEventData.live", kind: "prop", name: Some("live") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#voicePresenceEvent.data", tgt: "lex:social.colibri.sync.subscribeEvents#voicePresenceEventData", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#voiceStateEvent.data", tgt: "lex:social.colibri.sync.subscribeEvents#voiceStateEventData", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#voiceStateEventData", tgt: "social.colibri.sync.subscribeEvents#voiceStateEventData.deafened", kind: "prop", name: Some("deafened") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#voiceStateEventData", tgt: "social.colibri.sync.subscribeEvents#voiceStateEventData.muted", kind: "prop", name: Some("muted") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#voiceStateEventData", tgt: "social.colibri.sync.subscribeEvents#voiceStateEventData.serverDeafened", kind: "prop", name: Some("serverDeafened") }
  • Non-breaking: AddedEdge { src: "social.colibri.sync.subscribeEvents#voiceStateEventData", tgt: "social.colibri.sync.subscribeEvents#voiceStateEventData.serverMuted", kind: "prop", name: Some("serverMuted") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "ack": {
5 5
      "description": "Sent in response to a heartbeat message.",
6 6
      "properties": {
7 7
        "type": {
8 8
          "const": "ack",
9 9
          "type": "string"
10 10
        }
11 11
      },
12 12
      "required": [
13 13
        "type"
14 14
      ],
15 15
      "type": "object"
16 16
    },
17 17
    "categoryEvent": {
18 18
      "description": "Sent when a category has been created, updated, or deleted.",
19 19
      "properties": {
20 20
        "data": {
21 21
          "ref": "lex:social.colibri.sync.subscribeEvents#categoryEventData",
22 22
          "type": "ref"
23 23
        },
24 24
        "type": {
25 25
          "const": "category_event",
26 26
          "type": "string"
27 27
        }
28 28
      },
29 29
      "required": [
30 30
        "type",
31 31
        "data"
32 32
      ],
33 33
      "type": "object"
34 34
    },
35 35
    "categoryEventData": {
36 36
      "properties": {
37 37
        "channelOrder": {
38 38
          "items": {
39 +
            "format": "at-uri",
39 40
            "type": "string"
40 41
          },
41 42
          "type": "array"
42 43
        },
43 44
        "community": {
44 45
          "format": "at-uri",
45 46
          "type": "string"
46 47
        },
47 48
        "event": {
48 49
          "knownValues": [
49 50
            "upsert",
50 51
            "delete"
51 52
          ],
52 53
          "type": "string"
53 54
        },
54 55
        "name": {
55 56
          "type": "string"
56 57
        },
57 58
        "uri": {
58 59
          "format": "at-uri",
59 60
          "type": "string"
60 61
        }
61 62
      },
62 63
      "required": [
63 64
        "event",
64 65
        "uri",
65 66
        "community"
66 67
      ],
67 68
      "type": "object"
68 69
    },
69 70
    "channelEvent": {
70 71
      "description": "Sent when a channel has been created, updated, or deleted.",
71 72
      "properties": {
72 73
        "data": {
73 74
          "ref": "lex:social.colibri.sync.subscribeEvents#channelEventData",
74 75
          "type": "ref"
75 76
        },
76 77
        "type": {
77 78
          "const": "channel_event",
78 79
          "type": "string"
79 80
        }
80 81
      },
81 82
      "required": [
82 83
        "type",
83 84
        "data"
84 85
      ],
85 86
      "type": "object"
86 87
    },
87 88
    "channelEventData": {
88 89
      "properties": {
90 +
        "category": {
91 +
          "format": "at-uri",
92 +
          "type": "string"
93 +
        },
89 94
        "community": {
90 95
          "format": "at-uri",
91 96
          "type": "string"
92 97
        },
93 98
        "description": {
94 99
          "type": "string"
95 100
        },
96 101
        "event": {
97 102
          "knownValues": [
98 103
            "upsert",
99 104
            "delete"
100 105
          ],
101 106
          "type": "string"
102 107
        },
103 108
        "name": {
104 109
          "type": "string"
105 110
        },
106 111
        "type": {
107 112
          "type": "string"
108 113
        },
109 114
        "uri": {
110 115
          "format": "at-uri",
111 116
          "type": "string"
112 117
        }
113 118
      },
114 119
      "required": [
115 120
        "event",
116 121
        "uri",
117 122
        "community"
118 123
      ],
119 124
      "type": "object"
120 125
    },
121 126
    "communityEvent": {
122 127
      "description": "Sent when a community has been updated or deleted.",
123 128
      "properties": {
124 129
        "data": {
125 130
          "ref": "lex:social.colibri.sync.subscribeEvents#communityEventData",
126 131
          "type": "ref"
127 132
        },
128 133
        "type": {
129 134
          "const": "community_event",
130 135
          "type": "string"
131 136
        }
132 137
      },
133 138
      "required": [
134 139
        "type",
135 140
        "data"
136 141
      ],
137 142
      "type": "object"
138 143
    },
139 144
    "communityEventData": {
140 145
      "properties": {
146 +
        "banner": {
147 +
          "type": "blob"
148 +
        },
141 149
        "categoryOrder": {
142 150
          "items": {
151 +
            "format": "at-uri",
143 152
            "type": "string"
144 153
          },
145 154
          "type": "array"
146 155
        },
147 156
        "description": {
148 157
          "type": "string"
149 158
        },
150 159
        "event": {
151 160
          "knownValues": [
152 161
            "upsert",
153 162
            "delete"
154 163
          ],
155 164
          "type": "string"
156 165
        },
157 166
        "name": {
158 167
          "type": "string"
159 168
        },
160 169
        "picture": {
161 170
          "type": "blob"
162 171
        },
172 +
        "requiresApprovalToJoin": {
173 +
          "type": "boolean"
174 +
        },
163 175
        "uri": {
164 176
          "format": "at-uri",
165 177
          "type": "string"
166 178
        }
167 179
      },
168 180
      "required": [
169 181
        "event",
170 182
        "uri"
171 183
      ],
172 184
      "type": "object"
173 185
    },
186 +
    "humEnvelope": {
187 +
      "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.",
188 +
      "properties": {
189 +
        "community": {
190 +
          "description": "Community the event is scoped to. Receiver relays to local clients only if they are members of this community.",
191 +
          "format": "at-uri",
192 +
          "type": "string"
193 +
        },
194 +
        "event": {
195 +
          "description": "Ephemeral event payload. Only off-protocol types are permitted.",
196 +
          "refs": [
197 +
            "lex:social.colibri.sync.subscribeEvents#userEvent",
198 +
            "lex:social.colibri.sync.subscribeEvents#typingEvent",
199 +
            "lex:social.colibri.sync.subscribeEvents#voicePresenceEvent",
200 +
            "lex:social.colibri.sync.subscribeEvents#voiceStateEvent"
201 +
          ],
202 +
          "type": "union"
203 +
        },
204 +
        "id": {
205 +
          "description": "Unique id for this Hum, used by receivers to dedup across relay paths.",
206 +
          "maxLength": 64,
207 +
          "type": "string"
208 +
        },
209 +
        "origin": {
210 +
          "description": "DID of the AppView that first emitted this Hum.",
211 +
          "format": "did",
212 +
          "type": "string"
213 +
        },
214 +
        "subject": {
215 +
          "description": "The user this event is about. Receiver MUST verify origin equals subject's declared presenceService before trusting or relaying.",
216 +
          "format": "did",
217 +
          "type": "string"
218 +
        },
219 +
        "ttl": {
220 +
          "description": "Remaining relay hops. Decremented on each forward; a Hum at ttl 0 is delivered locally but never relayed.",
221 +
          "maximum": 8,
222 +
          "minimum": 0,
223 +
          "type": "integer"
224 +
        }
225 +
      },
226 +
      "required": [
227 +
        "origin",
228 +
        "id",
229 +
        "ttl",
230 +
        "subject",
231 +
        "community",
232 +
        "event"
233 +
      ],
234 +
      "type": "object"
235 +
    },
174 236
    "main": {
175 237
      "description": "Opens a WebSocket stream that transmits relevant events for the authenticated user.",
176 238
      "errors": [
177 239
        {
240 +
          "description": "Missing, malformed, or unverifiable service auth.",
178 241
          "name": "AuthRequired"
179 242
        }
180 243
      ],
181 244
      "message": {
182 245
        "schema": {
183 246
          "refs": [
184 247
            "lex:social.colibri.sync.subscribeEvents#ack",
185 248
            "lex:social.colibri.sync.subscribeEvents#communityEvent",
186 249
            "lex:social.colibri.sync.subscribeEvents#memberEvent",
187 250
            "lex:social.colibri.sync.subscribeEvents#categoryEvent",
188 251
            "lex:social.colibri.sync.subscribeEvents#channelEvent",
189 252
            "lex:social.colibri.sync.subscribeEvents#messageEvent",
190 253
            "lex:social.colibri.sync.subscribeEvents#reactionEvent",
191 254
            "lex:social.colibri.sync.subscribeEvents#userEvent",
192 -
            "lex:social.colibri.sync.subscribeEvents#typingEvent"
255 +
            "lex:social.colibri.sync.subscribeEvents#typingEvent",
256 +
            "lex:social.colibri.sync.subscribeEvents#voicePresenceEvent",
257 +
            "lex:social.colibri.sync.subscribeEvents#voiceStateEvent"
193 258
          ],
194 259
          "type": "union"
195 260
        }
196 261
      },
197 262
      "type": "subscription"
198 263
    },
199 264
    "memberEvent": {
200 265
      "description": "Sent when a member has joined or left a community.",
201 266
      "properties": {
202 267
        "data": {
203 268
          "ref": "lex:social.colibri.sync.subscribeEvents#memberEventData",
204 269
          "type": "ref"
205 270
        },
206 271
        "type": {
207 272
          "const": "member_event",
208 273
          "type": "string"
209 274
        }
210 275
      },
211 276
      "required": [
212 277
        "type",
213 278
        "data"
214 279
      ],
215 280
      "type": "object"
216 281
    },
217 282
    "memberEventData": {
218 283
      "properties": {
219 284
        "community": {
220 285
          "format": "at-uri",
221 286
          "type": "string"
222 287
        },
223 288
        "event": {
224 289
          "knownValues": [
225 290
            "join",
226 -
            "leave"
291 +
            "leave",
292 +
            "roles_updated"
227 293
          ],
228 294
          "type": "string"
229 295
        },
296 +
        "member": {
297 +
          "description": "The affected member, hydrated. Present on `join` and `roles_updated`.",
298 +
          "ref": "lex:social.colibri.sync.subscribeEvents#memberEventMember",
299 +
          "type": "ref"
300 +
        },
301 +
        "memberDid": {
302 +
          "description": "DID of the member who left. Present on `leave`.",
303 +
          "format": "did",
304 +
          "type": "string"
305 +
        },
230 306
        "membership": {
231 307
          "format": "at-uri",
232 308
          "type": "string"
233 309
        }
234 310
      },
235 311
      "required": [
236 312
        "event",
237 -
        "community",
238 -
        "membership"
313 +
        "community"
239 314
      ],
240 315
      "type": "object"
241 316
    },
317 +
    "memberEventMember": {
318 +
      "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.",
319 +
      "properties": {
320 +
        "data": {
321 +
          "ref": "lex:social.colibri.actor.defs#actorData",
322 +
          "type": "ref"
323 +
        },
324 +
        "did": {
325 +
          "format": "did",
326 +
          "type": "string"
327 +
        },
328 +
        "handle": {
329 +
          "format": "handle",
330 +
          "type": "string"
331 +
        },
332 +
        "joinedAt": {
333 +
          "format": "datetime",
334 +
          "type": "string"
335 +
        },
336 +
        "nickname": {
337 +
          "type": "string"
338 +
        },
339 +
        "roles": {
340 +
          "items": {
341 +
            "format": "at-uri",
342 +
            "type": "string"
343 +
          },
344 +
          "type": "array"
345 +
        },
346 +
        "vc": {
347 +
          "description": "AT-URI of the voice channel the member is currently connected to, if any. Only set when that channel belongs to `community`.",
348 +
          "format": "at-uri",
349 +
          "type": "string"
350 +
        },
351 +
        "vcDeafened": {
352 +
          "type": "boolean"
353 +
        },
354 +
        "vcMuted": {
355 +
          "type": "boolean"
356 +
        }
357 +
      },
358 +
      "required": [
359 +
        "did",
360 +
        "handle",
361 +
        "roles",
362 +
        "data"
363 +
      ],
364 +
      "type": "object"
365 +
    },
242 366
    "messageEvent": {
243 367
      "description": "Sent when a message has been sent, edited, or deleted.",
244 368
      "properties": {
245 369
        "data": {
246 370
          "ref": "lex:social.colibri.sync.subscribeEvents#messageEventData",
247 371
          "type": "ref"
248 372
        },
249 373
        "type": {
250 374
          "const": "message_event",
251 375
          "type": "string"
252 376
        }
253 377
      },
254 378
      "required": [
255 379
        "type",
256 380
        "data"
257 381
      ],
258 382
      "type": "object"
259 383
    },
260 384
    "messageEventData": {
261 385
      "properties": {
262 386
        "attachments": {
263 387
          "items": {
264 388
            "type": "blob"
265 389
          },
266 390
          "type": "array"
267 391
        },
268 392
        "channel": {
269 393
          "format": "at-uri",
270 394
          "type": "string"
271 395
        },
272 396
        "createdAt": {
273 397
          "format": "datetime",
274 398
          "type": "string"
275 399
        },
276 400
        "edited": {
277 401
          "type": "boolean"
278 402
        },
279 403
        "event": {
280 404
          "knownValues": [
281 405
            "upsert",
282 406
            "delete"
283 407
          ],
284 408
          "type": "string"
285 409
        },
286 410
        "facets": {
287 411
          "items": {
288 412
            "ref": "lex:social.colibri.richtext.facet",
289 413
            "type": "ref"
290 414
          },
291 415
          "type": "array"
292 416
        },
293 417
        "indexedAt": {
294 418
          "format": "datetime",
295 419
          "type": "string"
296 420
        },
421 +
        "live": {
422 +
          "type": "boolean"
423 +
        },
297 424
        "parent": {
298 425
          "format": "at-uri",
299 426
          "type": "string"
300 427
        },
301 428
        "text": {
302 429
          "type": "string"
303 430
        },
304 431
        "uri": {
305 432
          "format": "at-uri",
306 433
          "type": "string"
307 434
        }
308 435
      },
309 436
      "required": [
310 437
        "event",
311 438
        "uri",
312 439
        "channel"
313 440
      ],
314 441
      "type": "object"
315 442
    },
316 443
    "reactionEvent": {
317 444
      "description": "Sent when a reaction has been added to or removed from a message.",
318 445
      "properties": {
319 446
        "data": {
320 447
          "ref": "lex:social.colibri.sync.subscribeEvents#reactionEventData",
321 448
          "type": "ref"
322 449
        },
323 450
        "type": {
324 451
          "const": "reaction_event",
325 452
          "type": "string"
326 453
        }
327 454
      },
328 455
      "required": [
329 456
        "type",
330 457
        "data"
331 458
      ],
332 459
      "type": "object"
333 460
    },
334 461
    "reactionEventData": {
335 462
      "properties": {
336 463
        "channel": {
337 464
          "format": "at-uri",
338 465
          "type": "string"
339 466
        },
340 467
        "emoji": {
341 468
          "type": "string"
342 469
        },
343 470
        "event": {
344 471
          "knownValues": [
345 472
            "added",
346 473
            "removed"
347 474
          ],
348 475
          "type": "string"
349 476
        },
350 477
        "target": {
351 478
          "format": "at-uri",
352 479
          "type": "string"
353 480
        },
354 481
        "uri": {
355 482
          "format": "at-uri",
356 483
          "type": "string"
357 484
        }
358 485
      },
359 486
      "required": [
360 487
        "event",
361 488
        "uri",
362 489
        "emoji",
363 490
        "target",
364 491
        "channel"
365 492
      ],
366 493
      "type": "object"
367 494
    },
368 495
    "typingEvent": {
369 496
      "description": "Sent when a user is typing in a channel the client is viewing.",
370 497
      "properties": {
371 498
        "data": {
372 499
          "ref": "lex:social.colibri.sync.subscribeEvents#typingEventData",
373 500
          "type": "ref"
374 501
        },
375 502
        "type": {
376 503
          "const": "typing_event",
377 504
          "type": "string"
378 505
        }
379 506
      },
380 507
      "required": [
381 508
        "type",
382 509
        "data"
383 510
      ],
384 511
      "type": "object"
385 512
    },
386 513
    "typingEventData": {
387 514
      "properties": {
388 515
        "channel": {
389 516
          "format": "at-uri",
390 517
          "type": "string"
391 518
        },
392 519
        "did": {
393 520
          "format": "did",
394 521
          "type": "string"
395 522
        },
396 523
        "event": {
397 524
          "knownValues": [
398 525
            "start",
399 526
            "stop"
400 527
          ],
401 528
          "type": "string"
402 529
        }
403 530
      },
404 531
      "required": [
405 532
        "event",
406 533
        "channel",
407 534
        "did"
408 535
      ],
409 536
      "type": "object"
410 537
    },
411 538
    "userEvent": {
412 539
      "description": "Sent when a known user has updated their profile or Colibri status.",
413 540
      "properties": {
414 541
        "data": {
415 542
          "ref": "lex:social.colibri.sync.subscribeEvents#userEventData",
416 543
          "type": "ref"
417 544
        },
418 545
        "type": {
419 546
          "const": "user_event",
420 547
          "type": "string"
421 548
        }
422 549
      },
423 550
      "required": [
424 551
        "type",
425 552
        "data"
426 553
      ],
427 554
      "type": "object"
428 555
    },
429 556
    "userEventData": {
430 557
      "properties": {
431 558
        "did": {
432 559
          "format": "did",
433 560
          "type": "string"
434 561
        },
435 562
        "profile": {
436 563
          "ref": "lex:social.colibri.sync.subscribeEvents#userProfile",
437 564
          "type": "ref"
438 565
        },
439 566
        "status": {
440 567
          "ref": "lex:social.colibri.sync.subscribeEvents#userStatus",
441 568
          "type": "ref"
442 569
        }
443 570
      },
444 571
      "required": [
445 572
        "did",
446 573
        "profile"
447 574
      ],
448 575
      "type": "object"
449 576
    },
450 577
    "userProfile": {
451 578
      "properties": {
452 579
        "avatar": {
453 580
          "type": "blob"
454 581
        },
455 582
        "banner": {
456 583
          "type": "blob"
457 584
        },
458 585
        "description": {
459 586
          "type": "string"
460 587
        },
461 588
        "displayName": {
462 589
          "type": "string"
463 590
        },
464 591
        "handle": {
465 592
          "format": "handle",
466 593
          "type": "string"
467 594
        }
468 595
      },
469 596
      "required": [
470 597
        "handle"
471 598
      ],
472 599
      "type": "object"
473 600
    },
474 601
    "userStatus": {
475 602
      "properties": {
476 603
        "emoji": {
477 604
          "type": "string"
478 605
        },
479 606
        "state": {
480 607
          "knownValues": [
481 608
            "online",
482 609
            "away",
483 610
            "dnd",
484 611
            "offline"
485 612
          ],
486 613
          "type": "string"
487 614
        },
488 615
        "text": {
489 616
          "type": "string"
490 617
        }
491 618
      },
492 619
      "required": [
493 620
        "state",
494 621
        "text"
495 622
      ],
496 623
      "type": "object"
624 +
    },
625 +
    "voicePresenceEvent": {
626 +
      "description": "Sent when a user joins or leaves a voice channel.",
627 +
      "properties": {
628 +
        "data": {
629 +
          "ref": "lex:social.colibri.sync.subscribeEvents#voicePresenceEventData",
630 +
          "type": "ref"
631 +
        },
632 +
        "type": {
633 +
          "const": "voice_presence_event",
634 +
          "type": "string"
635 +
        }
636 +
      },
637 +
      "required": [
638 +
        "type",
639 +
        "data"
640 +
      ],
641 +
      "type": "object"
642 +
    },
643 +
    "voicePresenceEventData": {
644 +
      "properties": {
645 +
        "channel": {
646 +
          "format": "at-uri",
647 +
          "type": "string"
648 +
        },
649 +
        "did": {
650 +
          "format": "did",
651 +
          "type": "string"
652 +
        },
653 +
        "event": {
654 +
          "knownValues": [
655 +
            "join",
656 +
            "leave"
657 +
          ],
658 +
          "type": "string"
659 +
        }
660 +
      },
661 +
      "required": [
662 +
        "event",
663 +
        "channel",
664 +
        "did"
665 +
      ],
666 +
      "type": "object"
667 +
    },
668 +
    "voiceStateEvent": {
669 +
      "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.",
670 +
      "properties": {
671 +
        "data": {
672 +
          "ref": "lex:social.colibri.sync.subscribeEvents#voiceStateEventData",
673 +
          "type": "ref"
674 +
        },
675 +
        "type": {
676 +
          "const": "voice_state_event",
677 +
          "type": "string"
678 +
        }
679 +
      },
680 +
      "required": [
681 +
        "type",
682 +
        "data"
683 +
      ],
684 +
      "type": "object"
685 +
    },
686 +
    "voiceStateEventData": {
687 +
      "properties": {
688 +
        "channel": {
689 +
          "format": "at-uri",
690 +
          "type": "string"
691 +
        },
692 +
        "deafened": {
693 +
          "type": "boolean"
694 +
        },
695 +
        "did": {
696 +
          "format": "did",
697 +
          "type": "string"
698 +
        },
699 +
        "muted": {
700 +
          "type": "boolean"
701 +
        },
702 +
        "serverDeafened": {
703 +
          "type": "boolean"
704 +
        },
705 +
        "serverMuted": {
706 +
          "type": "boolean"
707 +
        }
708 +
      },
709 +
      "required": [
710 +
        "channel",
711 +
        "did"
712 +
      ],
713 +
      "type": "object"
497 714
    }
498 715
  },
499 716
  "id": "social.colibri.sync.subscribeEvents",
500 717
  "lexicon": 1,
501 718
  "revision": 1
502 719
}

Compare Other Versions

Lexicon Garden

@