@colibri-social/lexicons 2.8.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/generated/social/colibri/beta/actor/defs.defs.d.ts +14 -2
- package/dist/generated/social/colibri/beta/actor/defs.defs.d.ts.map +1 -1
- package/dist/generated/social/colibri/beta/actor/defs.defs.js +4 -1
- package/dist/generated/social/colibri/beta/actor/defs.defs.js.map +1 -1
- package/dist/generated/social/colibri/beta/channel/listMessages.defs.d.ts +4 -1
- package/dist/generated/social/colibri/beta/channel/listMessages.defs.d.ts.map +1 -1
- package/dist/generated/social/colibri/beta/channel/listMessages.defs.js +3 -2
- package/dist/generated/social/colibri/beta/channel/listMessages.defs.js.map +1 -1
- package/dist/generated/social/colibri/beta/channel/thread.d.ts +4 -0
- package/dist/generated/social/colibri/beta/channel/thread.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/channel/thread.defs.d.ts +8 -0
- package/dist/generated/social/colibri/beta/channel/thread.defs.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/channel/thread.defs.js +10 -0
- package/dist/generated/social/colibri/beta/channel/thread.defs.js.map +1 -0
- package/dist/generated/social/colibri/beta/channel/thread.js +7 -0
- package/dist/generated/social/colibri/beta/channel/thread.js.map +1 -0
- package/dist/generated/social/colibri/beta/channel.d.ts +1 -0
- package/dist/generated/social/colibri/beta/channel.d.ts.map +1 -1
- package/dist/generated/social/colibri/beta/channel.js +1 -0
- package/dist/generated/social/colibri/beta/channel.js.map +1 -1
- package/dist/generated/social/colibri/beta/defs.defs.d.ts +24 -0
- package/dist/generated/social/colibri/beta/defs.defs.d.ts.map +1 -1
- package/dist/generated/social/colibri/beta/defs.defs.js +3 -0
- package/dist/generated/social/colibri/beta/defs.defs.js.map +1 -1
- package/dist/generated/social/colibri/beta/label.defs.d.ts +40 -12
- package/dist/generated/social/colibri/beta/label.defs.d.ts.map +1 -1
- package/dist/generated/social/colibri/beta/label.defs.js +1 -1
- package/dist/generated/social/colibri/beta/label.defs.js.map +1 -1
- package/dist/generated/social/colibri/beta/notification/defs.defs.d.ts +4 -0
- package/dist/generated/social/colibri/beta/notification/defs.defs.d.ts.map +1 -1
- package/dist/generated/social/colibri/beta/notification/defs.defs.js +1 -1
- package/dist/generated/social/colibri/beta/notification/defs.defs.js.map +1 -1
- package/dist/generated/social/colibri/beta/permissionCommunity.defs.d.ts +1 -1
- package/dist/generated/social/colibri/beta/permissionCommunity.defs.d.ts.map +1 -1
- package/dist/generated/social/colibri/beta/permissionCommunity.defs.js +1 -1
- package/dist/generated/social/colibri/beta/permissionCommunity.defs.js.map +1 -1
- package/dist/generated/social/colibri/beta/permissionMessaging.defs.d.ts +1 -1
- package/dist/generated/social/colibri/beta/permissionMessaging.defs.d.ts.map +1 -1
- package/dist/generated/social/colibri/beta/permissionMessaging.defs.js +1 -1
- package/dist/generated/social/colibri/beta/permissionMessaging.defs.js.map +1 -1
- package/dist/generated/social/colibri/beta/sync/defs.defs.d.ts +40 -7
- package/dist/generated/social/colibri/beta/sync/defs.defs.d.ts.map +1 -1
- package/dist/generated/social/colibri/beta/sync/defs.defs.js +6 -2
- package/dist/generated/social/colibri/beta/sync/defs.defs.js.map +1 -1
- package/dist/generated/social/colibri/beta/thread/create.d.ts +4 -0
- package/dist/generated/social/colibri/beta/thread/create.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/create.defs.d.ts +61 -0
- package/dist/generated/social/colibri/beta/thread/create.defs.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/create.defs.js +17 -0
- package/dist/generated/social/colibri/beta/thread/create.defs.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/create.js +7 -0
- package/dist/generated/social/colibri/beta/thread/create.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/defs.d.ts +3 -0
- package/dist/generated/social/colibri/beta/thread/defs.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/defs.defs.d.ts +119 -0
- package/dist/generated/social/colibri/beta/thread/defs.defs.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/defs.defs.js +15 -0
- package/dist/generated/social/colibri/beta/thread/defs.defs.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/defs.js +6 -0
- package/dist/generated/social/colibri/beta/thread/defs.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/delete.d.ts +4 -0
- package/dist/generated/social/colibri/beta/thread/delete.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/delete.defs.d.ts +27 -0
- package/dist/generated/social/colibri/beta/thread/delete.defs.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/delete.defs.js +15 -0
- package/dist/generated/social/colibri/beta/thread/delete.defs.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/delete.js +7 -0
- package/dist/generated/social/colibri/beta/thread/delete.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/follow.d.ts +4 -0
- package/dist/generated/social/colibri/beta/thread/follow.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/follow.defs.d.ts +66 -0
- package/dist/generated/social/colibri/beta/thread/follow.defs.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/follow.defs.js +23 -0
- package/dist/generated/social/colibri/beta/thread/follow.defs.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/follow.js +7 -0
- package/dist/generated/social/colibri/beta/thread/follow.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/getThread.d.ts +4 -0
- package/dist/generated/social/colibri/beta/thread/getThread.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/getThread.defs.d.ts +29 -0
- package/dist/generated/social/colibri/beta/thread/getThread.defs.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/getThread.defs.js +15 -0
- package/dist/generated/social/colibri/beta/thread/getThread.defs.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/getThread.js +7 -0
- package/dist/generated/social/colibri/beta/thread/getThread.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/listThreads.d.ts +4 -0
- package/dist/generated/social/colibri/beta/thread/listThreads.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/listThreads.defs.d.ts +47 -0
- package/dist/generated/social/colibri/beta/thread/listThreads.defs.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/listThreads.defs.js +15 -0
- package/dist/generated/social/colibri/beta/thread/listThreads.defs.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/listThreads.js +7 -0
- package/dist/generated/social/colibri/beta/thread/listThreads.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/moveMessages.d.ts +4 -0
- package/dist/generated/social/colibri/beta/thread/moveMessages.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/moveMessages.defs.d.ts +52 -0
- package/dist/generated/social/colibri/beta/thread/moveMessages.defs.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/moveMessages.defs.js +16 -0
- package/dist/generated/social/colibri/beta/thread/moveMessages.defs.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/moveMessages.js +7 -0
- package/dist/generated/social/colibri/beta/thread/moveMessages.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/repoint.d.ts +4 -0
- package/dist/generated/social/colibri/beta/thread/repoint.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/repoint.defs.d.ts +38 -0
- package/dist/generated/social/colibri/beta/thread/repoint.defs.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/repoint.defs.js +16 -0
- package/dist/generated/social/colibri/beta/thread/repoint.defs.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/repoint.js +7 -0
- package/dist/generated/social/colibri/beta/thread/repoint.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/update.d.ts +4 -0
- package/dist/generated/social/colibri/beta/thread/update.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/update.defs.d.ts +52 -0
- package/dist/generated/social/colibri/beta/thread/update.defs.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread/update.defs.js +16 -0
- package/dist/generated/social/colibri/beta/thread/update.defs.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread/update.js +7 -0
- package/dist/generated/social/colibri/beta/thread/update.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread.d.ts +13 -0
- package/dist/generated/social/colibri/beta/thread.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread.defs.d.ts +151 -0
- package/dist/generated/social/colibri/beta/thread.defs.d.ts.map +1 -0
- package/dist/generated/social/colibri/beta/thread.defs.js +24 -0
- package/dist/generated/social/colibri/beta/thread.defs.js.map +1 -0
- package/dist/generated/social/colibri/beta/thread.js +16 -0
- package/dist/generated/social/colibri/beta/thread.js.map +1 -0
- package/dist/generated/social/colibri/beta.d.ts +1 -0
- package/dist/generated/social/colibri/beta.d.ts.map +1 -1
- package/dist/generated/social/colibri/beta.js +1 -0
- package/dist/generated/social/colibri/beta.js.map +1 -1
- package/dist/mute-subject.d.ts +1 -0
- package/dist/mute-subject.d.ts.map +1 -1
- package/dist/mute-subject.js +17 -4
- package/dist/mute-subject.js.map +1 -1
- package/dist/nsids.d.ts +7 -0
- package/dist/nsids.d.ts.map +1 -1
- package/dist/nsids.js +7 -0
- package/dist/nsids.js.map +1 -1
- package/dist/permissions.d.ts +1 -1
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +3 -0
- package/dist/permissions.js.map +1 -1
- package/lexicons/social/colibri/beta/actor/defs.json +14 -2
- package/lexicons/social/colibri/beta/channel/listMessages.json +13 -4
- package/lexicons/social/colibri/beta/channel/thread.json +19 -0
- package/lexicons/social/colibri/beta/defs.json +27 -0
- package/lexicons/social/colibri/beta/label.json +12 -2
- package/lexicons/social/colibri/beta/notification/defs.json +5 -0
- package/lexicons/social/colibri/beta/permissionCommunity.json +12 -1
- package/lexicons/social/colibri/beta/permissionMessaging.json +17 -1
- package/lexicons/social/colibri/beta/sync/defs.json +45 -8
- package/lexicons/social/colibri/beta/thread/create.json +114 -0
- package/lexicons/social/colibri/beta/thread/defs.json +163 -0
- package/lexicons/social/colibri/beta/thread/delete.json +57 -0
- package/lexicons/social/colibri/beta/thread/follow.json +22 -0
- package/lexicons/social/colibri/beta/thread/getThread.json +49 -0
- package/lexicons/social/colibri/beta/thread/listThreads.json +83 -0
- package/lexicons/social/colibri/beta/thread/moveMessages.json +89 -0
- package/lexicons/social/colibri/beta/thread/repoint.json +69 -0
- package/lexicons/social/colibri/beta/thread/update.json +88 -0
- package/lexicons/social/colibri/beta/thread.json +61 -0
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"defs": {
|
|
5
5
|
"main": {
|
|
6
6
|
"type": "query",
|
|
7
|
-
"description": "Lists messages in a channel, newest first by default. Messages from the repo-backed channel this one was migrated from are included and marked legacy.",
|
|
7
|
+
"description": "Lists messages in a channel or in a thread, newest first by default. Messages from the repo-backed channel this one was migrated from are included and marked legacy. Messages moved in from another space are included in their move order, and messages moved out are absent.",
|
|
8
8
|
"parameters": {
|
|
9
9
|
"type": "params",
|
|
10
10
|
"required": ["channel"],
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"channel": {
|
|
13
13
|
"type": "string",
|
|
14
14
|
"format": "space-ref",
|
|
15
|
-
"description": "The channel to list messages from."
|
|
15
|
+
"description": "The channel or thread to list messages from."
|
|
16
16
|
},
|
|
17
17
|
"limit": {
|
|
18
18
|
"type": "integer",
|
|
@@ -49,6 +49,15 @@
|
|
|
49
49
|
"type": "ref",
|
|
50
50
|
"ref": "social.colibri.beta.channel.defs#messageView"
|
|
51
51
|
}
|
|
52
|
+
},
|
|
53
|
+
"threads": {
|
|
54
|
+
"type": "array",
|
|
55
|
+
"description": "Threads whose anchor message is in this page, so a client can draw a thread's marker under the message it was opened from without a second call. Threads the requesting user may not read are absent.",
|
|
56
|
+
"items": {
|
|
57
|
+
"type": "ref",
|
|
58
|
+
"ref": "social.colibri.beta.thread.defs#threadView",
|
|
59
|
+
"description": "A thread."
|
|
60
|
+
}
|
|
52
61
|
}
|
|
53
62
|
}
|
|
54
63
|
}
|
|
@@ -60,11 +69,11 @@
|
|
|
60
69
|
},
|
|
61
70
|
{
|
|
62
71
|
"name": "Forbidden",
|
|
63
|
-
"description": "The requesting user may not read this channel."
|
|
72
|
+
"description": "The requesting user may not read this channel or thread."
|
|
64
73
|
},
|
|
65
74
|
{
|
|
66
75
|
"name": "ChannelNotFound",
|
|
67
|
-
"description": "No channel matches the given space reference."
|
|
76
|
+
"description": "No channel or thread matches the given space reference."
|
|
68
77
|
}
|
|
69
78
|
]
|
|
70
79
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lexicon": 1,
|
|
3
|
+
"id": "social.colibri.beta.channel.thread",
|
|
4
|
+
"defs": {
|
|
5
|
+
"main": {
|
|
6
|
+
"type": "space",
|
|
7
|
+
"description": "A thread beside a text channel. The space key is the thread's identity, and the thread's own configuration is the social.colibri.beta.thread record at key 'self' inside it. That record carries the link to the parent channel and only the community may write it, so a thread cannot claim a channel its community did not put it in.",
|
|
8
|
+
"key": "tid",
|
|
9
|
+
"name": "Colibri thread",
|
|
10
|
+
"collections": [
|
|
11
|
+
"social.colibri.beta.thread",
|
|
12
|
+
"social.colibri.beta.thread.follow",
|
|
13
|
+
"social.colibri.beta.message",
|
|
14
|
+
"social.colibri.beta.reaction",
|
|
15
|
+
"social.colibri.beta.label"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -18,6 +18,33 @@
|
|
|
18
18
|
"description": "Record key of the referenced record."
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
+
},
|
|
22
|
+
"spaceRecordRef": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"description": "A reference to a record in a named space, for pointing at something outside the space the pointer lives in.",
|
|
25
|
+
"required": ["space", "did", "rkey"],
|
|
26
|
+
"properties": {
|
|
27
|
+
"space": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"format": "space-ref",
|
|
30
|
+
"description": "The space holding the referenced record."
|
|
31
|
+
},
|
|
32
|
+
"did": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"format": "did",
|
|
35
|
+
"description": "DID of the repo holding the referenced record."
|
|
36
|
+
},
|
|
37
|
+
"rkey": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"format": "record-key",
|
|
40
|
+
"description": "Record key of the referenced record."
|
|
41
|
+
},
|
|
42
|
+
"cid": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"format": "cid",
|
|
45
|
+
"description": "The referenced record's CID as it stood when the reference was made."
|
|
46
|
+
}
|
|
47
|
+
}
|
|
21
48
|
}
|
|
22
49
|
}
|
|
23
50
|
}
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"val": {
|
|
19
19
|
"type": "string",
|
|
20
20
|
"maxLength": 128,
|
|
21
|
-
"knownValues": ["hidden", "spoiler", "embeds-suppressed"],
|
|
22
|
-
"description": "The label value. `hidden` is enforced: the AppView withholds a hidden record instead of serving it. `spoiler` and `embeds-suppressed` are display hints the AppView passes through for the client to honour."
|
|
21
|
+
"knownValues": ["hidden", "spoiler", "embeds-suppressed", "moved"],
|
|
22
|
+
"description": "The label value. `hidden` is enforced: the AppView withholds a hidden record instead of serving it. `moved` is enforced too: the AppView withholds the record from this space and serves it in the space named by `destination` instead, ordered by `batch` and then by the record's own key. `spoiler` and `embeds-suppressed` are display hints the AppView passes through for the client to honour."
|
|
23
23
|
},
|
|
24
24
|
"scope": {
|
|
25
25
|
"type": "array",
|
|
@@ -29,6 +29,16 @@
|
|
|
29
29
|
},
|
|
30
30
|
"description": "URIs within the subject record the label narrows to, for values that can apply to part of a record. Absent means the whole record."
|
|
31
31
|
},
|
|
32
|
+
"destination": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"format": "space-ref",
|
|
35
|
+
"description": "Where a `moved` record is served instead of here. Honoured only on a `moved` label."
|
|
36
|
+
},
|
|
37
|
+
"batch": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"format": "tid",
|
|
40
|
+
"description": "Shared by every `moved` label written in one move, and what orders the moved records in the destination ahead of their own record keys. A selection moved together therefore keeps the order it had."
|
|
41
|
+
},
|
|
32
42
|
"neg": {
|
|
33
43
|
"type": "boolean",
|
|
34
44
|
"default": false,
|
|
@@ -26,6 +26,11 @@
|
|
|
26
26
|
"format": "space-ref",
|
|
27
27
|
"description": "The channel it happened in."
|
|
28
28
|
},
|
|
29
|
+
"thread": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"format": "space-ref",
|
|
32
|
+
"description": "The thread it happened in, when it happened in a thread rather than in the channel itself. `channel` stays the thread's parent channel, so a client can route to the thread inside it."
|
|
33
|
+
},
|
|
29
34
|
"community": {
|
|
30
35
|
"type": "string",
|
|
31
36
|
"format": "did",
|
|
@@ -55,6 +55,14 @@
|
|
|
55
55
|
"action": ["read"],
|
|
56
56
|
"manage": ["create", "update", "delete"]
|
|
57
57
|
},
|
|
58
|
+
{
|
|
59
|
+
"type": "permission",
|
|
60
|
+
"resource": "space",
|
|
61
|
+
"spaceType": "social.colibri.beta.channel.thread",
|
|
62
|
+
"authority": "*",
|
|
63
|
+
"action": ["read"],
|
|
64
|
+
"manage": ["create", "update", "delete"]
|
|
65
|
+
},
|
|
58
66
|
{
|
|
59
67
|
"type": "permission",
|
|
60
68
|
"resource": "rpc",
|
|
@@ -95,7 +103,10 @@
|
|
|
95
103
|
"social.colibri.beta.role.create",
|
|
96
104
|
"social.colibri.beta.role.update",
|
|
97
105
|
"social.colibri.beta.role.delete",
|
|
98
|
-
"social.colibri.beta.voice.moderate"
|
|
106
|
+
"social.colibri.beta.voice.moderate",
|
|
107
|
+
"social.colibri.beta.thread.delete",
|
|
108
|
+
"social.colibri.beta.thread.repoint",
|
|
109
|
+
"social.colibri.beta.thread.moveMessages"
|
|
99
110
|
]
|
|
100
111
|
},
|
|
101
112
|
{
|
|
@@ -15,6 +15,18 @@
|
|
|
15
15
|
"collection": ["social.colibri.beta.message", "social.colibri.beta.reaction"],
|
|
16
16
|
"action": ["read", "create", "update", "delete"]
|
|
17
17
|
},
|
|
18
|
+
{
|
|
19
|
+
"type": "permission",
|
|
20
|
+
"resource": "space",
|
|
21
|
+
"spaceType": "social.colibri.beta.channel.thread",
|
|
22
|
+
"authority": "*",
|
|
23
|
+
"collection": [
|
|
24
|
+
"social.colibri.beta.message",
|
|
25
|
+
"social.colibri.beta.reaction",
|
|
26
|
+
"social.colibri.beta.thread.follow"
|
|
27
|
+
],
|
|
28
|
+
"action": ["read", "create", "update", "delete"]
|
|
29
|
+
},
|
|
18
30
|
{
|
|
19
31
|
"type": "permission",
|
|
20
32
|
"resource": "space",
|
|
@@ -65,7 +77,11 @@
|
|
|
65
77
|
"social.colibri.beta.embed.searchGifs",
|
|
66
78
|
"social.colibri.beta.embed.trendingGifs",
|
|
67
79
|
"social.colibri.beta.embed.gifCategories",
|
|
68
|
-
"social.colibri.beta.blob.get"
|
|
80
|
+
"social.colibri.beta.blob.get",
|
|
81
|
+
"social.colibri.beta.thread.create",
|
|
82
|
+
"social.colibri.beta.thread.update",
|
|
83
|
+
"social.colibri.beta.thread.getThread",
|
|
84
|
+
"social.colibri.beta.thread.listThreads"
|
|
69
85
|
]
|
|
70
86
|
},
|
|
71
87
|
{
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"defs": {
|
|
5
5
|
"subscribe": {
|
|
6
6
|
"type": "object",
|
|
7
|
-
"description": "Adds communities and
|
|
7
|
+
"description": "Adds communities, channels and threads to what this connection receives. Subscription is explicit: a connection is sent nothing it did not ask for.",
|
|
8
8
|
"required": [],
|
|
9
9
|
"properties": {
|
|
10
10
|
"communities": {
|
|
@@ -21,15 +21,15 @@
|
|
|
21
21
|
"items": {
|
|
22
22
|
"type": "string",
|
|
23
23
|
"format": "space-ref",
|
|
24
|
-
"description": "A channel."
|
|
24
|
+
"description": "A channel or a thread."
|
|
25
25
|
},
|
|
26
|
-
"description": "Channels to start receiving messages for."
|
|
26
|
+
"description": "Channels and threads to start receiving messages for."
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
30
|
"unsubscribe": {
|
|
31
31
|
"type": "object",
|
|
32
|
-
"description": "Removes communities and
|
|
32
|
+
"description": "Removes communities, channels and threads from what this connection receives.",
|
|
33
33
|
"required": [],
|
|
34
34
|
"properties": {
|
|
35
35
|
"communities": {
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
"items": {
|
|
47
47
|
"type": "string",
|
|
48
48
|
"format": "space-ref",
|
|
49
|
-
"description": "A channel."
|
|
49
|
+
"description": "A channel or a thread."
|
|
50
50
|
},
|
|
51
|
-
"description": "Channels to stop receiving messages for."
|
|
51
|
+
"description": "Channels and threads to stop receiving messages for."
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
},
|
|
@@ -177,9 +177,9 @@
|
|
|
177
177
|
"items": {
|
|
178
178
|
"type": "string",
|
|
179
179
|
"format": "space-ref",
|
|
180
|
-
"description": "A channel."
|
|
180
|
+
"description": "A channel or a thread."
|
|
181
181
|
},
|
|
182
|
-
"description": "Channels being received."
|
|
182
|
+
"description": "Channels and threads being received."
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
},
|
|
@@ -268,6 +268,43 @@
|
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
270
|
},
|
|
271
|
+
"threadEvent": {
|
|
272
|
+
"type": "object",
|
|
273
|
+
"description": "A thread was opened, changed, deleted, or written to. This rides the community's topic rather than a topic per thread, so a client keeps every thread's activity age and unread dot live without subscribing to each one.",
|
|
274
|
+
"required": ["event", "community"],
|
|
275
|
+
"properties": {
|
|
276
|
+
"event": {
|
|
277
|
+
"type": "string",
|
|
278
|
+
"description": "What happened. `activity` means someone posted, which moves the thread's last activity and nothing else.",
|
|
279
|
+
"knownValues": ["create", "update", "delete", "activity"]
|
|
280
|
+
},
|
|
281
|
+
"community": {
|
|
282
|
+
"type": "string",
|
|
283
|
+
"format": "did",
|
|
284
|
+
"description": "The community it belongs to."
|
|
285
|
+
},
|
|
286
|
+
"channel": {
|
|
287
|
+
"type": "string",
|
|
288
|
+
"format": "space-ref",
|
|
289
|
+
"description": "The channel the thread belongs to."
|
|
290
|
+
},
|
|
291
|
+
"thread": {
|
|
292
|
+
"type": "ref",
|
|
293
|
+
"ref": "social.colibri.beta.thread.defs#threadView",
|
|
294
|
+
"description": "The thread. Absent on delete and on activity."
|
|
295
|
+
},
|
|
296
|
+
"space": {
|
|
297
|
+
"type": "string",
|
|
298
|
+
"format": "space-ref",
|
|
299
|
+
"description": "Which thread, for deletes and for activity."
|
|
300
|
+
},
|
|
301
|
+
"lastActivityAt": {
|
|
302
|
+
"type": "string",
|
|
303
|
+
"format": "datetime",
|
|
304
|
+
"description": "The thread's new last activity, on activity events."
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
},
|
|
271
308
|
"categoryEvent": {
|
|
272
309
|
"type": "object",
|
|
273
310
|
"description": "A category was created, changed, or deleted.",
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lexicon": 1,
|
|
3
|
+
"id": "social.colibri.beta.thread.create",
|
|
4
|
+
"defs": {
|
|
5
|
+
"main": {
|
|
6
|
+
"type": "procedure",
|
|
7
|
+
"description": "Opens a thread beside a text channel. This creates a space for the thread, then writes the thread's configuration record at key 'self' inside it. The anchor message is referenced rather than copied, so it stays in its author's repo in the channel where it was written.",
|
|
8
|
+
"input": {
|
|
9
|
+
"encoding": "application/json",
|
|
10
|
+
"schema": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"required": ["community", "channel", "name"],
|
|
13
|
+
"properties": {
|
|
14
|
+
"community": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"format": "did",
|
|
17
|
+
"description": "The community the thread's channel belongs to."
|
|
18
|
+
},
|
|
19
|
+
"channel": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"format": "space-ref",
|
|
22
|
+
"description": "The text channel to open the thread beside."
|
|
23
|
+
},
|
|
24
|
+
"name": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"minLength": 1,
|
|
27
|
+
"maxLength": 128,
|
|
28
|
+
"description": "The thread's title."
|
|
29
|
+
},
|
|
30
|
+
"anchor": {
|
|
31
|
+
"type": "ref",
|
|
32
|
+
"ref": "social.colibri.beta.defs#spaceRecordRef",
|
|
33
|
+
"description": "The message to open the thread from. Absent opens a thread from scratch, which has no marker in the channel river and is reachable from the channel's thread list and the sidebar."
|
|
34
|
+
},
|
|
35
|
+
"visibleToRoles": {
|
|
36
|
+
"type": "array",
|
|
37
|
+
"items": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"format": "record-key",
|
|
40
|
+
"description": "A role."
|
|
41
|
+
},
|
|
42
|
+
"description": "Roles that may read this thread. Empty means everyone who may read the channel may read the thread."
|
|
43
|
+
},
|
|
44
|
+
"visibleToMembers": {
|
|
45
|
+
"type": "array",
|
|
46
|
+
"items": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"format": "did",
|
|
49
|
+
"description": "A member."
|
|
50
|
+
},
|
|
51
|
+
"description": "Members that may read this thread beyond visibleToRoles."
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"output": {
|
|
57
|
+
"encoding": "application/json",
|
|
58
|
+
"schema": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"required": ["thread"],
|
|
61
|
+
"properties": {
|
|
62
|
+
"thread": {
|
|
63
|
+
"type": "ref",
|
|
64
|
+
"ref": "social.colibri.beta.thread.defs#threadView",
|
|
65
|
+
"description": "The thread."
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"errors": [
|
|
71
|
+
{
|
|
72
|
+
"name": "AuthRequired",
|
|
73
|
+
"description": "The request has no valid service auth."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "Forbidden",
|
|
77
|
+
"description": "The requesting user lacks the thread.create permission or may not post in the channel."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "CommunityNotFound",
|
|
81
|
+
"description": "No community matches the given DID."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "ChannelNotFound",
|
|
85
|
+
"description": "No channel matches the given space reference."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "MessageNotFound",
|
|
89
|
+
"description": "The anchor message does not exist in the given channel."
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"name": "RoleHierarchy",
|
|
93
|
+
"description": "The requesting user cannot grant a role that outranks their own."
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"name": "InvalidRequest",
|
|
97
|
+
"description": "The arguments are inconsistent or malformed beyond schema validation."
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "CredentialsUnavailable",
|
|
101
|
+
"description": "The AppView cannot act as the community because its stored credentials are missing or unusable."
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"name": "PdsUnavailable",
|
|
105
|
+
"description": "The community's PDS is unreachable or the AppView has no administrative access to it."
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"name": "UpstreamFailure",
|
|
109
|
+
"description": "The community's PDS failed while creating the thread's space."
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lexicon": 1,
|
|
3
|
+
"id": "social.colibri.beta.thread.defs",
|
|
4
|
+
"defs": {
|
|
5
|
+
"threadView": {
|
|
6
|
+
"type": "object",
|
|
7
|
+
"description": "A thread as the AppView serves it. The thread's identity is its space.",
|
|
8
|
+
"required": [
|
|
9
|
+
"space",
|
|
10
|
+
"channel",
|
|
11
|
+
"community",
|
|
12
|
+
"name",
|
|
13
|
+
"createdBy",
|
|
14
|
+
"createdAt",
|
|
15
|
+
"lastActivityAt",
|
|
16
|
+
"messageCount",
|
|
17
|
+
"participants",
|
|
18
|
+
"viewer"
|
|
19
|
+
],
|
|
20
|
+
"properties": {
|
|
21
|
+
"space": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"format": "space-ref",
|
|
24
|
+
"description": "The thread's space, which is its identity."
|
|
25
|
+
},
|
|
26
|
+
"channel": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"format": "space-ref",
|
|
29
|
+
"description": "The channel the thread belongs to."
|
|
30
|
+
},
|
|
31
|
+
"community": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"format": "did",
|
|
34
|
+
"description": "The community the thread's channel belongs to."
|
|
35
|
+
},
|
|
36
|
+
"name": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"description": "The thread's title."
|
|
39
|
+
},
|
|
40
|
+
"anchor": {
|
|
41
|
+
"type": "ref",
|
|
42
|
+
"ref": "social.colibri.beta.defs#spaceRecordRef",
|
|
43
|
+
"description": "The message the thread was opened from. Absent on a thread opened from scratch. Its space stays where the thread was opened even after the thread moves to another channel, which is what drops the thread's marker out of the old channel without losing the quoted message. A client draws the thread's marker in the channel river only where the anchor's space is the channel being read."
|
|
44
|
+
},
|
|
45
|
+
"anchorMessage": {
|
|
46
|
+
"type": "union",
|
|
47
|
+
"refs": [
|
|
48
|
+
"social.colibri.beta.channel.defs#messageView",
|
|
49
|
+
"social.colibri.beta.channel.defs#deletedMessageView"
|
|
50
|
+
],
|
|
51
|
+
"description": "The anchor message itself, for opening a thread without having read its channel. Served by getThread rather than by listThreads."
|
|
52
|
+
},
|
|
53
|
+
"createdBy": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"format": "did",
|
|
56
|
+
"description": "Who opened the thread."
|
|
57
|
+
},
|
|
58
|
+
"createdAt": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"format": "datetime",
|
|
61
|
+
"description": "When the thread was opened."
|
|
62
|
+
},
|
|
63
|
+
"lastActivityAt": {
|
|
64
|
+
"type": "string",
|
|
65
|
+
"format": "datetime",
|
|
66
|
+
"description": "When the thread was last written to. This is what drives the activity age a client shows, since threads carry no presence roster of their own."
|
|
67
|
+
},
|
|
68
|
+
"messageCount": {
|
|
69
|
+
"type": "integer",
|
|
70
|
+
"description": "How many messages the thread holds."
|
|
71
|
+
},
|
|
72
|
+
"movedInCount": {
|
|
73
|
+
"type": "integer",
|
|
74
|
+
"description": "How many of those messages were moved in from somewhere else."
|
|
75
|
+
},
|
|
76
|
+
"participants": {
|
|
77
|
+
"type": "array",
|
|
78
|
+
"items": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"format": "did",
|
|
81
|
+
"description": "Someone who has posted in the thread."
|
|
82
|
+
},
|
|
83
|
+
"description": "Who has posted, most recently active first, capped at a handful."
|
|
84
|
+
},
|
|
85
|
+
"private": {
|
|
86
|
+
"type": "boolean",
|
|
87
|
+
"description": "Whether the thread restricts who may read it beyond who may read its channel."
|
|
88
|
+
},
|
|
89
|
+
"visibleToRoles": {
|
|
90
|
+
"type": "array",
|
|
91
|
+
"items": {
|
|
92
|
+
"type": "string",
|
|
93
|
+
"format": "record-key",
|
|
94
|
+
"description": "A role."
|
|
95
|
+
},
|
|
96
|
+
"description": "Roles that may read this thread. Empty means everyone who can read the channel may."
|
|
97
|
+
},
|
|
98
|
+
"visibleToMembers": {
|
|
99
|
+
"type": "array",
|
|
100
|
+
"items": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"format": "did",
|
|
103
|
+
"description": "A member."
|
|
104
|
+
},
|
|
105
|
+
"description": "Members that may read this thread beyond visibleToRoles."
|
|
106
|
+
},
|
|
107
|
+
"viewer": {
|
|
108
|
+
"type": "ref",
|
|
109
|
+
"ref": "#threadViewerState",
|
|
110
|
+
"description": "The requesting user's relationship to this thread."
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"threadViewerState": {
|
|
115
|
+
"type": "object",
|
|
116
|
+
"description": "The requesting user's access and unread state for a thread.",
|
|
117
|
+
"required": [
|
|
118
|
+
"canRead",
|
|
119
|
+
"canPost",
|
|
120
|
+
"canManage",
|
|
121
|
+
"following",
|
|
122
|
+
"muted",
|
|
123
|
+
"hasUnread",
|
|
124
|
+
"unreadMentions"
|
|
125
|
+
],
|
|
126
|
+
"properties": {
|
|
127
|
+
"canRead": {
|
|
128
|
+
"type": "boolean",
|
|
129
|
+
"description": "Whether the user may read this thread."
|
|
130
|
+
},
|
|
131
|
+
"canPost": {
|
|
132
|
+
"type": "boolean",
|
|
133
|
+
"description": "Whether the user may post in this thread."
|
|
134
|
+
},
|
|
135
|
+
"canManage": {
|
|
136
|
+
"type": "boolean",
|
|
137
|
+
"description": "Whether the user may rename, move or delete this thread."
|
|
138
|
+
},
|
|
139
|
+
"following": {
|
|
140
|
+
"type": "boolean",
|
|
141
|
+
"description": "Whether the user follows this thread."
|
|
142
|
+
},
|
|
143
|
+
"muted": {
|
|
144
|
+
"type": "boolean",
|
|
145
|
+
"description": "Whether the user has muted this thread."
|
|
146
|
+
},
|
|
147
|
+
"hasUnread": {
|
|
148
|
+
"type": "boolean",
|
|
149
|
+
"description": "Whether anything in the thread is unread."
|
|
150
|
+
},
|
|
151
|
+
"unreadMentions": {
|
|
152
|
+
"type": "integer",
|
|
153
|
+
"description": "How many unread messages in the thread mention the user."
|
|
154
|
+
},
|
|
155
|
+
"cursor": {
|
|
156
|
+
"type": "string",
|
|
157
|
+
"format": "tid",
|
|
158
|
+
"description": "The user's read cursor in this thread."
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lexicon": 1,
|
|
3
|
+
"id": "social.colibri.beta.thread.delete",
|
|
4
|
+
"defs": {
|
|
5
|
+
"main": {
|
|
6
|
+
"type": "procedure",
|
|
7
|
+
"description": "Deletes a thread's space. Messages members wrote in it stay in their own repos and become unreadable to everyone but their authors, the same way deleting a channel works. Messages that were moved into the thread go with it.",
|
|
8
|
+
"input": {
|
|
9
|
+
"encoding": "application/json",
|
|
10
|
+
"schema": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"required": ["thread"],
|
|
13
|
+
"properties": {
|
|
14
|
+
"thread": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"format": "space-ref",
|
|
17
|
+
"description": "The thread to delete."
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"output": {
|
|
23
|
+
"encoding": "application/json",
|
|
24
|
+
"schema": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"properties": {}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"errors": [
|
|
30
|
+
{
|
|
31
|
+
"name": "AuthRequired",
|
|
32
|
+
"description": "The request has no valid service auth."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "Forbidden",
|
|
36
|
+
"description": "The requesting user lacks the thread.manage permission."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "ThreadNotFound",
|
|
40
|
+
"description": "No thread matches the given space reference."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"name": "CredentialsUnavailable",
|
|
44
|
+
"description": "The AppView cannot act as the community because its stored credentials are missing or unusable."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "PdsUnavailable",
|
|
48
|
+
"description": "The community's PDS is unreachable or the AppView has no administrative access to it."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "UpstreamFailure",
|
|
52
|
+
"description": "The community's PDS failed while deleting the thread's space."
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lexicon": 1,
|
|
3
|
+
"id": "social.colibri.beta.thread.follow",
|
|
4
|
+
"defs": {
|
|
5
|
+
"main": {
|
|
6
|
+
"type": "record",
|
|
7
|
+
"description": "Marks its author as following the thread it lives in. Presence means following and deleting it means leaving. The follower writes it into the thread's own space, so following is visible to everyone who can read the thread.",
|
|
8
|
+
"key": "literal:self",
|
|
9
|
+
"record": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"required": ["createdAt"],
|
|
12
|
+
"properties": {
|
|
13
|
+
"createdAt": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"format": "datetime",
|
|
16
|
+
"description": "When the user started following."
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|