@sockethub/schemas 3.0.0-alpha.15 → 3.0.0-alpha.17

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.
@@ -1,7 +1,8 @@
1
1
  {
2
- "schemaVersion": "3.0.0-alpha.15",
3
- "generatedAt": "2026-07-06T21:41:13.268Z",
2
+ "schemaVersion": "3.0.0-alpha.17",
3
+ "generatedAt": "2026-07-31T13:05:35.460Z",
4
4
  "contextToPlatformId": {
5
+ "https://sockethub.org/ns/context/platform/caldav/v1.jsonld": "caldav",
5
6
  "https://sockethub.org/ns/context/platform/dummy/v1.jsonld": "dummy",
6
7
  "https://sockethub.org/ns/context/platform/error/v1.jsonld": "error",
7
8
  "https://sockethub.org/ns/context/platform/feeds/v1.jsonld": "feeds",
@@ -11,6 +12,7 @@
11
12
  "https://sockethub.org/ns/context/platform/xmpp/v1.jsonld": "xmpp"
12
13
  },
13
14
  "contextToSchemaId": {
15
+ "https://sockethub.org/ns/context/platform/caldav/v1.jsonld": "https://sockethub.org/schemas/as2/platform/caldav/v1/messages.schema.json",
14
16
  "https://sockethub.org/ns/context/platform/dummy/v1.jsonld": "https://sockethub.org/schemas/as2/platform/dummy/v1/messages.schema.json",
15
17
  "https://sockethub.org/ns/context/platform/error/v1.jsonld": "https://sockethub.org/schemas/as2/platform/error/v1/messages.schema.json",
16
18
  "https://sockethub.org/ns/context/platform/feeds/v1.jsonld": "https://sockethub.org/schemas/as2/platform/feeds/v1/messages.schema.json",
@@ -20,6 +22,7 @@
20
22
  "https://sockethub.org/ns/context/platform/xmpp/v1.jsonld": "https://sockethub.org/schemas/as2/platform/xmpp/v1/messages.schema.json"
21
23
  },
22
24
  "contextToCredentialsSchemaId": {
25
+ "https://sockethub.org/ns/context/platform/caldav/v1.jsonld": "https://sockethub.org/schemas/as2/platform/caldav/v1/credentials.schema.json",
23
26
  "https://sockethub.org/ns/context/platform/dummy/v1.jsonld": "https://sockethub.org/schemas/as2/platform/dummy/v1/credentials.schema.json",
24
27
  "https://sockethub.org/ns/context/platform/error/v1.jsonld": "https://sockethub.org/schemas/as2/platform/error/v1/credentials.schema.json",
25
28
  "https://sockethub.org/ns/context/platform/feeds/v1.jsonld": "https://sockethub.org/schemas/as2/platform/feeds/v1/credentials.schema.json",
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Substitute the `/v/` placeholder segment in a canonical schema `$id` with a
3
+ * concrete package version, e.g.
4
+ * `https://sockethub.org/schemas/v/sockethub-config.json` →
5
+ * `https://sockethub.org/schemas/3.0.0/sockethub-config.json`.
6
+ *
7
+ * Shared by the build's JSON-schema export (which stamps the version into the
8
+ * published artifacts) and by `SockethubConfigSchemaId`, so the two never
9
+ * drift.
10
+ */
11
+ export declare function versionedSchemaId(id: string, version: string): string;
@@ -0,0 +1,243 @@
1
+ {
2
+ "$id": "https://sockethub.org/schemas/3.0.0-alpha.17/activity-stream.json",
3
+ "description": "Schema for Sockethub Activity Streams",
4
+ "type": "object",
5
+ "required": [
6
+ "@context",
7
+ "type",
8
+ "actor"
9
+ ],
10
+ "additionalProperties": false,
11
+ "properties": {
12
+ "@context": {
13
+ "type": "array",
14
+ "minItems": 3,
15
+ "maxItems": 3,
16
+ "items": {
17
+ "type": "string"
18
+ },
19
+ "allOf": [
20
+ {
21
+ "contains": {
22
+ "const": "https://www.w3.org/ns/activitystreams"
23
+ }
24
+ },
25
+ {
26
+ "contains": {
27
+ "const": "https://sockethub.org/ns/context/v1.jsonld"
28
+ }
29
+ }
30
+ ]
31
+ },
32
+ "id": {
33
+ "type": "string"
34
+ },
35
+ "type": {
36
+ "type": "string"
37
+ },
38
+ "actor": {
39
+ "type": "object",
40
+ "oneOf": [
41
+ {
42
+ "$ref": "#/definitions/type/person"
43
+ },
44
+ {
45
+ "$ref": "#/definitions/type/room"
46
+ },
47
+ {
48
+ "$ref": "#/definitions/type/service"
49
+ },
50
+ {
51
+ "$ref": "#/definitions/type/feed"
52
+ },
53
+ {
54
+ "$ref": "#/definitions/type/website"
55
+ },
56
+ {
57
+ "$ref": "#/definitions/type/platform"
58
+ }
59
+ ]
60
+ },
61
+ "target": {
62
+ "type": "object",
63
+ "oneOf": [
64
+ {
65
+ "$ref": "#/definitions/type/person"
66
+ },
67
+ {
68
+ "$ref": "#/definitions/type/room"
69
+ },
70
+ {
71
+ "$ref": "#/definitions/type/service"
72
+ },
73
+ {
74
+ "$ref": "#/definitions/type/feed"
75
+ },
76
+ {
77
+ "$ref": "#/definitions/type/website"
78
+ },
79
+ {
80
+ "$ref": "#/definitions/type/platform"
81
+ },
82
+ {
83
+ "$ref": "#/definitions/type/address"
84
+ }
85
+ ]
86
+ },
87
+ "object": {
88
+ "type": "object"
89
+ },
90
+ "published": {
91
+ "type": "string",
92
+ "format": "date-time"
93
+ }
94
+ },
95
+ "definitions": {
96
+ "type": {
97
+ "feed": {
98
+ "required": [
99
+ "id",
100
+ "type"
101
+ ],
102
+ "additionalProperties": true,
103
+ "properties": {
104
+ "type": {
105
+ "enum": [
106
+ "feed"
107
+ ]
108
+ },
109
+ "id": {
110
+ "type": "string",
111
+ "format": "iri"
112
+ },
113
+ "name": {
114
+ "type": "string"
115
+ },
116
+ "description": {
117
+ "type": "string"
118
+ },
119
+ "author": {
120
+ "type": "string"
121
+ },
122
+ "favicon": {
123
+ "type": "string"
124
+ }
125
+ }
126
+ },
127
+ "person": {
128
+ "required": [
129
+ "id",
130
+ "type"
131
+ ],
132
+ "additionalProperties": true,
133
+ "properties": {
134
+ "id": {
135
+ "type": "string"
136
+ },
137
+ "type": {
138
+ "enum": [
139
+ "person"
140
+ ]
141
+ },
142
+ "name": {
143
+ "type": "string"
144
+ }
145
+ }
146
+ },
147
+ "room": {
148
+ "required": [
149
+ "id",
150
+ "type"
151
+ ],
152
+ "additionalProperties": true,
153
+ "properties": {
154
+ "id": {
155
+ "type": "string"
156
+ },
157
+ "type": {
158
+ "enum": [
159
+ "room"
160
+ ]
161
+ },
162
+ "name": {
163
+ "type": "string"
164
+ }
165
+ }
166
+ },
167
+ "service": {
168
+ "required": [
169
+ "id",
170
+ "type"
171
+ ],
172
+ "additionalProperties": true,
173
+ "properties": {
174
+ "id": {
175
+ "type": "string"
176
+ },
177
+ "type": {
178
+ "enum": [
179
+ "service"
180
+ ]
181
+ },
182
+ "name": {
183
+ "type": "string"
184
+ }
185
+ }
186
+ },
187
+ "platform": {
188
+ "required": [
189
+ "id",
190
+ "type"
191
+ ],
192
+ "additionalProperties": true,
193
+ "properties": {
194
+ "id": {
195
+ "type": "string"
196
+ },
197
+ "type": {
198
+ "enum": [
199
+ "platform"
200
+ ]
201
+ },
202
+ "name": {
203
+ "type": "string"
204
+ }
205
+ }
206
+ },
207
+ "website": {
208
+ "required": [
209
+ "id",
210
+ "type"
211
+ ],
212
+ "additionalProperties": true,
213
+ "properties": {
214
+ "id": {
215
+ "type": "string",
216
+ "format": "iri"
217
+ },
218
+ "type": {
219
+ "enum": [
220
+ "website"
221
+ ]
222
+ },
223
+ "name": {
224
+ "type": "string"
225
+ }
226
+ }
227
+ },
228
+ "address": {
229
+ "required": [
230
+ "type"
231
+ ],
232
+ "additionalProperties": false,
233
+ "properties": {
234
+ "type": {
235
+ "enum": [
236
+ "address"
237
+ ]
238
+ }
239
+ }
240
+ }
241
+ }
242
+ }
243
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "$id": "https://sockethub.org/schemas/3.0.0-alpha.17/platform.json",
3
+ "type": "object",
4
+ "required": [
5
+ "name",
6
+ "version",
7
+ "messages",
8
+ "contextUrl",
9
+ "contextVersion",
10
+ "schemaVersion"
11
+ ],
12
+ "additionalProperties": false,
13
+ "properties": {
14
+ "contextUrl": {
15
+ "title": "contextUrl",
16
+ "type": "string",
17
+ "format": "uri"
18
+ },
19
+ "contextVersion": {
20
+ "title": "contextVersion",
21
+ "type": "string"
22
+ },
23
+ "schemaVersion": {
24
+ "title": "schemaVersion",
25
+ "type": "string"
26
+ },
27
+ "messageConstraints": {
28
+ "title": "messageConstraints",
29
+ "type": "object"
30
+ },
31
+ "credentials": {
32
+ "title": "credentials",
33
+ "type": "object"
34
+ },
35
+ "messages": {
36
+ "title": "messages",
37
+ "type": "object"
38
+ },
39
+ "responses": {
40
+ "title": "responses",
41
+ "type": "object"
42
+ },
43
+ "name": {
44
+ "title": "name",
45
+ "type": "string"
46
+ },
47
+ "version": {
48
+ "title": "version",
49
+ "type": "string"
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,370 @@
1
+ {
2
+ "$id": "https://sockethub.org/schemas/3.0.0-alpha.17/sockethub-config.json",
3
+ "description": "Sockethub Config Schema",
4
+ "type": "object",
5
+ "required": [
6
+ "platforms"
7
+ ],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "$schema": {
11
+ "type": "string"
12
+ },
13
+ "examples": {
14
+ "type": "boolean",
15
+ "default": true,
16
+ "description": "Enable the examples pages served at [host]:[port]/examples"
17
+ },
18
+ "info": {
19
+ "type": "boolean",
20
+ "default": false,
21
+ "description": "Display Sockethub runtime information"
22
+ },
23
+ "logging": {
24
+ "type": "object",
25
+ "additionalProperties": false,
26
+ "properties": {
27
+ "level": {
28
+ "type": "string",
29
+ "enum": [
30
+ "error",
31
+ "warn",
32
+ "info",
33
+ "debug"
34
+ ],
35
+ "default": "info"
36
+ },
37
+ "fileLevel": {
38
+ "type": "string",
39
+ "enum": [
40
+ "error",
41
+ "warn",
42
+ "info",
43
+ "debug"
44
+ ],
45
+ "default": "debug"
46
+ },
47
+ "file": {
48
+ "type": "string",
49
+ "default": "sockethub.log"
50
+ }
51
+ }
52
+ },
53
+ "platforms": {
54
+ "type": "array",
55
+ "items": {
56
+ "type": "string"
57
+ },
58
+ "description": "Platform packages to load",
59
+ "default": [
60
+ "@sockethub/platform-caldav",
61
+ "@sockethub/platform-dummy",
62
+ "@sockethub/platform-feeds",
63
+ "@sockethub/platform-irc",
64
+ "@sockethub/platform-metadata",
65
+ "@sockethub/platform-xmpp"
66
+ ]
67
+ },
68
+ "packageConfig": {
69
+ "type": "object",
70
+ "default": {},
71
+ "description": "Per-platform config keyed by package name, validated against each platform's config schema and forwarded to its child process",
72
+ "properties": {
73
+ "@sockethub/platform-caldav": {
74
+ "type": "object",
75
+ "additionalProperties": false,
76
+ "properties": {
77
+ "connectTimeoutMs": {
78
+ "type": "integer",
79
+ "minimum": 1
80
+ },
81
+ "allowPrivateAddresses": {
82
+ "type": "boolean"
83
+ },
84
+ "allowInsecureHttp": {
85
+ "type": "boolean"
86
+ },
87
+ "concurrency": {
88
+ "type": "integer",
89
+ "minimum": 1
90
+ }
91
+ }
92
+ },
93
+ "@sockethub/platform-dummy": {
94
+ "type": "object",
95
+ "additionalProperties": false,
96
+ "properties": {
97
+ "greeting": {
98
+ "type": "string",
99
+ "default": "Hello"
100
+ }
101
+ }
102
+ },
103
+ "@sockethub/platform-feeds": {
104
+ "type": "object",
105
+ "additionalProperties": false,
106
+ "properties": {
107
+ "connectTimeoutMs": {
108
+ "type": "number"
109
+ },
110
+ "allowPrivateAddresses": {
111
+ "type": "boolean"
112
+ },
113
+ "concurrency": {
114
+ "type": "integer",
115
+ "minimum": 1
116
+ }
117
+ }
118
+ },
119
+ "@sockethub/platform-irc": {
120
+ "type": "object",
121
+ "additionalProperties": false,
122
+ "properties": {
123
+ "connectTimeoutMs": {
124
+ "type": "number"
125
+ }
126
+ }
127
+ },
128
+ "@sockethub/platform-xmpp": {
129
+ "type": "object",
130
+ "additionalProperties": false,
131
+ "properties": {
132
+ "connectTimeoutMs": {
133
+ "type": "number"
134
+ }
135
+ }
136
+ },
137
+ "@sockethub/platform-metadata": {
138
+ "type": "object",
139
+ "additionalProperties": false,
140
+ "properties": {
141
+ "allowPrivateAddresses": {
142
+ "type": "boolean"
143
+ },
144
+ "concurrency": {
145
+ "type": "integer",
146
+ "minimum": 1
147
+ }
148
+ }
149
+ }
150
+ }
151
+ },
152
+ "credentials": {
153
+ "type": "object",
154
+ "additionalProperties": false,
155
+ "properties": {
156
+ "ttlMs": {
157
+ "type": "number",
158
+ "minimum": 0,
159
+ "default": 604800000,
160
+ "description": "Sliding TTL in milliseconds for per-session encrypted credential keys in Redis, refreshed on every save and read. A backstop against keys orphaned by crashes; sessions normally delete their key on disconnect. Size generously — idle sessions do not refresh it. 0 disables expiry."
161
+ }
162
+ }
163
+ },
164
+ "credentialCheck": {
165
+ "type": "object",
166
+ "additionalProperties": false,
167
+ "properties": {
168
+ "reconnectIpSource": {
169
+ "type": "string",
170
+ "enum": [
171
+ "socket",
172
+ "proxy"
173
+ ],
174
+ "default": "socket"
175
+ },
176
+ "proxyHeader": {
177
+ "type": "string",
178
+ "default": "x-forwarded-for"
179
+ }
180
+ }
181
+ },
182
+ "public": {
183
+ "type": "object",
184
+ "additionalProperties": false,
185
+ "properties": {
186
+ "protocol": {
187
+ "type": "string",
188
+ "default": "http"
189
+ },
190
+ "host": {
191
+ "type": "string",
192
+ "default": "localhost"
193
+ },
194
+ "port": {
195
+ "type": "number",
196
+ "default": 10550
197
+ },
198
+ "path": {
199
+ "type": "string",
200
+ "default": "/"
201
+ }
202
+ }
203
+ },
204
+ "rateLimiter": {
205
+ "type": "object",
206
+ "additionalProperties": false,
207
+ "properties": {
208
+ "windowMs": {
209
+ "type": "number",
210
+ "default": 1000
211
+ },
212
+ "maxRequests": {
213
+ "type": "number",
214
+ "default": 100
215
+ },
216
+ "blockDurationMs": {
217
+ "type": "number",
218
+ "default": 5000
219
+ },
220
+ "maxConnectionsPerIp": {
221
+ "type": "number",
222
+ "minimum": 0,
223
+ "default": 0,
224
+ "description": "Maximum concurrent socket connections per client IP. The per-event rate limiter is keyed by socket id, so without a connection cap a client can bypass it by opening more sockets. 0 disables the cap."
225
+ }
226
+ }
227
+ },
228
+ "limits": {
229
+ "type": "object",
230
+ "additionalProperties": false,
231
+ "properties": {
232
+ "maxPlatformInstances": {
233
+ "type": "number",
234
+ "minimum": 0,
235
+ "default": 0,
236
+ "description": "Upper bound on concurrently running platform instances (child processes). Each persistent-platform actor forks its own process, so an unbounded count is a resource exhaustion risk on public instances. 0 disables the cap."
237
+ }
238
+ }
239
+ },
240
+ "redis": {
241
+ "type": "object",
242
+ "additionalProperties": false,
243
+ "properties": {
244
+ "url": {
245
+ "type": "string",
246
+ "default": "redis://127.0.0.1:6379"
247
+ },
248
+ "connectTimeout": {
249
+ "type": "number",
250
+ "default": 10000,
251
+ "description": "Connection timeout in milliseconds"
252
+ },
253
+ "disconnectTimeout": {
254
+ "type": "number",
255
+ "default": 5000,
256
+ "description": "Disconnect timeout in milliseconds"
257
+ },
258
+ "maxRetriesPerRequest": {
259
+ "type": [
260
+ "number",
261
+ "null"
262
+ ],
263
+ "default": null,
264
+ "description": "Maximum number of retries per request (null for BullMQ default)"
265
+ }
266
+ }
267
+ },
268
+ "sentry": {
269
+ "type": "object",
270
+ "additionalProperties": false,
271
+ "properties": {
272
+ "dsn": {
273
+ "type": "string",
274
+ "default": ""
275
+ },
276
+ "traceSampleRate": {
277
+ "type": "number",
278
+ "default": 1
279
+ }
280
+ }
281
+ },
282
+ "sockethub": {
283
+ "type": "object",
284
+ "additionalProperties": false,
285
+ "properties": {
286
+ "port": {
287
+ "type": "number",
288
+ "default": 10550
289
+ },
290
+ "host": {
291
+ "type": "string",
292
+ "default": "localhost"
293
+ },
294
+ "path": {
295
+ "type": "string",
296
+ "default": "/sockethub"
297
+ },
298
+ "cors": {
299
+ "type": "object",
300
+ "additionalProperties": false,
301
+ "properties": {
302
+ "origin": {
303
+ "type": "string",
304
+ "default": "*",
305
+ "description": "Allowed CORS origin(s) for socket.io connections and the HTTP actions endpoint. '*' allows any website to connect visitors' browsers to this instance; public deployments should set an explicit origin or comma-separated list of origins."
306
+ }
307
+ }
308
+ }
309
+ }
310
+ },
311
+ "httpActions": {
312
+ "type": "object",
313
+ "additionalProperties": false,
314
+ "properties": {
315
+ "enabled": {
316
+ "type": "boolean",
317
+ "default": false,
318
+ "description": "Enable the HTTP actions endpoint"
319
+ },
320
+ "path": {
321
+ "type": "string",
322
+ "default": "/sockethub-http"
323
+ },
324
+ "requireRequestId": {
325
+ "type": "boolean",
326
+ "default": true
327
+ },
328
+ "maxMessagesPerRequest": {
329
+ "type": "number",
330
+ "minimum": 1,
331
+ "default": 20
332
+ },
333
+ "maxPayloadBytes": {
334
+ "type": "number",
335
+ "minimum": 1,
336
+ "default": 262144
337
+ },
338
+ "idempotencyTtlMs": {
339
+ "type": "number",
340
+ "minimum": 0,
341
+ "default": 300000
342
+ },
343
+ "requestTimeoutMs": {
344
+ "type": "number",
345
+ "minimum": 0,
346
+ "default": 30000
347
+ },
348
+ "idleTimeoutMs": {
349
+ "type": "number",
350
+ "minimum": 0,
351
+ "default": 15000
352
+ }
353
+ }
354
+ },
355
+ "platformHeartbeat": {
356
+ "type": "object",
357
+ "additionalProperties": false,
358
+ "properties": {
359
+ "intervalMs": {
360
+ "type": "number",
361
+ "default": 5000
362
+ },
363
+ "timeoutMs": {
364
+ "type": "number",
365
+ "default": 15000
366
+ }
367
+ }
368
+ }
369
+ }
370
+ }