social.colibri.sync.subscribeEvents
Schema Diff
+132 -8
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
}