social.colibri.beta.bridge.defs
Schema Diff
+100 -0
Compatibility Analysis
Breaking Changes Detected
8 breaking changes, 26 non-breaking changes.
Breaking Changes (8)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfill", src: "social.colibri.beta.bridge.defs#backfill", tgt: "social.colibri.beta.bridge.defs#backfill.requestedAt", kind: "prop", name: Some("requestedAt") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.imported", kind: "prop", name: Some("imported") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.from", kind: "prop", name: Some("from") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.updatedAt", kind: "prop", name: Some("updatedAt") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.state", kind: "prop", name: Some("state") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.requestedAt", kind: "prop", name: Some("requestedAt") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.channel", kind: "prop", name: Some("channel") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.until", kind: "prop", name: Some("until") }
Non-Breaking Changes (26)
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#attribution.imported" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfill" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfill.requestedAt" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfill.since" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.channel" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.from" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.imported" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.reached" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.requestedAt" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.state" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.until" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.updatedAt" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#link.backfill" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#registrationView.backfills" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#registrationView.backfills:items" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#registrationView.mirrorModeration" }
- AddedEdge AddedEdge { src: "social.colibri.beta.bridge.defs#attribution", tgt: "social.colibri.beta.bridge.defs#attribution.imported", kind: "prop", name: Some("imported") }
- AddedEdge AddedEdge { src: "social.colibri.beta.bridge.defs#backfill", tgt: "social.colibri.beta.bridge.defs#backfill.since", kind: "prop", name: Some("since") }
- AddedEdge AddedEdge { src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.reached", kind: "prop", name: Some("reached") }
- AddedEdge AddedEdge { src: "social.colibri.beta.bridge.defs#link", tgt: "social.colibri.beta.bridge.defs#link.backfill", kind: "prop", name: Some("backfill") }
- AddedEdge AddedEdge { src: "social.colibri.beta.bridge.defs#link.backfill", tgt: "social.colibri.beta.bridge.defs#backfill", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "social.colibri.beta.bridge.defs#registrationView", tgt: "social.colibri.beta.bridge.defs#registrationView.backfills", kind: "prop", name: Some("backfills") }
- AddedEdge AddedEdge { src: "social.colibri.beta.bridge.defs#registrationView", tgt: "social.colibri.beta.bridge.defs#registrationView.mirrorModeration", kind: "prop", name: Some("mirrorModeration") }
- AddedEdge AddedEdge { src: "social.colibri.beta.bridge.defs#registrationView.backfills", tgt: "social.colibri.beta.bridge.defs#registrationView.backfills:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "social.colibri.beta.bridge.defs#registrationView.backfills:items", tgt: "social.colibri.beta.bridge.defs#backfillStatus", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#attribution.imported" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfill" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfill.requestedAt" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfill.since" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.channel" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.from" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.imported" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.reached" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.requestedAt" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.state" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.until" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus.updatedAt" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#link.backfill" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#registrationView.backfills" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#registrationView.backfills:items" }AddedVertex { vertex_id: "social.colibri.beta.bridge.defs#registrationView.mirrorModeration" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.imported", kind: "prop", name: Some("imported") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.from", kind: "prop", name: Some("from") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.updatedAt", kind: "prop", name: Some("updatedAt") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.state", kind: "prop", name: Some("state") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.requestedAt", kind: "prop", name: Some("requestedAt") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.channel", kind: "prop", name: Some("channel") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfillStatus", src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.until", kind: "prop", name: Some("until") }
- Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.beta.bridge.defs#backfill", src: "social.colibri.beta.bridge.defs#backfill", tgt: "social.colibri.beta.bridge.defs#backfill.requestedAt", kind: "prop", name: Some("requestedAt") }
- Non-breaking: AddedEdge { src: "social.colibri.beta.bridge.defs#attribution", tgt: "social.colibri.beta.bridge.defs#attribution.imported", kind: "prop", name: Some("imported") }
- Non-breaking: AddedEdge { src: "social.colibri.beta.bridge.defs#backfill", tgt: "social.colibri.beta.bridge.defs#backfill.since", kind: "prop", name: Some("since") }
- Non-breaking: AddedEdge { src: "social.colibri.beta.bridge.defs#backfillStatus", tgt: "social.colibri.beta.bridge.defs#backfillStatus.reached", kind: "prop", name: Some("reached") }
- Non-breaking: AddedEdge { src: "social.colibri.beta.bridge.defs#link", tgt: "social.colibri.beta.bridge.defs#link.backfill", kind: "prop", name: Some("backfill") }
- Non-breaking: AddedEdge { src: "social.colibri.beta.bridge.defs#link.backfill", tgt: "social.colibri.beta.bridge.defs#backfill", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "social.colibri.beta.bridge.defs#registrationView", tgt: "social.colibri.beta.bridge.defs#registrationView.backfills", kind: "prop", name: Some("backfills") }
- Non-breaking: AddedEdge { src: "social.colibri.beta.bridge.defs#registrationView", tgt: "social.colibri.beta.bridge.defs#registrationView.mirrorModeration", kind: "prop", name: Some("mirrorModeration") }
- Non-breaking: AddedEdge { src: "social.colibri.beta.bridge.defs#registrationView.backfills", tgt: "social.colibri.beta.bridge.defs#registrationView.backfills:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "social.colibri.beta.bridge.defs#registrationView.backfills:items", tgt: "social.colibri.beta.bridge.defs#backfillStatus", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"attribution": {
5
5
"description": "Who wrote a record on another service. The community writes every bridged record, and the AppView honours this attribution only on records the community itself wrote.",
6
6
"properties": {
7
7
"avatar": {
8
8
"accept": [
9
9
"image/png",
10
10
"image/jpeg",
11
11
"image/gif",
12
12
"image/webp"
13
13
],
14
14
"description": "The author's avatar, uploaded to the community's repo.",
15
15
"maxSize": 1000000,
16
16
"type": "blob"
17
17
},
18
+
"imported": {
19
+
"description": "Set on messages a bridge imported from the room's earlier history. The AppView sends no notifications for them, and marks their live events as imported.",
20
+
"type": "boolean"
21
+
},
18
22
"name": {
19
23
"description": "The author's display name on the other service when the record was written.",
20
24
"maxLength": 128,
21
25
"type": "string"
22
26
},
23
27
"platform": {
24
28
"description": "The service the author is on, as its bridge names it.",
25
29
"maxLength": 64,
26
30
"type": "string"
27
31
},
28
32
"registration": {
29
33
"description": "Record key of the registration the record was written for.",
30
34
"format": "tid",
31
35
"type": "string"
32
36
},
33
37
"remoteId": {
34
38
"description": "The author's id on the other service. Opaque to Colibri.",
35
39
"maxLength": 256,
36
40
"type": "string"
37
41
},
38
42
"remoteMessage": {
39
43
"description": "The id of the message on the other service, which lets a bridge find its own records again.",
40
44
"maxLength": 256,
41
45
"type": "string"
42
46
}
43
47
},
44
48
"required": [
45
49
"registration",
46
50
"platform",
47
51
"remoteId",
48
52
"name"
49
53
],
50
54
"type": "object"
51
55
},
56
+
"backfill": {
57
+
"description": "A request to import a linked room's earlier messages.",
58
+
"properties": {
59
+
"requestedAt": {
60
+
"description": "When an admin asked for the import. Messages after this were relayed live.",
61
+
"format": "datetime",
62
+
"type": "string"
63
+
},
64
+
"since": {
65
+
"description": "The oldest message to import. Absent imports the room's whole history.",
66
+
"format": "datetime",
67
+
"type": "string"
68
+
}
69
+
},
70
+
"required": [
71
+
"requestedAt"
72
+
],
73
+
"type": "object"
74
+
},
75
+
"backfillStatus": {
76
+
"description": "Progress of a history import, as the bridge last reported it.",
77
+
"properties": {
78
+
"channel": {
79
+
"description": "The linked channel being filled.",
80
+
"format": "space-ref",
81
+
"type": "string"
82
+
},
83
+
"from": {
84
+
"description": "The start of the time range being imported.",
85
+
"format": "datetime",
86
+
"type": "string"
87
+
},
88
+
"imported": {
89
+
"description": "How many messages the bridge has imported so far.",
90
+
"minimum": 0,
91
+
"type": "integer"
92
+
},
93
+
"reached": {
94
+
"description": "When the newest imported message in the channel was sent.",
95
+
"format": "datetime",
96
+
"type": "string"
97
+
},
98
+
"requestedAt": {
99
+
"description": "The request this status belongs to.",
100
+
"format": "datetime",
101
+
"type": "string"
102
+
},
103
+
"state": {
104
+
"description": "How far the import is.",
105
+
"knownValues": [
106
+
"running",
107
+
"done",
108
+
"failed"
109
+
],
110
+
"type": "string"
111
+
},
112
+
"until": {
113
+
"description": "The end of the time range being imported.",
114
+
"format": "datetime",
115
+
"type": "string"
116
+
},
117
+
"updatedAt": {
118
+
"description": "When the bridge last reported.",
119
+
"format": "datetime",
120
+
"type": "string"
121
+
}
122
+
},
123
+
"required": [
124
+
"channel",
125
+
"requestedAt",
126
+
"state",
127
+
"imported",
128
+
"from",
129
+
"until",
130
+
"updatedAt"
131
+
],
132
+
"type": "object"
133
+
},
52
134
"bridgedActor": {
53
135
"description": "Marks a profile view as someone on another service whose messages a bridge relays.",
54
136
"properties": {
55
137
"platform": {
56
138
"description": "The service the person is on.",
57
139
"maxLength": 64,
58
140
"type": "string"
59
141
},
60
142
"registration": {
61
143
"description": "Record key of the registration the record was written for.",
62
144
"format": "tid",
63
145
"type": "string"
64
146
},
65
147
"remoteId": {
66
148
"description": "Their id on that service.",
67
149
"maxLength": 256,
68
150
"type": "string"
69
151
}
70
152
},
71
153
"required": [
72
154
"registration",
73
155
"platform",
74
156
"remoteId"
75
157
],
76
158
"type": "object"
77
159
},
78
160
"bridgedReactor": {
79
161
"description": "Someone on another service who reacted to a message through a bridge.",
80
162
"properties": {
81
163
"name": {
82
164
"description": "Their display name on that service when they reacted.",
83
165
"maxLength": 128,
84
166
"type": "string"
85
167
},
86
168
"platform": {
87
169
"description": "The service the person is on.",
88
170
"maxLength": 64,
89
171
"type": "string"
90
172
},
91
173
"registration": {
92
174
"description": "Record key of the registration the reaction was written for.",
93
175
"format": "tid",
94
176
"type": "string"
95
177
},
96
178
"remoteId": {
97
179
"description": "Their id on that service.",
98
180
"maxLength": 256,
99
181
"type": "string"
100
182
}
101
183
},
102
184
"required": [
103
185
"registration",
104
186
"platform",
105
187
"remoteId",
106
188
"name"
107
189
],
108
190
"type": "object"
109
191
},
110
192
"link": {
111
193
"description": "A Colibri channel kept in sync with a room on another service.",
112
194
"properties": {
195
+
"backfill": {
196
+
"description": "The latest history import an admin asked for.",
197
+
"ref": "#backfill",
198
+
"type": "ref"
199
+
},
113
200
"channel": {
114
201
"description": "The Colibri channel.",
115
202
"format": "space-ref",
116
203
"type": "string"
117
204
},
118
205
"remoteName": {
119
206
"description": "The room's name on the other service when the link was made.",
120
207
"maxLength": 128,
121
208
"type": "string"
122
209
},
123
210
"remoteRoom": {
124
211
"description": "The id of the room on the other service.",
125
212
"maxLength": 256,
126
213
"type": "string"
127
214
}
128
215
},
129
216
"required": [
130
217
"channel",
131
218
"remoteRoom",
132
219
"remoteName"
133
220
],
134
221
"type": "object"
135
222
},
136
223
"pairingView": {
137
224
"description": "A pending pairing, shown to an admin before they confirm it.",
138
225
"properties": {
139
226
"bridge": {
140
227
"description": "The bridge that asked to pair.",
141
228
"format": "did",
142
229
"type": "string"
143
230
},
144
231
"bridgeHandle": {
145
232
"description": "The bridge's handle, when it resolves.",
146
233
"format": "handle",
147
234
"type": "string"
148
235
},
149
236
"expiresAt": {
150
237
"description": "When the code stops working.",
151
238
"format": "datetime",
152
239
"type": "string"
153
240
},
154
241
"platform": {
155
242
"description": "The service the bridge connects to.",
156
243
"maxLength": 64,
157
244
"type": "string"
158
245
},
159
246
"remoteSpace": {
160
247
"description": "The id of the server, workspace or network on the other service.",
161
248
"maxLength": 256,
162
249
"type": "string"
163
250
},
164
251
"remoteSpaceName": {
165
252
"description": "Its name on the other service.",
166
253
"maxLength": 128,
167
254
"type": "string"
168
255
}
169
256
},
170
257
"required": [
171
258
"bridge",
172
259
"platform",
173
260
"remoteSpace",
174
261
"remoteSpaceName",
175
262
"expiresAt"
176
263
],
177
264
"type": "object"
178
265
},
179
266
"registrationView": {
180
267
"description": "A bridge registered with a community.",
181
268
"properties": {
269
+
"backfills": {
270
+
"description": "Progress of each linked channel's latest history import.",
271
+
"items": {
272
+
"description": "A history import.",
273
+
"ref": "#backfillStatus",
274
+
"type": "ref"
275
+
},
276
+
"type": "array"
277
+
},
182
278
"bridge": {
183
279
"description": "The bridge's DID.",
184
280
"format": "did",
185
281
"type": "string"
186
282
},
187
283
"bridgeHandle": {
188
284
"description": "The bridge's handle, when it resolves.",
189
285
"format": "handle",
190
286
"type": "string"
191
287
},
192
288
"community": {
193
289
"description": "The community the registration belongs to.",
194
290
"format": "did",
195
291
"type": "string"
196
292
},
197
293
"createdAt": {
198
294
"description": "When the bridge was paired.",
199
295
"format": "datetime",
200
296
"type": "string"
201
297
},
202
298
"createdBy": {
203
299
"description": "The admin who paired the bridge.",
204
300
"format": "did",
205
301
"type": "string"
206
302
},
207
303
"enabled": {
208
304
"description": "Whether the bridge may currently write.",
209
305
"type": "boolean"
210
306
},
211
307
"id": {
212
308
"description": "Record key of the registration.",
213
309
"format": "tid",
214
310
"type": "string"
215
311
},
216
312
"links": {
217
313
"description": "Channels kept in sync.",
218
314
"items": {
219
315
"description": "A linked channel.",
220
316
"ref": "#link",
221
317
"type": "ref"
222
318
},
223
319
"type": "array"
224
320
},
321
+
"mirrorModeration": {
322
+
"description": "Whether moderation crosses the bridge. When on, hiding a bridged message removes its original on the other service, and a moderator removing a relayed message there hides it here.",
323
+
"type": "boolean"
324
+
},
225
325
"platform": {
226
326
"description": "The service the bridge connects to.",
227
327
"maxLength": 64,
228
328
"type": "string"
229
329
},
230
330
"remoteSpace": {
231
331
"description": "The id of the server, workspace or network on the other service.",
232
332
"maxLength": 256,
233
333
"type": "string"
234
334
},
235
335
"remoteSpaceName": {
236
336
"description": "Its name on the other service.",
237
337
"maxLength": 128,
238
338
"type": "string"
239
339
},
240
340
"updatedAt": {
241
341
"description": "When the registration last changed.",
242
342
"format": "datetime",
243
343
"type": "string"
244
344
}
245
345
},
246
346
"required": [
247
347
"id",
248
348
"community",
249
349
"bridge",
250
350
"platform",
251
351
"remoteSpace",
252
352
"remoteSpaceName",
253
353
"links",
254
354
"enabled",
255
355
"createdBy",
256
356
"createdAt"
257
357
],
258
358
"type": "object"
259
359
},
260
360
"remoteAuthor": {
261
361
"description": "The person on the other service a bridge is writing for.",
262
362
"properties": {
263
363
"avatar": {
264
364
"accept": [
265
365
"image/png",
266
366
"image/jpeg",
267
367
"image/gif",
268
368
"image/webp"
269
369
],
270
370
"description": "An avatar uploaded earlier with uploadBlob.",
271
371
"maxSize": 1000000,
272
372
"type": "blob"
273
373
},
274
374
"id": {
275
375
"description": "The author's id on the other service.",
276
376
"maxLength": 256,
277
377
"type": "string"
278
378
},
279
379
"name": {
280
380
"description": "The author's display name on the other service.",
281
381
"maxLength": 128,
282
382
"type": "string"
283
383
}
284
384
},
285
385
"required": [
286
386
"id",
287
387
"name"
288
388
],
289
389
"type": "object"
290
390
},
291
391
"remoteRoom": {
292
392
"description": "A room a bridge can see on the other service, offered to admins when linking channels.",
293
393
"properties": {
294
394
"id": {
295
395
"description": "The room's id on the other service.",
296
396
"maxLength": 256,
297
397
"type": "string"
298
398
},
299
399
"kind": {
300
400
"description": "What sort of room it is.",
301
401
"knownValues": [
302
402
"text",
303
403
"voice",
304
404
"announcement",
305
405
"forum",
306
406
"other"
307
407
],
308
408
"type": "string"
309
409
},
310
410
"name": {
311
411
"description": "The room's name.",
312
412
"maxLength": 128,
313
413
"type": "string"
314
414
},
315
415
"parent": {
316
416
"description": "Name of the group or category the room sits in, if any.",
317
417
"maxLength": 128,
318
418
"type": "string"
319
419
}
320
420
},
321
421
"required": [
322
422
"id",
323
423
"name"
324
424
],
325
425
"type": "object"
326
426
}
327
427
},
328
428
"id": "social.colibri.beta.bridge.defs",
329
429
"lexicon": 1
330
430
}