social.colibri.sync.subscribeEvents

colibri.social

Schema Diff

+132 -8

From

CID
bafyreieqxnnyqnm...
Indexed At
2026-07-24 14:44 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

12 breaking changes, 53 non-breaking changes.

Breaking Changes (12)
  • 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#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") }
  • 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") }
  • 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") }
  • 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" }
Non-Breaking Changes (53)
  • 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#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.event:variant3" }
  • 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#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:variant3", kind: "variant", name: Some("lex:social.colibri.sync.subscribeEvents#voiceStateEvent") }
  • 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#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#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.event:variant3" }
  • 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#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#communityEventData.categoryOrder:items", sort: "format", value: "at-uri" }
  • ConstraintAdded ConstraintAdded { vertex_id: "social.colibri.sync.subscribeEvents#categoryEventData.channelOrder:items", sort: "format", value: "at-uri" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@