social.colibri.sync.subscribeEvents
Schema Diff
+124 -6
Compatibility Analysis
Breaking Changes Detected
10 breaking changes, 51 non-breaking changes.
Breaking Changes (10)
- 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#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#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") }
- 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 (51)
- 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#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#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#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\"]" }
Additional Notes
- 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#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: 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#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
},
380
411
"category": {
381
412
"type": "string",
382
413
"format": "at-uri"
383
414
},
384
415
"community": {
385
416
"type": "string",
386
417
"format": "at-uri"
387
418
},
388
419
"description": {
389
420
"type": "string"
390
421
}
391
422
}
392
423
},
393
424
"messageEventData": {
394
425
"type": "object",
395
426
"required": [
396
427
"event",
397
428
"uri",
398
429
"channel"
399
430
],
400
431
"properties": {
401
432
"uri": {
402
433
"type": "string",
403
434
"format": "at-uri"
404
435
},
436
+
"live": {
437
+
"type": "boolean"
438
+
},
405
439
"text": {
406
440
"type": "string"
407
441
},
408
442
"event": {
409
443
"type": "string",
410
444
"knownValues": [
411
445
"upsert",
412
446
"delete"
413
447
]
414
448
},
415
449
"edited": {
416
450
"type": "boolean"
417
451
},
418
452
"facets": {
419
453
"type": "array",
420
454
"items": {
421
455
"ref": "lex:social.colibri.richtext.facet",
422
456
"type": "ref"
423
457
}
424
458
},
425
459
"parent": {
426
460
"type": "string",
427
461
"format": "at-uri"
428
462
},
429
463
"channel": {
430
464
"type": "string",
431
465
"format": "at-uri"
432
466
},
433
467
"createdAt": {
434
468
"type": "string",
435
469
"format": "datetime"
436
470
},
437
471
"indexedAt": {
438
472
"type": "string",
439
473
"format": "datetime"
440
474
},
441
475
"attachments": {
442
476
"type": "array",
443
477
"items": {
444
478
"type": "blob"
445
479
}
446
480
}
447
481
}
448
482
},
449
483
"categoryEventData": {
450
484
"type": "object",
451
485
"required": [
452
486
"event",
453
487
"uri",
454
488
"community"
455
489
],
456
490
"properties": {
457
491
"uri": {
458
492
"type": "string",
459
493
"format": "at-uri"
460
494
},
461
495
"name": {
462
496
"type": "string"
463
497
},
464
498
"event": {
465
499
"type": "string",
466
500
"knownValues": [
467
501
"upsert",
468
502
"delete"
469
503
]
470
504
},
471
505
"community": {
472
506
"type": "string",
473
507
"format": "at-uri"
474
508
},
475
509
"channelOrder": {
476
510
"type": "array",
477
511
"items": {
478
512
"type": "string",
479
513
"format": "at-uri"
480
514
}
481
515
}
482
516
}
483
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
+
},
484
567
"reactionEventData": {
485
568
"type": "object",
486
569
"required": [
487
570
"event",
488
571
"uri",
489
572
"emoji",
490
573
"target",
491
574
"channel"
492
575
],
493
576
"properties": {
494
577
"uri": {
495
578
"type": "string",
496
579
"format": "at-uri"
497
580
},
498
581
"emoji": {
499
582
"type": "string"
500
583
},
501
584
"event": {
502
585
"type": "string",
503
586
"knownValues": [
504
587
"added",
505
588
"removed"
506
589
]
507
590
},
508
591
"target": {
509
592
"type": "string",
510
593
"format": "at-uri"
511
594
},
512
595
"channel": {
513
596
"type": "string",
514
597
"format": "at-uri"
515
598
}
516
599
}
517
600
},
518
601
"communityEventData": {
519
602
"type": "object",
520
603
"required": [
521
604
"event",
522
605
"uri"
523
606
],
524
607
"properties": {
525
608
"uri": {
526
609
"type": "string",
527
610
"format": "at-uri"
528
611
},
529
612
"name": {
530
613
"type": "string"
531
614
},
532
615
"event": {
533
616
"type": "string",
534
617
"knownValues": [
535
618
"upsert",
536
619
"delete"
537
620
]
538
621
},
622
+
"banner": {
623
+
"type": "blob"
624
+
},
539
625
"picture": {
540
626
"type": "blob"
541
627
},
542
628
"description": {
543
629
"type": "string"
544
630
},
545
631
"categoryOrder": {
546
632
"type": "array",
547
633
"items": {
548
634
"type": "string",
549
635
"format": "at-uri"
550
636
}
637
+
},
638
+
"requiresApprovalToJoin": {
639
+
"type": "boolean"
551
640
}
552
641
}
553
642
},
554
643
"voicePresenceEvent": {
555
644
"type": "object",
556
645
"required": [
557
646
"type",
558
647
"data"
559
648
],
560
649
"properties": {
561
650
"data": {
562
651
"ref": "lex:social.colibri.sync.subscribeEvents#voicePresenceEventData",
563
652
"type": "ref"
564
653
},
565
654
"type": {
566
655
"type": "string",
567
656
"const": "voice_presence_event"
568
657
}
569
658
},
570
659
"description": "Sent when a user joins or leaves a voice channel."
571
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
+
},
572
690
"voicePresenceEventData": {
573
691
"type": "object",
574
692
"required": [
575
693
"event",
576
694
"channel",
577
695
"did"
578
696
],
579
697
"properties": {
580
698
"did": {
581
699
"type": "string",
582
700
"format": "did"
583
701
},
584
702
"event": {
585
703
"type": "string",
586
704
"knownValues": [
587
705
"join",
588
706
"leave"
589
707
]
590
708
},
591
709
"channel": {
592
710
"type": "string",
593
711
"format": "at-uri"
594
712
}
595
713
}
596
714
}
597
715
},
598
716
"$type": "com.atproto.lexicon.schema",
599
717
"lexicon": 1,
600
718
"revision": 1
601
719
}